Това не е нещо, което "работи случайно", UPX е предназначен да компресира Win32-PE (и много други формати), независимо дали това са изпълними или DLL файлове.
Що се отнася до „Добре ли е?“, добре да, разбира се, че е „ОК“, стига да не нарушавате лиценза на друга страна. Това е много малко вероятно да се случи с нещо, свързано с Qt, но по принцип е възможно. Един може например да използва някои DLL файлове, които имат лицензионна клауза като „разпространение в двоична форма, бла-бла, не е позволено да се променя“. Да речем, нещо като преразпределяем MSVC или DirectX, или патентован API на доставчик на графична карта. Във всеки случай не е грешка да имате това предвид и да проверите лицензите преди да рискувате да ги нарушите.
Формулирайки въпроса си „Добре ли е?“ малко по-различно: „Разумно ли е?“, отговорът е: вероятно не. Няколко мегабайта допълнително на диска обикновено нямат голямо значение. Когато опаковате всичко в инсталатор и потребителят го изтегли през интернет, данните така или иначе се компресират, така че в това отношение е същото.
Въпреки това, компресирането, независимо дали използвате UPX или друг изпълним пакет, или компресирането на файловата система на Windows, има странични ефекти. Той причинява допълнително фрагментиране на адресното пространство, деактивира асинхронните трансфери и губи способността на операционната система да отхвърля страници от DLL от работния набор и да ги презарежда прозрачно от PE изображението при достъп.
Последното изречение означава, че операционната система трябва да направи разпределение във файла на страницата и трябва да записва страници във файла на страницата, когато работният набор на вашия процес бъде преместен, за да освободи място за нещо друго. Друг начин няма. Ами ако потребителят е деактивирал файловете на страницата...
person
Damon
schedule
23.01.2013