├── .gitignore
├── HISTORY.md
├── LICENSE
├── README.md
├── images
├── badges.png
├── batch-cache.png
├── cache-settings.png
├── config-cache-error.png
├── config-cache-warning.png
├── config-cache.png
├── extraction-settings.png
├── icon.ico
├── launch-video.gif
├── logo-v2-title.png
├── logo-v2-title.svg
├── logo-v2.png
├── logo-v2.svg
├── logo.png
├── logo.svg
├── merged-example.png
├── plugin-settings.png
├── select-file-window-bigbox.png
├── select-file-window.png
├── smart-extract-settings.png
└── update-check.png
├── src
├── ArchiveCacheManager.sln
├── ArchiveCacheManager
│ ├── App.config
│ ├── ArchiveCacheManager.csproj
│ ├── Program.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── icon.ico
├── Core
│ ├── CacheManager.cs
│ ├── Config.cs
│ ├── Core.csproj
│ ├── DiskUtils.cs
│ ├── Extractors
│ │ ├── Chdman.cs
│ │ ├── DolphinTool.cs
│ │ ├── ExtractXiso.cs
│ │ ├── Extractor.cs
│ │ ├── Robocopy.cs
│ │ └── Zip.cs
│ ├── FastWildcard.cs
│ ├── GameIndex.cs
│ ├── GameInfo.cs
│ ├── LaunchInfo.cs
│ ├── Logger.cs
│ ├── MatchSettings.cs
│ ├── PathUtils.cs
│ ├── ProcessUtils.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Utils.cs
│ └── packages.config
└── Plugin
│ ├── ArchiveListWindow.Designer.cs
│ ├── ArchiveListWindow.cs
│ ├── ArchiveListWindow.resx
│ ├── ArchiveListWindowBigBox.Designer.cs
│ ├── ArchiveListWindowBigBox.cs
│ ├── ArchiveListWindowBigBox.resx
│ ├── BatchCacheMenuItem.cs
│ ├── BatchCacheWindow.Designer.cs
│ ├── BatchCacheWindow.cs
│ ├── BatchCacheWindow.resx
│ ├── CacheConfigWindow.Designer.cs
│ ├── CacheConfigWindow.cs
│ ├── CacheConfigWindow.resx
│ ├── EmulatorPlatformSelectionWindow.Designer.cs
│ ├── EmulatorPlatformSelectionWindow.cs
│ ├── EmulatorPlatformSelectionWindow.resx
│ ├── FlexibleMessageBox.cs
│ ├── GameBadge.cs
│ ├── GameLaunching.cs
│ ├── GameMenuItem.cs
│ ├── LaunchBoxDataBackup.cs
│ ├── LaunchBoxSettings.cs
│ ├── MessageBoxBigBox.Designer.cs
│ ├── MessageBoxBigBox.cs
│ ├── MessageBoxBigBox.resx
│ ├── NewConfigWindow.Designer.cs
│ ├── NewConfigWindow.cs
│ ├── NewConfigWindow.resx
│ ├── Plugin.csproj
│ ├── PluginUtils.cs
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Resources
│ ├── Badges
│ │ ├── Archive Cached - Neon.png
│ │ ├── Archive Cached - Simple White.png
│ │ └── Archive Cached.png
│ ├── arrow-circle-double.png
│ ├── badge-neon.svg
│ ├── badge-white.svg
│ ├── badge.png
│ ├── badge.svg
│ ├── box--plus.png
│ ├── box-zipper.png
│ ├── broom.png
│ ├── cross-octagon.png
│ ├── cross-script.png
│ ├── exclamation-red.png
│ ├── exclamation-white.png
│ ├── exclamation.png
│ ├── folder-horizontal-open.png
│ ├── gear.png
│ ├── hourglass.png
│ ├── icon.ico
│ ├── icon16x16-play.png
│ ├── icon16x16.png
│ ├── icon32x32.png
│ ├── joystick.png
│ ├── logo.png
│ ├── media-cd.png
│ ├── media-gc.png
│ ├── media-md.png
│ ├── media-n64.png
│ ├── media-ps1.png
│ ├── media-ps2-cd.png
│ ├── media-ps2.png
│ ├── media-psp.png
│ ├── pencil.png
│ ├── plus.png
│ ├── star-blue.png
│ ├── star.png
│ └── tick.png
│ ├── ShellIcon.cs
│ ├── SystemEvents.cs
│ ├── SystemMenuItem.cs
│ ├── Updater.cs
│ ├── UserInterface.cs
│ ├── app.config
│ └── packages.config
└── thirdparty
└── 7-Zip
├── 7z.dll
├── 7z.exe
├── History.txt
├── License.txt
└── readme.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Aa][Rr][Mm]/
27 | [Aa][Rr][Mm]64/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Ll]og/
32 | [Ll]ogs/
33 |
34 | # Visual Studio 2015/2017 cache/options directory
35 | .vs/
36 | # Uncomment if you have tasks that create the project's static files in wwwroot
37 | #wwwroot/
38 |
39 | # Visual Studio 2017 auto generated files
40 | Generated\ Files/
41 |
42 | # MSTest test Results
43 | [Tt]est[Rr]esult*/
44 | [Bb]uild[Ll]og.*
45 |
46 | # NUnit
47 | *.VisualState.xml
48 | TestResult.xml
49 | nunit-*.xml
50 |
51 | # Build Results of an ATL Project
52 | [Dd]ebugPS/
53 | [Rr]eleasePS/
54 | dlldata.c
55 |
56 | # Benchmark Results
57 | BenchmarkDotNet.Artifacts/
58 |
59 | # .NET Core
60 | project.lock.json
61 | project.fragment.lock.json
62 | artifacts/
63 |
64 | # StyleCop
65 | StyleCopReport.xml
66 |
67 | # Files built by Visual Studio
68 | *_i.c
69 | *_p.c
70 | *_h.h
71 | *.ilk
72 | *.meta
73 | *.obj
74 | *.iobj
75 | *.pch
76 | *.pdb
77 | *.ipdb
78 | *.pgc
79 | *.pgd
80 | *.rsp
81 | *.sbr
82 | *.tlb
83 | *.tli
84 | *.tlh
85 | *.tmp
86 | *.tmp_proj
87 | *_wpftmp.csproj
88 | *.log
89 | *.vspscc
90 | *.vssscc
91 | .builds
92 | *.pidb
93 | *.svclog
94 | *.scc
95 |
96 | # Chutzpah Test files
97 | _Chutzpah*
98 |
99 | # Visual C++ cache files
100 | ipch/
101 | *.aps
102 | *.ncb
103 | *.opendb
104 | *.opensdf
105 | *.sdf
106 | *.cachefile
107 | *.VC.db
108 | *.VC.VC.opendb
109 |
110 | # Visual Studio profiler
111 | *.psess
112 | *.vsp
113 | *.vspx
114 | *.sap
115 |
116 | # Visual Studio Trace Files
117 | *.e2e
118 |
119 | # TFS 2012 Local Workspace
120 | $tf/
121 |
122 | # Guidance Automation Toolkit
123 | *.gpState
124 |
125 | # ReSharper is a .NET coding add-in
126 | _ReSharper*/
127 | *.[Rr]e[Ss]harper
128 | *.DotSettings.user
129 |
130 | # TeamCity is a build add-in
131 | _TeamCity*
132 |
133 | # DotCover is a Code Coverage Tool
134 | *.dotCover
135 |
136 | # AxoCover is a Code Coverage Tool
137 | .axoCover/*
138 | !.axoCover/settings.json
139 |
140 | # Visual Studio code coverage results
141 | *.coverage
142 | *.coveragexml
143 |
144 | # NCrunch
145 | _NCrunch_*
146 | .*crunch*.local.xml
147 | nCrunchTemp_*
148 |
149 | # MightyMoose
150 | *.mm.*
151 | AutoTest.Net/
152 |
153 | # Web workbench (sass)
154 | .sass-cache/
155 |
156 | # Installshield output folder
157 | [Ee]xpress/
158 |
159 | # DocProject is a documentation generator add-in
160 | DocProject/buildhelp/
161 | DocProject/Help/*.HxT
162 | DocProject/Help/*.HxC
163 | DocProject/Help/*.hhc
164 | DocProject/Help/*.hhk
165 | DocProject/Help/*.hhp
166 | DocProject/Help/Html2
167 | DocProject/Help/html
168 |
169 | # Click-Once directory
170 | publish/
171 |
172 | # Publish Web Output
173 | *.[Pp]ublish.xml
174 | *.azurePubxml
175 | # Note: Comment the next line if you want to checkin your web deploy settings,
176 | # but database connection strings (with potential passwords) will be unencrypted
177 | *.pubxml
178 | *.publishproj
179 |
180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
181 | # checkin your Azure Web App publish settings, but sensitive information contained
182 | # in these scripts will be unencrypted
183 | PublishScripts/
184 |
185 | # NuGet Packages
186 | *.nupkg
187 | # NuGet Symbol Packages
188 | *.snupkg
189 | # The packages folder can be ignored because of Package Restore
190 | **/[Pp]ackages/*
191 | # except build/, which is used as an MSBuild target.
192 | !**/[Pp]ackages/build/
193 | # Uncomment if necessary however generally it will be regenerated when needed
194 | #!**/[Pp]ackages/repositories.config
195 | # NuGet v3's project.json files produces more ignorable files
196 | *.nuget.props
197 | *.nuget.targets
198 |
199 | # Microsoft Azure Build Output
200 | csx/
201 | *.build.csdef
202 |
203 | # Microsoft Azure Emulator
204 | ecf/
205 | rcf/
206 |
207 | # Windows Store app package directories and files
208 | AppPackages/
209 | BundleArtifacts/
210 | Package.StoreAssociation.xml
211 | _pkginfo.txt
212 | *.appx
213 | *.appxbundle
214 | *.appxupload
215 |
216 | # Visual Studio cache files
217 | # files ending in .cache can be ignored
218 | *.[Cc]ache
219 | # but keep track of directories ending in .cache
220 | !?*.[Cc]ache/
221 |
222 | # Others
223 | ClientBin/
224 | ~$*
225 | *~
226 | *.dbmdl
227 | *.dbproj.schemaview
228 | *.jfm
229 | *.pfx
230 | *.publishsettings
231 | orleans.codegen.cs
232 |
233 | # Including strong name files can present a security risk
234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
235 | #*.snk
236 |
237 | # Since there are multiple workflows, uncomment next line to ignore bower_components
238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
239 | #bower_components/
240 |
241 | # RIA/Silverlight projects
242 | Generated_Code/
243 |
244 | # Backup & report files from converting an old project file
245 | # to a newer Visual Studio version. Backup files are not needed,
246 | # because we have git ;-)
247 | _UpgradeReport_Files/
248 | Backup*/
249 | UpgradeLog*.XML
250 | UpgradeLog*.htm
251 | ServiceFabricBackup/
252 | *.rptproj.bak
253 |
254 | # SQL Server files
255 | *.mdf
256 | *.ldf
257 | *.ndf
258 |
259 | # Business Intelligence projects
260 | *.rdl.data
261 | *.bim.layout
262 | *.bim_*.settings
263 | *.rptproj.rsuser
264 | *- [Bb]ackup.rdl
265 | *- [Bb]ackup ([0-9]).rdl
266 | *- [Bb]ackup ([0-9][0-9]).rdl
267 |
268 | # Microsoft Fakes
269 | FakesAssemblies/
270 |
271 | # GhostDoc plugin setting file
272 | *.GhostDoc.xml
273 |
274 | # Node.js Tools for Visual Studio
275 | .ntvs_analysis.dat
276 | node_modules/
277 |
278 | # Visual Studio 6 build log
279 | *.plg
280 |
281 | # Visual Studio 6 workspace options file
282 | *.opt
283 |
284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
285 | *.vbw
286 |
287 | # Visual Studio LightSwitch build output
288 | **/*.HTMLClient/GeneratedArtifacts
289 | **/*.DesktopClient/GeneratedArtifacts
290 | **/*.DesktopClient/ModelManifest.xml
291 | **/*.Server/GeneratedArtifacts
292 | **/*.Server/ModelManifest.xml
293 | _Pvt_Extensions
294 |
295 | # Paket dependency manager
296 | .paket/paket.exe
297 | paket-files/
298 |
299 | # FAKE - F# Make
300 | .fake/
301 |
302 | # CodeRush personal settings
303 | .cr/personal
304 |
305 | # Python Tools for Visual Studio (PTVS)
306 | __pycache__/
307 | *.pyc
308 |
309 | # Cake - Uncomment if you are using it
310 | # tools/**
311 | # !tools/packages.config
312 |
313 | # Tabs Studio
314 | *.tss
315 |
316 | # Telerik's JustMock configuration file
317 | *.jmconfig
318 |
319 | # BizTalk build output
320 | *.btp.cs
321 | *.btm.cs
322 | *.odx.cs
323 | *.xsd.cs
324 |
325 | # OpenCover UI analysis results
326 | OpenCover/
327 |
328 | # Azure Stream Analytics local run output
329 | ASALocalRun/
330 |
331 | # MSBuild Binary and Structured Log
332 | *.binlog
333 |
334 | # NVidia Nsight GPU debugger configuration file
335 | *.nvuser
336 |
337 | # MFractors (Xamarin productivity tool) working folder
338 | .mfractor/
339 |
340 | # Local History for Visual Studio
341 | .localhistory/
342 |
343 | # BeatPulse healthcheck temp database
344 | healthchecksdb
345 |
346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
347 | MigrationBackup/
348 |
349 | # Ionide (cross platform F# VS Code tools) working folder
350 | .ionide/
351 |
352 |
353 | # Older versions of LaunchBox plugin assembly
354 | Unbroken.LaunchBox.Plugins/
355 |
--------------------------------------------------------------------------------
/HISTORY.md:
--------------------------------------------------------------------------------
1 | # Archive Cache Manager change history
2 | ## v2.16 (2023-02-10)
3 | * New M3U name option - "Disc 1 Filename"
4 | * Always use the filename of the first disc of a multi-disc game for the m3u file, regardless of which disc was launched
5 | * Allows better support for The Bezel Project config files, which use config files based on the ROM name
6 | * New batch caching option to pause on caching errors (default is to skip and continue)
7 | * Minor config window tweaks
8 |
9 | ## v2.15 (2023-01-19)
10 | * New _extract-xiso_ option for Xbox iso conversion
11 | * Full iso files (redump) automatically converted and cached in xiso format
12 | * Supports both zipped and unzipped iso files
13 | * Requires _extract-xiso.exe_ to be added to the `ArchiveCacheManager\Extractors` folder
14 | * Reduced archive cache path lengths, avoiding path too long errors
15 | * Small performance improvement when checking many file priorities
16 | * Smart Extract uses Priority to select file from archive in case where individual ROM file not previously selected
17 | * Fix incorrect path for auto generated M3Us when Launch Path is not Default
18 | * Fix background thread issue when Batch Cache Games window closed while still calculating archive sizes
19 | * Interface tweaks
20 |
21 | ## v2.14 (2022-05-05)
22 | * New right-click menu option - "Batch Cache Games"
23 | * Extract or copy multiple games to the cache, ready to play later
24 | * Bulk cache games from NAS or external storage
25 | * Cached games can be played even if network or external storage disconnected
26 |
27 | ## v2.13 (2022-04-28)
28 | * Fix config window DPI scaling issue
29 | * Config window performance improvements
30 | * Option to skip version during update check
31 |
32 | ## v2.12 (2022-04-21)
33 | * Option to copy non-archive files to cache
34 | * Support for extracting additional formats
35 | * Option to extract chd to cue+bin using chdman
36 | * Option to extract rvz, wia, gcz to iso using DolphinTool
37 | * Option to specify a launch folder for cached games (game platform, game title, or emulator title)
38 | * Useful for managing common RetroArch settings
39 | * Smart Extract option to only extract required files from an archive
40 | * Useful for merged ROM sets
41 | * Emulator selection when launching a file from "Select ROM In Archive" list
42 | * Option to bypass LaunchBox's check the ROM file exists when launching a game
43 | * Allows launching cached game immediately - no waiting for slow disk spin-up or network latency
44 | * Allows playing cached games 'offline' if NAS or cloud storage unavailable
45 | * Config window and UI overhaul
46 | * Minor bug fixes
47 |
48 | ## v2.11 (2022-03-25)
49 | * Multi-disc support and automatic M3U generation
50 | * Extract and cache all discs in a multi-disc game
51 | * Generate and use M3U where supported by emulator / platform
52 | * Custom filename priority for all emulators / platforms
53 | * Option to automatically check for plugin updates
54 | * Updated 7-Zip to version 21.07
55 | * Minor bug fixes
56 |
57 | ## v2.0.10 (2022-03-08)
58 | * Support for LaunchBox 12.8 Extract ROM per platform setting
59 |
60 | ## v2.0.9 (2022-01-31)
61 | * Fix file priority for files in subfolder of archive when not in cache
62 | * Fix launching individual file from archive when not in cache
63 |
64 | ## v2.0.8 (2022-01-13)
65 | * Wildcard based filename matching for file priorities in archive
66 | * Prioritize a file extension, filename, or combination
67 | * Create priorities to automatically play preferred ROM region from GoodMerged archives
68 | * Performance improvements, especially for archives with many hundreds or thousands files
69 | * [BigBox] "Select ROM In Archive" menu option (accepts keyboard input only)
70 |
71 | ## v2.0.7 (2021-03-30)
72 | * Badge to indicate if game is in cache
73 | * Available under Badges -> Enable Archive Cached menu
74 | * Remember previous selection made in "Select Rom In Archive..." right-click menu
75 | * Previous selection automatically applied when game started normally
76 |
77 | ## v2.0.6 (2021-03-26)
78 | * Only remove items from cache path originally extracted by plugin
79 | * Additional checks for invalid cache paths
80 |
81 | ## v2.0.5 (2021-03-25)
82 | * Fix to ensure cache path valid if config file corrupt
83 |
84 | ## v2.0.4 (2021-03-24)
85 | * New feature - 'Keep'
86 | * Keep your favourite games cached and ready to play
87 | * Games marked 'Keep' will not be removed from the cache, and do not contribute to the used cache size
88 | * Configuration window updates
89 | * Cache info summary
90 | * View cached games, toggle the 'Keep' option
91 | * Manually remove games from the cache or clear it entirely
92 | * Events and errors now logged to `LaunchBox\Plugins\ArchiveCacheManager\Logs`
93 | * Minor bug fixes
94 |
95 | ## v2.0.3 (2021-03-17)
96 | * Aborting game startup process (`Esc` on Startup Screen) now terminates extract operation
97 | * Cleanup partially extracted archive from cache on 7z error, or previous startup process abort
98 | * Fix archive list error when selecting individual ROM after a previous game launch failure
99 |
100 | ## v2.0.2 (2021-03-14)
101 | * New feature - Select and play ROM file from archive
102 | * Right-click a game and click "Select ROM In Archive..."
103 | * Currently only supports LaunchBox
104 |
105 | ## v2.0.1 (2021-03-11)
106 | * Support Startup Screen progress bar during initial extraction
107 | * Minor bug fixes
108 |
109 | ## v2.0.0 (2021-03-10)
110 | * Code now open source under LGPL
111 | * Rewritten to use LaunchBox plugin API
112 | * Added configuration window in Tools menu
113 | * Support for LaunchBox & BigBox 10.x, 11.x
114 |
115 | ## v1.5 (2018-04-13)
116 | * Add support for LaunchBox.Next
117 |
118 | ## v1.4 (2018-01-25)
119 | * Add emulator + platform based file priority, for multi-system emulators
120 |
121 | ## v1.3 (2017-12-24)
122 | * Fix LaunchBox overriding Archive Cache Manager during 7-Zip 16.04 update
123 | * Include 7-Zip version 16.04 with installation
124 |
125 | ## v1.2 (2017-11-30)
126 | * Support for loading files direct from cache, bypassing LaunchBox temp folder
127 | * This is now the default behaviour (no hardlinks/junctions)
128 | * Configuration option to force using hardlinks/junctions
129 | * Fix artwork not displaying for game titles containing an apostrophe
130 | * Update to .NET Framework 4.7, inline with LaunchBox
131 |
132 | ## v1.1 (2017-01-25)
133 | * Show clear logo on loading screen, text title if logo unavailable
134 | * Display cover art in loading screen when region specific art not found
135 | * Configuration option to enable/disable verbose logging
136 | * Configuration option to force file copy from cache to LaunchBox temp folder
137 | * Support non-NTFS volumes
138 | * Support cache stored in network location
139 |
140 | ## v1.0 (2017-01-03)
141 | * Initial release
142 |
--------------------------------------------------------------------------------
/images/badges.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/badges.png
--------------------------------------------------------------------------------
/images/batch-cache.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/batch-cache.png
--------------------------------------------------------------------------------
/images/cache-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/cache-settings.png
--------------------------------------------------------------------------------
/images/config-cache-error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/config-cache-error.png
--------------------------------------------------------------------------------
/images/config-cache-warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/config-cache-warning.png
--------------------------------------------------------------------------------
/images/config-cache.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/config-cache.png
--------------------------------------------------------------------------------
/images/extraction-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/extraction-settings.png
--------------------------------------------------------------------------------
/images/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/icon.ico
--------------------------------------------------------------------------------
/images/launch-video.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/launch-video.gif
--------------------------------------------------------------------------------
/images/logo-v2-title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/logo-v2-title.png
--------------------------------------------------------------------------------
/images/logo-v2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/logo-v2.png
--------------------------------------------------------------------------------
/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/logo.png
--------------------------------------------------------------------------------
/images/merged-example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/merged-example.png
--------------------------------------------------------------------------------
/images/plugin-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/plugin-settings.png
--------------------------------------------------------------------------------
/images/select-file-window-bigbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/select-file-window-bigbox.png
--------------------------------------------------------------------------------
/images/select-file-window.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/select-file-window.png
--------------------------------------------------------------------------------
/images/smart-extract-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/smart-extract-settings.png
--------------------------------------------------------------------------------
/images/update-check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fraganator/archive-cache-manager/7d3ac88159db5ff9942365a20d35cc261234f567/images/update-check.png
--------------------------------------------------------------------------------
/src/ArchiveCacheManager.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.31005.135
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Plugin", "Plugin\Plugin.csproj", "{205F6C26-C727-4171-A760-3599AA2D00D2}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core", "Core\Core.csproj", "{035823E0-C80B-49BF-9FAD-9C65EA45E3A9}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArchiveCacheManager", "ArchiveCacheManager\ArchiveCacheManager.csproj", "{687F96D0-DFB8-4A53-BF23-AA02BD7658EC}"
11 | ProjectSection(ProjectDependencies) = postProject
12 | {205F6C26-C727-4171-A760-3599AA2D00D2} = {205F6C26-C727-4171-A760-3599AA2D00D2}
13 | EndProjectSection
14 | EndProject
15 | Global
16 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
17 | Debug|Any CPU = Debug|Any CPU
18 | Release|Any CPU = Release|Any CPU
19 | EndGlobalSection
20 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
21 | {205F6C26-C727-4171-A760-3599AA2D00D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
22 | {205F6C26-C727-4171-A760-3599AA2D00D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
23 | {205F6C26-C727-4171-A760-3599AA2D00D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
24 | {205F6C26-C727-4171-A760-3599AA2D00D2}.Release|Any CPU.Build.0 = Release|Any CPU
25 | {035823E0-C80B-49BF-9FAD-9C65EA45E3A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
26 | {035823E0-C80B-49BF-9FAD-9C65EA45E3A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
27 | {035823E0-C80B-49BF-9FAD-9C65EA45E3A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
28 | {035823E0-C80B-49BF-9FAD-9C65EA45E3A9}.Release|Any CPU.Build.0 = Release|Any CPU
29 | {687F96D0-DFB8-4A53-BF23-AA02BD7658EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
30 | {687F96D0-DFB8-4A53-BF23-AA02BD7658EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
31 | {687F96D0-DFB8-4A53-BF23-AA02BD7658EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
32 | {687F96D0-DFB8-4A53-BF23-AA02BD7658EC}.Release|Any CPU.Build.0 = Release|Any CPU
33 | EndGlobalSection
34 | GlobalSection(SolutionProperties) = preSolution
35 | HideSolutionNode = FALSE
36 | EndGlobalSection
37 | GlobalSection(ExtensibilityGlobals) = postSolution
38 | SolutionGuid = {B5C39C6A-A1EF-4C32-B4F0-0F2BCAE39F8F}
39 | EndGlobalSection
40 | EndGlobal
41 |
--------------------------------------------------------------------------------
/src/ArchiveCacheManager/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/ArchiveCacheManager/ArchiveCacheManager.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {687F96D0-DFB8-4A53-BF23-AA02BD7658EC}
8 | Exe
9 | ArchiveCacheManager
10 | ArchiveCacheManager
11 | v4.7.2
12 | 512
13 | true
14 | true
15 |
16 |
17 | AnyCPU
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | AnyCPU
28 | pdbonly
29 | true
30 | bin\Release\
31 | TRACE
32 | prompt
33 | 4
34 |
35 |
36 | icon.ico
37 |
38 |
39 | OnOutputUpdated
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | {035823e0-c80b-49bf-9fad-9c65ea45e3a9}
61 | Core
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 | mkdir c:\LaunchBox\Plugins\ArchiveCacheManager
70 | copy /Y $(TargetPath) c:\LaunchBox\Plugins\ArchiveCacheManager
71 | mkdir $(SolutionDir)..\release\ArchiveCacheManager
72 | copy /Y $(TargetPath) $(SolutionDir)..\release\ArchiveCacheManager
73 | copy /Y $(SolutionDir)..\README.md $(SolutionDir)..\release\ArchiveCacheManager\readme.txt
74 | copy /Y $(SolutionDir)..\HISTORY.md $(SolutionDir)..\release\ArchiveCacheManager\history.txt
75 | mkdir $(SolutionDir)..\release\ArchiveCacheManager\7-Zip
76 | copy /Y $(SolutionDir)..\thirdparty\7-Zip\* $(SolutionDir)..\release\ArchiveCacheManager\7-Zip
77 | move /Y $(SolutionDir)..\release\ArchiveCacheManager\7-Zip\7z.exe $(SolutionDir)..\release\ArchiveCacheManager\7-Zip\7z.exe.original
78 | move /Y $(SolutionDir)..\release\ArchiveCacheManager\7-Zip\7z.dll $(SolutionDir)..\release\ArchiveCacheManager\7-Zip\7z.dll.original
79 | mkdir $(SolutionDir)..\release\ArchiveCacheManager\Badges
80 | copy /Y $(SolutionDir)Plugin\Resources\Badges $(SolutionDir)..\release\ArchiveCacheManager\Badges
81 | del $(SolutionDir)..\release\*.zip
82 | $(SolutionDir)..\thirdparty\7-Zip\7z.exe a $(SolutionDir)..\release\ArchiveCacheManager.zip $(SolutionDir)..\release\*
83 |
84 |
--------------------------------------------------------------------------------
/src/ArchiveCacheManager/Program.cs:
--------------------------------------------------------------------------------
1 | /* Archive Cache Manager - A LaunchBox plugin which extracts and caches ROM
2 | * archives, letting you play games faster.
3 | *
4 | * Copyright (C) 2021 fraganator
5 | *
6 | * This library is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * This library is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with this library; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
19 | * USA
20 | *
21 | * Links:
22 | * Plugin Homepage - https://forums.launchbox-app.com/files/file/234-archive-cache-manager/
23 | * Forum Support - https://forums.launchbox-app.com/topic/35010-archive-cache-manager/
24 | * GitHub Repository - https://github.com/fraganator/archive-cache-manager
25 | *
26 | * Contact:
27 | * GitHub - https://github.com/fraganator
28 | * LaunchBox Forum - https://forums.launchbox-app.com/profile/69812-fraganator/
29 | */
30 |
31 | /* NOTES ON LAUNCHBOX AND 7-ZIP
32 | *
33 | * When an emulator has the "Extract ROM archives before running option"
34 | * checked and a game is launched, 7z is called twice. The first call extracts
35 | * the archive with the command:
36 | *
37 | * 7z.exe x -o