Что я могу сделать, чтобы уменьшить размер моего исполняемого файла (Delphi)? - PullRequest
22 голосов
/ 08 июля 2010

Я выпускаю один исполняемый файл (.EXE) для настольной программы, использующей Delphi 2009. У меня нет внешних DLL или ресурсов, необходимых для запуска программы.

Я использую два компонента: ELDack от LMD Innovative и TRichView Сергея Ткаченко , которые скомпилированы в мой исполняемый файл.

Когда я собираю свою производственную версию, используя конфигурацию сборки "Release", размер исполняемого файла составляет 13 533 КБ.

До использования Delphi 2009 я использовал Delphi 4. Его исполняемый файл занимал всего 2671 КБ, включая те же два компонента и в основном такой же код, что и моя текущая версия.

Я понимаю, что Delphi 2009 полностью Unicode (что является основной причиной, по которой я обновился), и Unicode может привести к удвоению размера. Но это примерно в 5 раз больше.

Есть ли причина, по которой мой исполняемый файл должен оставаться в 5 раз больше? Или есть несколько простых способов сократить значительный размер исполняемого файла?


Пожалуйста, обратите внимание. Некоторые люди отвечают способами сжатия EXE-файла Delphi. Это не то, что я пытаюсь сделать. Я просто пытаюсь понять, почему так много места используется для удаления ненужного. Если это сделано, сжатие может быть выполнено впоследствии, если это необходимо.

На самом деле не имеет значения, насколько большой или маленький исполняемый файл после его установки. Именно для целей загрузки и для минимизации нагрузки на сервер и времени загрузки вы хотите сжать его. Я предпочитаю использовать Inno Setup и сжимать программу внутри самой процедуры установки. Затем, когда он установлен, он расширяется до полного размера. Это предотвращает возможное обнаружение вируса и устраняет дополнительное время запуска, необходимое для распаковки программы в памяти. Также я подписываю код моего исполняемого файла и моей процедуры установки, и некоторые методы сжатия несовместимы с этим.

Дополнительную информацию о сжатии см. В вопросе StackOverflow: Компрессор Delphi EXE?


ldsandon попросил меня указать, какие именно опции я использую, вот они:

Параметры компиляции http://www.beholdgenealogy.com/img/compilingoptions.jpg

Параметры связывания http://www.beholdgenealogy.com/img/linkingoptions.jpg

Ответы [ 15 ]

1 голос
/ 07 августа 2010

Поскольку D2010 добавляет расширенный RTTI, а RTTI является печально известным фактором увеличения размера исполняемого файла, было бы интересно посмотреть, насколько большие двоичные файлы D2009 для этого приложения.

Если двоичные файлы D2009 значительно меньше, это не Unicode и т. Д. Для моих собственных двоичных файлов увеличение на 30% или около того происходит с D7 до D2009.

0 голосов
/ 31 января 2018

Снимите отметку с отладочной информации в настройках проекта.Если Embarcadero не может предоставить какое-либо решение или объяснение !!!Я думаю, что решение простое: не зацикливайтесь только на Delphi, там много языков программирования, каждый ограничен только воображением программиста.

0 голосов
/ 25 октября 2012

Также вы можете изменить значок. Иконка в новейшей Delphi IDE (т.е. XE3) совместима с Vista / 7 и содержит все размеры (насколько я знаю, до 256x256) Таким образом, вы можете уменьшить размер исполняемого файла с помощью изменения значка.

0 голосов
/ 08 августа 2010

Ранее указывалось, что использование исполняемого компрессора уменьшает размер исполняемого файла, но не установочного пакета. Однако, если вам нужен хороший компрессор, попробуйте ASPack .

@ Tom1952: ASPack работает довольно быстро, всего несколько секунд, чтобы сжать файл

0 голосов
/ 08 июля 2010

Стандартные модули в вашей новой Delphi могут содержать больше строк и констант, таких как строки ошибок, которые включены, даже если вы отключите отладочную информацию. Проверьте ваше использование.

У вас нет особого выбора, кроме того, что вы не используете определенный блок или не удаляете ненужные данные из него.

(Мой опыт с Delphi 5)

...