iridiumio / compactgui Goto Github PK
View Code? Open in Web Editor NEWTransparently compress active games and programs using Windows 10/11 APIs
License: GNU General Public License v3.0
Transparently compress active games and programs using Windows 10/11 APIs
License: GNU General Public License v3.0
Dying Light | XPress16K | 16 GB | 12 GB | 75%
Of 3234 files within 67 directories
873 are compressed and 2361 are not compressed.
16 399 978 621 total bytes of data are stored in 4 924 101 807 bytes.
The compression ratio is 3,3 to 1.
XPRESS16K
Total War WARHAMMER | XPress16K | 34.7 GB | 21.7 GB | 62.5%
Hey,
I just ran the tool on a folder and got this. Doesn't do anything for about an hour now.
I think I found the problem: In the file "Compact.vb" the process "MyProcess_OuputDataReceived" checks for english output lines. This obviously fails when compact.exe returns german lines, which may pose an issue on other languages, too. Not sure how localized most of them are.
The proper translations seem to be:
"total bytes of data are stored in" -> "Datenbytes insgesamt werden in %i Bytes gespeichert"
"The compression ratio is" -> "Das Komprimierungsverh„ltnis ist" #note: "„" should be "ä"
"directories were uncompressed" -> "waren nicht komprimiert" #probably a bad translation on MS' part here, if this is supposed to indicate the number of files that have just been uncompressed. German means "files that were not compressed"
" Compressing files in" -> "Komprimieren der Dateien in"
"[OK]" -> "[OK]" #no change here
" are not compressed." -> "nicht komprimiert." #this will also trigger on the entry for "directories were uncompressed". Maybe move that entry into a nested if-condition here?
" Listing " ->" Auflisten von "
I'll try to fix this on my system and create a branch if I get it working. I haven't looked through the whole source to see if there's more checks for localized output. Also, I never worked with VB before >_>
To ultimately fix this and make it available on more languages, the string should probably be put into a database (XML or JSON?) and be loaded upon start of the program.
Getting the System Locale should be possible, although I've only done this in C# before and don't know how to do this in VB. Otherwise you can probably hack it together by checking the copyright notice in the output.
SHENZHEN.IO | XPRESS16K | 372 MB | 340 MB | 91% |
Dragon Age Ultimate Edition | XPress16K | 24.9 GB | 15 .4 GB | 61.8%
Elite Dangerous | XPress16K | 26 GB | 26 GB | 100%
This did compress (226 MB saved) but very badly. Also took 5 hours on a fast machine with an SSD. I think the problem is the game has a lot of very small files.
Black Desert Online | XPress16K | 52GB | 52GB | 99.2%
Most files are in .paz format and compress algorythm ignores them. It compressed most of the normal files though ,saving 426MB by doing that.
I've probably used a signed integer somewhere I shouldn't :/
System.OverflowException: Arithmetic operation resulted in an overflow.
at CompactGUI.Compact.CalculateSaving() in \Compact.vb:line 465
at CompactGUI.Compact.ProgressTimer_Tick(Object sender, EventArgs e) in \Compact.vb:line 179
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
1938 files within 177 directories were compressed.
13,295,326,334 total bytes of data are stored in 12,246,654,104 bytes.
The compression ratio is 1.1 to 1.
Firewatch | XPress16K | 3.5 GB | 1.9 GB | 54%
Are you able to implement a feature to estimate the amount of space gained between different levels of compression? That's mainly to understand whether it's worth doing it or not.
Obliviously it has to be quicker than running the normal compression with +-5% inaccuracy so we can have an idea of compression gained on a big folder.
I may be wrong but so far I've noticed speed mainly depends on the file size. The bigger the file, the longer it takes to compress. So I assume the analysis would be identical.
Warframe | XPress16K | 23 GB | 9 GB | 39%
Context Menu:
Right click on a folder, select compact GUI and it opens the application with the folder already set
Of 1875 files within 33 directories
1195 are compressed and 680 are not compressed.
67 974 622 890 total bytes of data are stored in 43 091 183 806 bytes.
The compression ratio is 1,6 to 1.
XPRESS16K
I would suggest that as soon as we click on uncompress, the button disappears, like compression. Else because the button remains visible, I tend to click twice on it because it's stuck at 0%. Hope that makes sense.
South Park - The Stick of Truth | XPress16K | 5.44 GB | 4.36 GB | 80.1%
Age of Empires III | XPress16K | 4.1 GB | 3.1 GB | 76%
The Witcher Enhanced Edition | XPress16K | 15.6 GB | 11.6 GB | 74.4%
Of 1272 files within 37 directories
281 are compressed and 991 are not compressed.
2 783 967 878 total bytes of data are stored in 2 285 734 185 bytes.
The compression ratio is 1,2 to 1.
XPRESS16K
If possible update the Adobe Photoshop CC 2017 graph adding the graphs for XPRESS8K and LZX.
Currently I have compressed few games and I want to submit the result to the wiki so can you open the wiki or open a place to submit result?
Payday 2 | XPress16K | 41 GB | 27 GB | 66%
Assassins Creed Rogue | XPress16K | 12 GB | 10 GB | 83%
Microsoft FSX | XPress16K | 13GB | 9GB | 69%
I think it would be better to use Google Sheets instead of the current Wiki table method, as posting all additions as their own issues isn't very efficient, and you are also relying heavily on users understanding how to format the tables properly themselves, and them not adding duplicate entries. Google Sheets would allow you to use formulas for size reduction calculations (both MB and %) to simplify what users need to add. It would also make sorting easier, especially for removing duplicate entries. You could either open it to fully public editing, or maybe add a second sheet for pending entries (so nobody can modify the proper entries). Rough example, using my library: https://i.imgur.com/mBBGFBd.png
I have a case where the original size/compressed size value was incorrect after compression and I wonder whether it's because it didn't compress all files or whether it stopped.
Looking at detail report, it says
2126 files within 218 directories were compressed.
9 319 215 229 total bytes of data are stored in 8 624 949 615 bytes.
The compression ratio is 1,1 to 1.
The actual folder is
32 359 424 574 bytes
10288 files and 801 directories.
So did it skipped files? If yes, it should mentioned in the report.
If not, there might be an issue... Thanks !
Microsoft Visual Studio 2017 | XPress16K | 3.49 GB | 1.48 GB | 42%
Tom Clancy's Rainbow Six Siege | XPress16K | 37GB | 25GB | 67%
Fallout 4 | XPress16K | 26 GB | 25 GB | 96%
Assassins Creed IV: Black Flag | Xpress16K | 22 | 19 | 87%
507 files within 18 directories were compressed.
5ÿ492ÿ359ÿ383 total bytes of data are stored in 1ÿ695ÿ713ÿ666 bytes.
The compression ratio is 3,2 to 1.
Error message at the end of each compression. Clicking OK doesn't seem to be doing anything. Compression seems to be working properly, just a .net arror.
> ************** Exception Text **************
> System.InvalidCastException: Conversion from string "5ÿ492ÿ359ÿ383" to type 'Long' is not valid. ---> System.FormatException: Input string was not in a correct format.
> at Microsoft.VisualBasic.CompilerServices.Conversions.ParseDecimal(String Value, NumberFormatInfo NumberFormat)
> at Microsoft.VisualBasic.CompilerServices.Conversions.ToLong(String Value)
> --- End of inner exception stack trace ---
> at Microsoft.VisualBasic.CompilerServices.Conversions.ToLong(String Value)
> at CompactGUI.Compact.CalculateSaving()
> at CompactGUI.Compact.ProgressTimer_Tick(Object sender, EventArgs e)
> at System.Windows.Forms.Timer.OnTick(EventArgs e)
> at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
> at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
> ----------------------------------------
Ran the compression a second time and same error but different string:
System.InvalidCastException: Conversion from string "723ÿ330" to type 'Long' is not valid. ---> System.FormatException: Input string was not in a correct format.
Ps: this tool is amazing ! Thanks a lot.
Would be great to have a decompression feature when selecting a compressed folder.
Project Cars | XPress16K | 21.6 GB | 21.1 GB | 97.7%
Cuphead | XPress16K | 11GB | 2.929GB | 27%
Amazing results.
Tried to uncompress the files using the command line: compact /u /s "folder" and it did not work for files compacted with compact GUI ? Also no ability to uncompress files using Compact GUI.
Make the detailed progress show the result in wiki friendly format so we can just copy and paste it :) Also would be good to include the compression used.
Dragon Age Origins Ultimate Edition|XPress16K|24GB|14GB|9GB
Divinity Original Sin 2 | XPress16K | 27GB | 23GB | 83%
Of 169 files within 26 directories
107 are compressed and 62 are not compressed.
14 639 597 419 total bytes of data are stored in 13 058 739 218 bytes.
The compression ratio is 1,1 to 1.
XPRESS16K
Of 2467 files within 345 directories
714 are compressed and 1753 are not compressed.
20 771 506 189 total bytes of data are stored in 3 009 219 993 bytes.
The compression ratio is 6,9 to 1.
XPRESS16K
Needs more information with cross-platform compatibility for compressed files
Assassins's Creed Syndicate | Xpress16K | 41 GB | 27 GB | 66%
The Walking Dead: Season 2 | XPress16K | 8.2 GB | 4.3 GB | 52%
Just Cause 3 | XPress16K | 60.3 GB | 50.2 GB | 83%
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.