Это не то, что «работает случайно», UPX предназначен для сжатия Win32-PE (и многих других форматов), будь то исполняемые файлы или библиотеки DLL.
Что касается «Это нормально?», ну да, конечно, «ОК», если вы не нарушаете лицензию другой стороны. Это маловероятно, если что-то связано с Qt, но в принципе возможно. Можно, например, использовать некоторые библиотеки DLL, у которых есть пункт лицензии, такой как «распространение в двоичной форме, бла-бла, изменение запрещено». Скажем, что-то вроде распространяемого пакета MSVC или DirectX или проприетарного API какого-либо поставщика видеокарты. В любом случае не будет ошибкой помнить об этом и проверять лицензии перед, рискуя нарушить их.
Формулировка вашего вопроса «Это нормально?» немного отличается: «Это разумно?», ответ: вероятно, нет. Несколько дополнительных мегабайт на диске обычно не имеют большого значения. Когда вы упаковываете все в установщик, а пользователь загружает его через Интернет, данные в любом случае сжимаются, так что в этом отношении то же самое.
Однако сжатие, независимо от того, используете ли вы UPX или другой исполняемый упаковщик, или сжатие файловой системы Windows, имеет побочные эффекты. Это вызывает дополнительную фрагментацию адресного пространства, отключает асинхронную передачу и лишает операционную систему возможности отбрасывать страницы из DLL из рабочего набора и прозрачно перезагружать их из образа PE при доступе.
Это последнее предложение означает, что операционная система должна выделить место в файле подкачки и должна записывать страницы в файл подкачки, когда рабочий набор вашего процесса перемещается, чтобы освободить место для чего-то еще. Другого пути нет. Что делать, если пользователь отключил файлы подкачки ...
person
Damon
schedule
23.01.2013