Може би някои от вас са чували за UPX, може би – не. За това първо ще обясня какво представлява. UPX е една малка програмка, способна да компресира всякакви изпълними файлове, от повечето познати операционни системи, в това число Linux и Windows, Windows Mobile. Компресията е такава, че не променя по никакъв начин функционалността на съответния файл, а само размера му. Това става чрез т. нар. „прозрачна компресия“ при която файлът се разкомпресира в оперативната памет при стартирането му (за сравнение, „нормалните“, т.е. некомпресирани файлове, просто се копират там). Теоретично, скоростта на зареждане се забавя малко ако файлът е компресиран, но на практика нормален човек не може да направи разлика.

Ако използвате UPX компресия, може да смалите драстично размера на много изпълними файлове (с ПЪТИ). Това е полезно ако ползвате софтуер върху флаш памет, или ако просто искате да спестите някой и друг мегабайт.

Повечето изпълними файлове могат да бъдат компресирани, а тези които не могат – просто не могат 🙂

В някои случаи все пак, се случва файлът да спре да работи след компресията, така че трябва да тествате.

Самата програмка с която компресирате в UPX е конзолна, и за нормалния потребител е малко неудобна. Затова преди време направих интерфейс за нея, чрез който можете да компресирате/декомпресирате един или много файлове, само чрез влачене и пускане. Програмката е само за Windows (към момента) и можете да я свалите от тази връзка. Това е инсталатор, просто му посочете папката в която искате да се инсталира UPXDrop.

Ето как изглежда самата програмка:

В падащият списък са изредени различни нива на компресия.

–best е най-доброто

-1 – най-лошото

-d – ако искате да разкомпресирате вече компресиран с UPX файл.

–force „форсира“ компресията, независимо дали това може да повреди изходния файл (ако има някаква несъвместимост с UPX). Понякога, въпреки някоя несъвместимост, ако използвате –force, изходния файл си работи нормално, така че ще трябва да тествате в случай на проблеми с компресирането.

От личен опит мога да ви кажа, че под Windows съм компресирал доста exe/dll файлове (непринадлежащи на windows), и съм спестил доста мегабайти така.

Една важна забележка: UPX не е подходящ за компресия на DLL файлове, които се използавт едновременно от много приложения. Не е подходящ и за приложения които стартирате с много инстанции (т.е. които може да стартират няколко копия едновременно).
При некомпресирани DLL файлове, когато едно приложение изисква определен DLL, то го зарежда в паметта. След това, ако друго приложение изисква същия DLL, то използва вече заредения в паметта, без да го чете повторно от диска.
При използване на UPX това не е така – DLL файлът се зарежда колкото пъти е необходим, и следователно – заема повече RAM.