Создание sfx-установщика из 7zip [База знаний УЦТС]

База знаний УЦТС

Без нас, как без рук!

Инструменты пользователя


applications:sfx

Создание sfx-установщика из 7zip

Задача: упаковать программу в установщик, но при этом оставить возможность интерактивного конфигурирования.

Решение на примере установщика для Zabbix agent под Windows (в Linux достаточно написать shell-скрипт с вызовом команд установки и настройки).

Вручную

Нам понадобится следующий набор файлов: 7zip-архив с файлами программы, как их требуется установить, config.txt с настройками sfx, бинарный распаковщик .sfx (скачиваем тут, нужен LZMA SDK).

Итак, выполняем следующие шаги:

  1. упаковываем архив с файлами программы, получаем файл типа myprogramm.7z;
  2. копируем к архиву файл 7zS2.sfx из папки bin архива LZMA SDK;
  3. прописываем конфигурацию в файл config.txt;
  4. выполняем команду:
copy /b 7zS2.sfx + config.txt + myprogramm.7z install.exe

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

Программно

Процесс сборки и конфигурирования sfx давно автоматизирован и можно использовать готовые утилиты, например 7z SFX Builder.

Данная утилита сразу содержит нужные бинарные распаковщики и позволяет создать конфигурацию простым выбором опций.

В ней процесс будет выглядеть так:

Шаг 1

Указываем интересующие настройки:

Заголовки, тексты:

Диалоги, например, при старте спрашиваем о том стоит ли начать установку:

Какой файл исполнить после распаковки:

Итоговая конфигурация:

Шаг 2

Сохраняем итоговую конфигурацию в файл config.txt рядом с архивом программы myprogramm.7z, который создаем отдельно в архиваторе (хотя билдер позволяет и заархивировать тоже не выходя из программы).

Шаг 3

Настраиваем бинарный распаковщик:

Заполняем поля до файлов сборки и жмем «Создать SFX».

На выходе будет .exe, который можно использовать как установщик.

Файл конфигурации

Для обоих методов нужно ориентироваться в файле конфигурации. Описание всех параметров sfx-конфигурации объемно, но в минимуме нужно знать следующие команды:

;!@Install@!UTF-8!
InstallPath="c:\\"
Title="Установка Zabbix Agent для Windows"
BeginPrompt="Начать установку Zabbix Agent?"
RunProgram="c:\\zabbix\\config_zabbix_agent.bat"
;!@InstallEnd@!

InstallPath=«path_to_extract»

Указывает использовать ОПРЕДЕЛЕННЫЙ путь для распаковки. Если 'InstallPath' отсутствует (имеется в виду отсутствие параметра 'InstallPath' в файле конфигурации, или InstallPath=«», или стирание пути, в соответствующем поле редактирования, после запуска архива), то распаковка происходит во ВРЕМЕННУЮ папку, которая будет УДАЛЕНА после распаковки и выполнения всех команд установки.

Допустимы переменные, обрабатываемые модулем (за исключением T, а также переменных, определенных параметрами 'SetEnvironment', если в них используется T). ОБЯЗАТЕЛЬНО используйте ДВОЙНЫЕ обратные слеши в путях. Например:

InstallPath="C:\\Windows\\system32\\test"
InstallPath="%PROGRAMFILES%\\test"

Допустимы относительные пути. Текущей папкой будет папка программы, из которой произведен запуск SFX архива. Например:

InstallPath="test"

создаст папку с именем «test» в папке программы из которой, произведен запуск SFX архива и распаковка произойдет в нее,

InstallPath="."

произведет распаковку прямо в папку программы, из которой произведен запуск SFX архива, а

InstallPath="%%S"

произведет распаковку прямо в папку, где находится SFX архив.

Если создать папку или распаковать архив на носитель (например, CD-ROM) не удастся - будет выведена ошибка.

Если нужно просто распаковать архив, 'InstallPath' должен присутствовать в файле конфигурации. При этом и 'RunProgram', и 'ExecuteFile' должны отсутствовать, а 'AutoInstall' и 'AutoInstallX' либо отсутствовать, либо присутствовать, но не должны быть запущены ([Shift]-ом или из командной строки). В противном случае будет запущен исполняемый файл из 'RunProgram', 'ExecuteFile', 'AutoInstall' или 'AutoInstallX'. Папка установки с распакованными данными в любом случае НЕ УДАЛЯЕТСЯ.

RunProgram=«command_executing»

Команда для исполнения (множественная). Параметр оригинального SFX модуля архиватора 7-Zip.

Содержит имя исполняемого файла. Дополнительно может содержать: путь к исполняемому файлу (допустимы переменные, обрабатываемые модулем, а также относительные пути), префиксы и ключи для исполняемого файла. Например:

RunProgram="notepad.exe"
RunProgram="C:\\Windows\\system32\\notepad.exe"
RunProgram="fm0:nowait:7z_RU.chm"
RunProgram="\"%%T\\Reader7Rus.msi\" /qn"
RunProgram="hidcon:fm0:\"%%S\\install.cmd\" /Q"

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

Ссылки

applications/sfx.txt · Последнее изменение: 2018/08/20 12:01 — mikheev.m.a