» Настройка сжатия данных

Официальный сайт SFX Creator
Группа SFX Creator [В]Контакте

Не сжимать данные

При выборе данной опции, SFX Creator не будет сжимать данные, полезно, если вы создаёте проект из уже готовых файловых архивов, т.к. скорость компиляции при отключении сжатия значительно выше
Примечание. SFX Creator не сможет создать выходной файл, если суммарный размер всех файлов в проекте равно или превышает 2 Гб


Сжатие в тело SFX архива

Тип сжатия LZMA недоступен в незарегистрированной версии SFX Creator
Примечание.
SFX Creator не может упаковать файлы в тело SFX архива, суммарный размер которых равен или превышает 2 Гб
В данном диалоге коротко описано о характеристиках доступных компрессоров, поэтому описывать их разницу я не буду.

SOLID архив
Если галочка отмечена, то будет создан "непрерывный" архив, в большинстве случаев помогает уменьшить размер выходного файла

Размер словаря в Мб
Опция доступна только для LZMA компрессора, сколько памяти компрессор будет использовать при сжатии/распаковке данных. Значение по-умолчанию 8 Мб
В некоторых случаях использование завышенных значений словаря может уменьшить размер выходного файла.
Внимание! При завышении значения данной настройки при компиляции проекта вы можете получить одно из двух:
1. Сообщение об ошибке компиляции (в зависимости от доступной у вас памяти)
2. SFX архив без добавленных файлов

Выбор оптимальных настроек сжатия

При создании примера проекта Перепаковка драйверов NVIDIA я решил сделать небольшие наблюдения при разных настройках LZMA сжатия, использования настройки размера словаря и выбора типа архива (SOLID-архив и обычный). Использовалась ОС Windows 7 32-bit, 3,5 Гб RAM
Примечание. Возможно, данные показатели эффективности сжатия будут отличаться в зависимости от форматов файлов, которые вы добавляете в проект.
Исходные файлы: 345 Мб, 431 файл

Сравниваемые данные SOLID-архив Обычный архив Размер словаря
Потребовалось памяти для компиляции ~100 Мб ~100 Мб 8 (по-умолч.)
Потребовалось памяти для распаковки ~10 Мб до 30 Мб 8 (по-умолч.)
Размер выходного файла 200 Мб 209 Мб 8 (по-умолч.)
Потребовалось памяти для компиляции ~650 Мб ~630 Мб 60
Потребовалось памяти для распаковки ~65 Мб до 30 Мб 60
Размер выходного файла 192 Мб 209 Мб 60
Потребовалось памяти для компиляции ~1 100 Мб ~760 Мб 100
Потребовалось памяти для распаковки ~100 Мб до 30 Мб 100
Размер выходного файла 191 Мб 209 Мб 100
Потребовалось памяти для компиляции ~1 500 Мб ~890 Мб 130
Потребовалось памяти для распаковки ~135 Мб до 30 Мб 130
Размер выходного файла 191 Мб 209 Мб 130
Ошибка создания архива без файлов ошибка компил. 135 и выше

Вывод

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

При создании обычного архива
Любой размер словаря при обычном сжатии никак не влияет на размер выходного файла

Размер словаря
Если смотреть на данные таблицы, то если даже вы указываете самый большой возможный размер словаря, это никак не повляет на размер выходного архива при обычном сжатии, т.к. даже при стандартном размере словаря в 8 Мб но при SOLID-сжатии вы получаете более меньший размер, чем при упаковке обычным архивом (без SOLID-сжатия) но с самой высокой настройкой словаря.


О сжатии данных с помощью 7-ZIP

SFX Creator с версии 2.5 научился создавать архивы с данными размером более 2 Гб, а также научился создавать многотомные архивы.
Всё это достигается путём использования внешнего архиватора 7-Zip
7-Zip - это архиватор файлов с высокой степенью сжатия с открытым кодом. Большая часть исходного кода находится под лицензией GNU LGPL

Внимание! Перед началом рассмотрения опций данной возможности, хотел бы сказать следующее важное замечание:
При добавлении директории в проект, 7-Zip будет распаковывать именно всю папку целиком с её именем, т.е. если вы добавите в проект директорию C:\TEST\1 и укажите директорию назначения, к примеру, $WinDir, то  в папке C:\Windows будет создана папка 1, и в ней будут находиться все файлы.

Примечание. При использовании данной возможности, архивы с данными будут создаваться в директории data в той же папке, где вы создаёте сам SFX архив.
Например, вы сохраняете выходной файл в следующий путь: C:\TEST\MyInstall.exe
В каталоге TEST будет создана папка data, в которой будут находиться архив(ы) с файлами вашего проекта
Внимание! Директория data будет автоматически удаляться перед компиляцией проекта!

Приступим к рассмотрению данной возможности...


Настройка сжатия данных с помощью 7-Zip

Установить случайный пароль на архив
SFX Creator сгенерирует случайный пароль на все архивы, что не позволит распаковать файлы вашего проекта рядовым пользователям

Проверять MD5 сумму архивов
Если опция отмечена, то при компиляции проекта SFX Creator подсчитает контрольные суммы всех созданных 7-zip архивов и запомнит их
При запуске вашего SFX архива, каждый 7-zip архив будет проверен на целостность путём подсчета контрольных сумм, что позволит избежать запуска процесса распаковки с повреждёнными архивами

Метод сжатия данных
Выберите необходимый уровень сжатия данных


Многотомный архив

Включить разбиение на тома
Опция включает/отключает разбиение 7-zip архивов на тома

Размер тома
Укажите, при достижении какого размера архива, 7-Zip будет создавать новый архив с данными

Вы также можете указать еденицу измерения, в которой вы хотите видеть размеры томов, для этого справа от поля "Размер тома" в выпадающем списке укажите еденицу измерения данных

Внимание! При запуске созданного SFX архива все архивы должны находиться в указанной папке, иначе пользователь получит сообщение об ошибке



Расположение/имя архива

Внимание! Данные настройки помечены как [ ! ] экспертные, неправильное указание данных в этой группе элементов может повлечь за собой удаление ваших файлов!
Внимание! На основе введёных данных при сборке проекта будут удаляться файлы по маске в выходной директории SFX архива при сборке проекта!

Путь к архиву
Путь к расположению архива (или томов) с вашими файлами, путь указывается относительно директории, которая указана в качестве пути "выходного файла" в главном окне SFX Creator
Путь в этом поле должен начинаться с символа обратного слеша \  - это означает директорию, где расположен ваш SFX архив, который пользователь будет запускать
Путь в этом поле должен заканчиваться символом обратного слеша \
Если вы хотите расположить 7-zip архив с файлами в директории с EXE файлом вашего SFX архива - укажите только один символ обратного слеша \
Пример. Если вы хотите расположить файлы в подпапке data относительно файла SFX архива, укажите в данное поле:
\data\

Имя архива
Укажите, какое имя будет у 7-zip архива (томов)

Третье поле в группе
Расширение файла архива (томов)

На основе введёных данных будут удаляться файлы по маске, например, при указании в поля следующих данных:
\
test
exe

Будет создан 7-zip архив с именем test.exe в директории с вашим файлом SFX архива, перед сборкой проекта в выходной директории будут удалены все файлы, подходящие по маске test.exe*
Будьте внимательны!
Для экспериментов рекомендую указывать выходную директорию, в которой нет никаких файлов, кроме будущего выходного файла вашего проекта.