Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Delphi XE2: «Лишние» строки в исполняемом файле

#delphi #exe #delphi_xe2 #executable


Скомпилировал программу в режиме Release. Вся отладочная информация при компиляции
отключена.
Запустил программу, открыл ее свойства в Process Explorer
На закладке Strings вижу, что Process Explorer нашел много строк, которые являются
названиями модулей Delphi, названиями классов, названиями процедур и функций.

Подскажите пожалуйста, как можно удалить из релизного exe-шника все лишние данные???
    


Ответы

Ответ 1



1) В dpr файле между ключевым словом program и разделом uses напишите: program XXX; {$WEAKLINKRTTI ON} // если вам не нужны новые возможности RTTI! {$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])} // если вам не нужны новые возможности RTTI! uses ... 2) В dpr файле после раздела uses можно еще добавить: {$IFNDEF DEBUG} {$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED} // Удаление из exe таблицы релокаций. {$SetPEFlags IMAGE_FILE_DEBUG_STRIPPED} // Удаление из ехе Debug информации {$SetPEFlags IMAGE_FILE_LINE_NUMS_STRIPPED} // Удаление из exe информации о номерах строк {$SetPEFlags IMAGE_FILE_LOCAL_SYMS_STRIPPED} // Удаление local symbols {$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP} //При запуске exe с компакта, флэшки, других извлекаемых устройств, считать exe в свап и запустить оттуда. Полезно, если нужно запустить программу с компакта, а потом попросить вставить другой... {$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP} // Аналогично предыдущей, только для сетевых дисков {$ENDIF} При этом в uses должен присутствовать модуль Windows. Это значительно уменьшит размер исполняемого файла и уберет "лишнюю" информацию из него.

Ответ 2



Сомневаюсь, что эти данные лишние. Delphi при сборке обычно прикомпилирует некоторые "свои" модули к программе. Это можно отключить в настройках компилятора. Но, тогда придётся всегда "таскать" с программой все необходимые компоненты в виде .bpl включая те же кнопки и т.д. (смотря какие модули отключите) Вообще, релиз - это максимум что может дать компилятор. Большей экономии размера можно достичь, например, как уже говорилось, вынеся всё из экзешника ("таская" .bpl) или отказавшись от VCL (FireMonkey) в пользу чистого WinAPI (если это действительно оправдано).

Комментариев нет:

Отправить комментарий