| Уменьшение размера файлов с помощью Resource Tools |
|
|
|
| Автор: Administrator |
| 26.10.2010 22:22 |
|
Инструменты Resource Tools можно использовать для уменьшения размера PE файлов путем удаления неиспользуемых ресурсов, таблицы перемещений и отладочной информации. Обычно для уменьшения размеров файлов используют программы-упаковщики. Инструменты Resource Tools можно использовать перед сжатием файлов упаковщиком для дополнительного уменьшения размера PE файлов. 1. Удаление неиспользуемых ресурсов Delphi/С++BuilderКомпилятор Delphi/С++Builder помещает в PE файлы DFM ресурсы не зависимо от того, используется ли соответствующий класс формы, фрейма или модуля данных. Для этого достаточно включить имя PAS модуля в раздел uses. В результате все ресурсы, указанные в директивах {$R } в подключенном модуле будут помещены компилятором в секцию ресурсов файла. Утилита rt_delete из состава инструментов Resources Tools поддерживает поиск и удаление неиспользуемых DFM ресурсов. Для этого rt_delete необходимо запустить с опцией –u: rt_delete <имя файла> -u
Для поиска неиспользуемых DFM ресурсов rt_delete извлекает из PE файла информацию о реализованных классах и проверяет для каждого DFM ресурса наличие соответствующего класса. Если класс отсутствует, то ресурс считается неиспользуемым. Информация о классах отсутствует в библиотеках ресурсов. Утилита rt_delete распознает библиотеки ресурсов и не производит в них поиск неиспользуемых DFM ресурсов. Возможна ситуация, когда класс формы, фрейма или модуля данных реализован, но в программе не используется. Ресурс, связанный с этим классом, можно удалить с помощью опции –r, указав раздел RT_RCDATA и имя ресурса: rt_delete <имя файла> -r:RT_RCDATA,<имя_ресуроса> Кроме DFM ресурсов компиляторы Delphi/С++Builder помещает в раздел RT_RCDATA ресурсы DVCLAL и PACKAGEINFO. Эти ресурсы используются только в пакетах BPL и могут быть удалены из исполняемых файлов и библиотек DLL. Удалить эти ресурсы можно с помощью опции –u или с помощью опции –r. При использовании опции –u rt_delete проверяет, не является PE файл пакетом BPL. При использовании опции –r эта проверка не выполняется. Список неиспользуемых ресурсов Delphi/C++ Bulder можно вывести без удаления с помощью утилиты rt_check: rt_check <имя файла> -u
2. Удаление различных ресурсовПри сборке PE файла в его секцию ресурсов могут быть помещены ресурсы, которые реально в приложении не используются. Часто это происходит при использовании библиотек и компонентов сторонних разработчиков. rt_delete <имя файла> -r:<тип_ресурса>,<имя_или_индекс_ресурса>,<Язык> Если ресурс или тип ресурса не имеет имени, то необходимо указать его индекс с помощью символа решетки, например: rt_delete <имя файла> -r:RT_BITMAP,#1 Язык можно не указывать. В этом случае код языка ресурса не проверяется и удаляются все языковые варианты ресурса. Для стандартных типов ресурсов можно вместо индекса указывать псевдоним: RT_BITMAP, RT_RCDATA и т.п. Для удаления всех ресурсов заданного типа в опции –r необходимо опустить имя ресурса. Например, удаление всех ресурсов RT_BITMAP: rt_delete <имя файла> -r:RT_BITMAP Если необходимо удалить все ресурсы с заданным именем, но разного типа, необходимо указать имя ресурса, опустив его тип: rt_delete <имя файла> -r:,<имя_или_тип_ресурса> Данные ресурсов иконок и курсоров Win32 хранятся в двух типах ресурсов: RT_ICON, RT_ICON_INFO и RT_CURSOR, RT_CURSOR_GROUP соответственно. Для удаления иконок используется опция –i: rt_delete <имя файла> -i:< индекс_или_имя_иконки> Для удаления курсоров используется опция –c: rt_delete <имя файла> -c:<индекс_или_имя_курсора>
3. Удаление языковых ресурсовЕсли файл содержит варианты ресурсы для нескольких языков, то ресурсы для неиспользуемых языков также можно удалить с помощью утилиты rt_delete. Для этого необходимо указать код языка, опустив тип и имя ресурса. rt_delete <имя файла> -r:,,<язык> Язык можно задать следующими способами: rt_language –list
4. Удаление секции ресурсовУтилита rt_delete удаляет секцию ресурсов автоматически, если в ней не остается ресурсов. Поэтому удалить секцию ресурсов можно, указав опцию –r без параметров, что приведет к удалению всех ресурсов, а затем секции ресурсов: rt_delete <имя файла> -r
5. Удаление таблицы перемещенийТаблица перемещений используется для коррекции адресов в PE файле, если он загружается по адресу, отличающемуся от заданного в файле. Таблица перемещений не используется для обычных PE файлов. Она необходима в сборках .NET и файлах библиотек DLL. rt_delete <имя файла> -reloc
6. Удаление отладочной информацииОтладочная информация, как правило, не используется в финальных версиях файлов. Утилита rt_delete поддерживает удаление отладочной информации Win32 и GDB с помощью опции –dbg: rt_delete <имя файла> -dbg
|
|