Как уменьшить размер скомпилированного исполняемого файла VB6? - PullRequest
1 голос
/ 20 февраля 2012

Моя программа VB6 в настоящее время компилируется в исполняемый файл размером 6 МБ.Я полагаю, что это не является проблемой на современных машинах, но я бы хотел уменьшить ее до мегабайта.

Какой лучший способ сделать это?

Примечание: я ужепопытался сделать "Оптимизировать для небольшого кода" .Это на самом деле увеличило EXE до 16 МБ!

Если решение состоит в том, чтобы разделить некоторый код в отдельную DLL, что было бы лучшим способом сделать это?Должны ли вы оставить все формы в EXE и поместить все классы и модули в DLL?Как я узнаю, что, в частности, делает EXE таким большим?

Ответы [ 6 ]

3 голосов
/ 20 февраля 2012

Скорее всего, ваш код не проблема, ресурсы. Например, у вас, вероятно, есть большое изображение, вставленное в элемент управления picturebox в некоторой форме. Изображение сохраняется в виде несжатого растрового изображения, и именно это влияет на размер EXE-файла. Если это ваша проблема, переместите изображение из приложения во внешний JPG.

Еще один пример - если у вас есть несколько отчетов в приложении, и каждый из них имеет логотип компании в верхнем / нижнем колонтитуле. Централизуйте логотип в другом месте и получите доступ к нему с помощью вспомогательного метода.

0 голосов
/ 07 сентября 2015

Попробуйте этот компрессор: UPX .Это бесплатно и быстро.

0 голосов
/ 18 мая 2015

Вы можете попробовать этот компрессор.

http://www.exetools.com/files/compressors/win/petite22.zip

Защитить и сжать исполняемый файл Vb6.

0 голосов
/ 03 июня 2013

Я должен сказать, что компилируется в P-Code, он должен быть где-то во вкладке Make с дополнительными параметрами.Это уменьшает мой EXE с 700 КБ до 200 КБ (большая разница).Затем сделайте сокращения ресурсов изображения / звука / других ресурсов, как предлагали другие.

Кроме того, проверьте свои значки!Некоторые значки могут получить до 250 КБ на иконку - и если у вас есть несколько форм с несколькими различными значками, то это может сложиться.Типичная современная иконка имеет размер около 50 КБ, но может быть и больше, так как для разных цветов и настроек дисплея хранятся разные разрешения значков, поэтому в одном .ico-файле значков у вас будет 4 изображения значков для высокого графического дисплея, а еще 4для более низкого графического дисплея (256-битный цвет) и еще 4 для 16-битного цвета и т. д., и вы можете получить 16-20 изображений значков в одном .ico-файле только для одной формы.Вы можете удалить изображения значков, такие как статические картинки, в серии изображений gif, их можно удалять кадр за кадром (или в этом случае изображение значка за изображением значка), а также можно удалить параметры цвета 16 и 256 бит.

Теперь, к моей следующей рекомендации, используйте директивы #IF для удаления любых текстов отладки / отчетов, которые есть в вашем приложении, которые никогда не будут видны ни одному из пользователей (строки, которые не нужны конечным пользователям) и /или любые дополнительные функции, которые вы используете для тестирования / отладки или создания отчетов, которые не нужны конечному пользователю ... вы можете удалить все это, используя директиву #IF.Вы можете включить / выключить все ваши директивы #IF (аргументы условной компиляции) за один раз, установив константу Boolean в своем окне свойств, более подробную информацию об этом можно найти в одной из моих публикаций о директивах re #IF и размере файла здесь: Когда я использую аргументы условной компиляции для исключения кода, почему размер файла VB6 EXE не изменяется? (также есть много великолепных сообщений StackOverflow, описывающих, как выполнять условную компиляцию с использованием #IF THEN #ELSE #ENDIF директивы, просто поиск).

Наконец, к моей последней рекомендации, после того, как вы уменьшили размер файла в 3–4 раза по сравнению с размером только с помощью компиляции p-кода, вы можете уменьшить его еще на 3 до4 раза, используя приличный компрессор EXE!Таким образом, просто используя p-код и exe-сжатие, я почти уверен, что вы можете уменьшить размер вашего файла размером 6 МБ до 600 КБ (даже не выполняя никаких других оптимизаций, связанных с директивами #IF, файлами значков и другими изображениями / звуковыми ресурсами).Поскольку компиляция p-кода НЕ связана со сжатием, добавив exe-сжатие, вы можете значительно уменьшить размер файла, не теряя расширение .exe.Используя хороший компрессор, я не говорю об изменении его на файл .zip, файл .rar или что-то еще.После сжатия он все равно будет оставаться в формате .exe, в то же время будучи сжатым, и люди смогут запускать его и использовать его в обычном режиме, не замечая никакой разницы, поэтому, как только ваш exe-файл выполняется, он распаковывается в память и загружается в память все нана лету, и когда вы закрываете приложение, ничего не меняется (размер файла все тот же, маленький и сжатый).PECompact GUI версия является хорошим вариантом, может даже быть доступен на некоторых размерах торрентов, + несколько бесплатных опций для программ, которые делают это.

Подводя итог, сделайте компиляцию p-кода из вашего VB6, чтобы сделать вкладки расширенными/ раздел компиляции, посмотрите на разницу.Затем выполните каждую оптимизацию, перекомпилируйте и запишите разницу в размере файла, и вы получите хорошее представление о том, какое влияние окажет каждое изменение.Повторяйте, пока не перепробуете все варианты.Самые большие отличия будут от компиляции p-кода и сжатия exe.Конечно, директивы resources / icons / # IF следует использовать после параметров p-кода и сжатия, поскольку p-код и сжатие являются самыми простыми и, скорее всего, уменьшат размер вашего файла до 10% от его исходного размера (10 xразница вместе).

Наконец, дайте мне знать, как вы ладите, мне любопытно, как это получается.Кроме того, p-код запускается во всех местах / ПК, которые имеют визуальное базовое время выполнения, так что на самом деле нет никакой выгоды.Говорят, что код p-кода работает немного медленнее, чем обычный скомпилированный код, но разница настолько мала, что его совсем не заметно.Учитывая, что в наши дни компьютеры работают так быстро, разницу в скорости бега заметить еще труднее (гораздо пренебрежимо меньше), чем в момент выхода VB6, поэтому я действительно считаю, что это идеальный бесплатный обед, особенно если важен размер файлаВам.

Дайте мне знать, как это происходит, или если у вас есть дополнительные вопросы.Приветствия.

0 голосов
/ 06 января 2013

6 МБ кажется большим для приложения vb6.Возможно, у вас есть некоторые звуковые или графические ресурсы в приложении

Для изображений ... используйте некоторую утилиту, например Photoshop, чтобы уменьшить размер.Также загрузите изображения во время выполнения.Это должно дать вам меньший exe

0 голосов
/ 20 февраля 2012

Если вы пишете какой-либо новый код, вы действительно должны писать для VB.Net.

Одним из многих преимуществ VB.Net по сравнению с VB6 (кроме очевидного «VB6 больше не поддерживается») является большой набор готового к использованию кода, встроенного в среду выполнения .Net (что приводит к соответственно меньше .exe).

Помимо этого, одна вещь, которая может вызвать большие файлы .exe, - это использование большого количества растровых изображений. Вы могли бы хотеть видеть, является ли это виновником. Если это так, вы можете получить ОГРОМНОЕ уменьшение размера файла, просто загружая изображения во время выполнения.

...