Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы

Ответить
Настройки темы
Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы

Ветеран


Автор проектов


Сообщения: 1575
Благодарности: 493


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: ya158
Дата: 13-12-2018
Описание: Новая версия Universal Extractor
Конструктор инсталляторов на основе модифицированного SFX модуля 7-Zip'а


Довольно часто пользователи сталкиваются с необходимостью перепаковки дистрибутивов различных программ:
  1. Удаление из дистрибутива ненужных довесков (панелей для браузеров, "улучшателей", "ускорителей", Adware и т.д.).
  2. Удаление ненужных языковых модулей и т.п.
  3. Добавление в дистрибутив плагинов, аддонов и т.п.
  4. Настройку программы "под себя".
  5. Добавление личной информации (например лицензии в реестр или в дополнительный файл)
  6. Объединение в дистрибутиве различных версий программы (например для 32-х и 64-битной платформ) и т.д.
При этом, как правило, такой перепакованный/обновленный дистрибутив запускается в "тихом" режиме автоматически сразу после установки новой операционной системы. Если же дистрибутив запускается не в "тихом" режиме, то обычно не требуется принятие лицензии, выбор устанавливаемых компонентов или выбор местоположения ярлыков. С моей точки зрения единственным полезным выбором является выбор папки установки. Поэтому для подобных дистрибутивов не требуется продвинутый/навороченный интерфейс инсталлятора.

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

Я не хочу устраивать "холливоры" на тему того, какой софт для создания инсталляторов лучше. Я хочу показать, как создавать полноценные инсталляторы на базе Модифицированного SFX модуля 7-Zip'а для установок от Oleg_Sch. Этот модуль в силу своей специфики имеет ряд ограничений, из-за которых нельзя добавить в получаемые инсталляторы некоторые функции (или делается это через одно место), доступные, например, в NSIS. С другой стороны синтаксис конфигурационного файла модуля довольно-таки несложный и этот файл достаточно просто получить из готового инсталлятора для изучения/корректировки. Давно известно, как создавать такие инсталляторы с помощью INF-файлов, но мне хотелось бы отказаться от них и использовать только сам модуль и встроенные в ОС средства (cmd, mshta, реестр).

Итак, описание собственно конструктора:
Перед началом работы необходимо создать папку SourceDir с файлами дистрибутива и положить рядом с ней файл настроек setting.ini и файл name.ico (name - задается в секции [SFX] файла setting.ini) с иконкой для инсталлятора. Файл setting.ini состоит из секций, в которых задаются параметры инсталлятора, пути для копирования/удаления файлов при установке, ключи реестра для добавления/удаления, параметры ярлыков и т.п. Синтаксис секций напоминает синтаксис секций INF-файлов. Все допустимые секцции с возможными параметрами приведены в файле settingSample.ini (папка !!!Tools) с комментариями. Также в папке !!!Tools есть файл Common.ini, в котором находятся настройки общие для всех создаваемых инсталляторов (перзаписываются настройками из файла setting.ini конкретного инсталлятора). Для создания инсталлятора запустите файл makeSFX7z.cmd из папки !!!Tools, указав в качестве параметра путь к папке с дистрибутивом программы. Для примера приведен дистрибутив архиватора 7-zip (положите папку 7z рядом с папкой !!!Tools и запустите файл make.cmd). Если запустить makeSFX7z.cmd из папки !!!Tools без указания пути к дистрибутиву, то будет создан тестовый инсталлятор Test.exe в паке !!!Tools.
При запуске makeSFX7z.cmd с ключом saveconfig или при наличии в папке !!!Tools (для всех) или рядом с файлом setting.ini (для конкретного инсталлятора) файла с имнем saveconfig без расширения скомпилированный файл конфигурации будет сохранен в папке рядом с файлом setting.ini.

!!!Внимание. Если при работе скрипта в консоле отображаются кракозябры. то в свойствах консоли требуется установить шрифт TrueType (Lucida Console, Consolas).

Теперь подробнее о настройках и возможностях конструктора (также см. комментарии в settingSample.ini).
читать дальше »

I. Копирование файлов на жесткий диск. Возможно объединение 32-х и 64-х битных версий программы. Инсталлятор автоматически определит битность ОС и установит соответствующую версию программы.
  1. Секция [SFX].
    • 1.1. Параметр SourceDir задает папку с дистрибутивом программы. В этой папке должны находится все файлы устанавливаемой программы, общие для 32-х и 64-х битных версий. Файлы, предназначенные только для 32-х битной версии программы распалагаются в подпапке SourceDir\!x32, для 64-х битной - в SourceDir\!x64. Если папка SourceDir не будет найдена, то скрипт выдаст сообщение об этом и прервет свою работу.

      1.2. Параметр InstallDir задает папку в %ProgramFiles%, в которую будет установлена программа (может быть изменена после запуска инсталлятора). После копирования файлов в %ProgramFiles% проверяется битность ОС и при наличии подпапок !x32 и !x64, файлы из них копируются с заменой в InstallDir. Поэтому, например, если для дистрибутивы для 32-х и 64-х битной версий отличаются только одним основным исполняемым файлом (задается параметром FileName), то его 32-х битная версия помещается в SourceDir, а 64-х битная - в SourceDir\!x64\. Также по наличию подпапки !x64 определяется есть ли в дистрибутиве 64-х битная версия и на 64-х битных системах предлагается установка в %ProgramW6432%. Если папки !x64 нет, то и на 32-х и на 64-х битных системах предлагается установка в %ProgramFiles%.

      1.3. Параметр Pfx64 дает возможность 32-х битную программу (без подпапки !x64) на 64-х битной системе предлагается установить в подпапку в %ProgramW6432%, а не в %ProgramFiles%.
  2. Секция [CopyDel].
    Предназначена для копирования/удаления файлов и папок. С помощью данной секции возможно копирование и удаления любых файлов и папок на жестком диске, поэтому будьте аккуратны и не укажите для удаления, например, папку %WINDIR%.

II. Операции с реестром. Поскольку используется 32-битный модуль, то на 64-битных системах он обращается к 32-битным версиям reg, mshta и т.д. Поэтому, например, происходит запись в куст реестр HKLM\SOFTWARE\Wow6432Node\ вместо HKLM\SOFTWARE\. При наличии 64-битной версии программы (папка !x64 присутствует) или указан параметр REgx64=1 будут использоваться 64-битные версии reg, mshta (подробнее - в файле makeSFX7z.cmd). Если используется только 32-битная версия программы (папка !x64 отсутствует или REgx64 не равен 1), то при установке программы используются 32-битные версии reg, mshta.
  1. Секция [SFX], параметр REgx64.
    Если этот параметр равен 1, то инсталлятор 32-х битной версии программы (папка !x64 отсутствует) будет вносить изменения на 64-х битной ОС в куст реестр HKLM\SOFTWARE\ вместо HKLM\SOFTWARE\Wow6432Node\
  2. Секции [RegAddInstal] и [RegDelInstal].
    Предназначена для добавления и удаления записей реестра при установке ппрограммы.
  3. Секции [RegAddUninstal] и [RegDelUninstal].
    Предназначены для добавления м удаления записей реестра при деинсталляции программы.
  4. Секция [RegCheck].
    С помощью данной секции возможно сохранение значения записи реестра для последующего восстановления при деинсталляции программы. Может быть использована для восстановления ассоциаций файлов после деинсталляции программы. Принцип работы:
    Перед внесением изменений в реестр инсталлятор сохраняет значение valueOLD записи реестра Parameter по заданному пути HKXX\PATH\. Если при деинсталляции текущее значение записи valueNEW не равняется заданному значению value, то деинсталлятор запись не изменяет. Если valueNEW равняется value, то запись изменяется на valueOLD. Если ДО установки программы запись Parameter отсутствовала, то в случае valueNEW=value запись Parameter удаляется.

III. Регистрация и отмена регистрации элементов управления OLE, например ActiveX и библиотек DLL.
  1. Секция [RegisterOCX].
    Предназначена для регистрации элементов управления OLE. В этой секции указываетмя путь, имя и расширение к библиотеке или злементу ActiveX, кот. необходимо зарегистрировать. При деинсталляции будет произведена отмена регистрации данных файлов.
  2. Секция [UnregisterOCXs].
    Предназначена для отмены регистрации элементов управления OLE при деинсталляции.
    Таким образом при инсталляции регистрируются файлы, указанные только в секции [RegisterOCX]. При деинсталляции регистрация отменяется для файлов, указанных и в секции [RegisterOCX] и в секции [UnregisterOCXs].

IV. Добавление строк
Секция [AddString].
Предназначена для добавления строк в любой текстовый файл. Можно использовать для изменения ini-файлов настроек.

V. Запуск программ.
  1. Секция [RunPreIninstall].
    Предназначена для запуска исполнительных файлов перед установкой программы. Все пути с пробелами должны быть заключены в двойные кавычки.
  2. Секция [RunAfterIninstall].
    Предназначена для запуска исполнительных файлов после установки программы. Все пути с пробелами должны быть заключены в двойные кавычки.
  3. Секция [RunPreUninstall].
    Предназначена для запуска исполнительных файлов перед деинсталляцией программы. Все пути с пробелами должны быть заключены в двойные кавычки.
  4. Секция [RunAfterUninstall].
    Предназначена для запуска исполнительных файлов после деинсталляции программы. Все пути с пробелами должны быть заключены в двойные кавычки.

VI. Ярлыки.
Секции [Shortcut_n]. n=1,2,3...
Предназначены для добавления ярлыков файла (для каждого файла - своя секция со своим номером n) на Рабочий стол, в меню "Пуск -> Программы", в меню кнопки "Пуск", в контекстном меню "Отправить", в папке "Автозагрузка" и в панели быстрого запуска. Также возможно закрепить программу на панели задач (для Vista, 7, 8, 10). Ярлыки возможно создавать как для текущего пользователь, так и для всех пользователей, а также указывать в свойствах ярлыка, что программа должна запускаться от имени администратора. При деинсталяции все ярлыки удаляются.
  1. Если значение параметра Desktop, Programs, Star, SendTo, Autostart, QL равно 1, то ярлыки будут созданы на Рабочем стол, в меню "i]Пуск -> Программы[/i]", в меню кнопки "Пуск", в контекстном меню "Отправить", в папке "Автозагрузка" и в панели быстрого запуска соответственно. Если TaskBar=1, то файл будет закреплен на панели задач (для Vista, 7, 8, 10).
  2. Ярлыки будут созданы для всех пользователей, если AllUser=1, и для текущего при AllUser=0
  3. Ярлык для запуска прграммы от имени Администратора, если Administrator=1.
  4. Остальные параметры (src_file_path, command_line_for_file, folder_for_shortcut, description, shortcut_name, working_directory, icon_file и icon_index) описаны в документации к Модифицированному SFX модулю 7-Zip'а для установок (команда Shortcut). Единственное замечание - src_file_path может быть опущен. В этом случае ярлыки создаются для FileName (см. секцию [SFX] в settingSample.ini).

VII. Деинсталляция.
В отличии от специализированных программ для создания инсталляторов модифицированный модуль самостоятельно не создает записей в реестре и/или специальных файлов для деинсталляции. Обычно для этой цели с помощью команды RunProgram модуля создается раздел с именем программы в кусте реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall с записями, которые задают пункт для деинсталляции программы в апплете "Установка и удаление программ" (или "Программы и компоненты"). С помощью записи UninstallString задается путь и имя файла для деинсталляции программы. Чаще всего для этой цели используется inf-файл или батник (при использовании InnoSetup или NSIS используется специально созданный файл). Я решил отказаться от использования дополнительных файлов и записывать команды для деинсталляции непосредственно в самом реестре. Используются как cmd, так и VBScript (mshta). Поскольку существуют ограничения на длину значения записи UninstallString, длину записи в mshta и т.п., то созаются дополнительные параметры в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<имя программы>. Имя раздела <имя программы> может быть любым. Я принял его равным ProgName (задается в секции [Message]).
  1. Секция [UninstallReg].
    Предназначена для задания информации, которая видна в пункте для деинсталляции программы в апплете "Установка и удаление программ" (или "Программы и компоненты").
  2. Секция [DelUninstal].
    Предназначена для удаления файлов и папок при деинсталляции. Папка InstallDir с файлами программы удаляется автоматически (если параметр NoDelInstallDir в секции [SFX] не равен 1) и здесь её указывать не нужно. Также автоматически проверяется папка, в которой находится InstallDir и, если она пуста, то удаляется (если NoDelInstallDir не равен 1). Например, если программа устанавливается в %ProgramFiles%\Folder1\Folder2, то при удалении автоматически удаляется Folder2 и, если пуста Folder1, то тоже удаляется.
    С помощью данной секции возможно удаления любых файлов и папок на жестком диске, поэтому будьте аккуратны и не укажите для удаления, например, папку %WINDIR%.
  3. Секция [PreUninstalProg].
    Если необходимо перед деинсталляции программы деинсталлировать какую-нибудь другую программу (например, плагин или аддон), то в эту секцию записываются имена разделов в кусте реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall. Команды для удаления берутся из записей UninstallString, а имена программ для диалогов, в которых предупреждается о необходимости удаления - из записей DisplayName указанных в этой секции разделов.

VIII. Добавление языковых и/или платформенных секций.
Как известно файл конфигурации модифицированного SFX модуля 7-Zip'а может после основной секции содержать дополнительные секции (подробнее - в справке к модифицированному SFX модуля 7-Zip'а). Для их добавления служит файл end_of_cfg.txt, который ищется в той же папке, что и setting.ini. Файл end_of_cfg.txt должен соответствовать требованиям, предъявляемым к файлу конфигурации модифицированного SFX модуля 7-Zip'а.

IX. Проверки перед распаковкой дистрибутива.
  1. Проверка на повторный запуск инсталлятора. Если в процессе установки инсталлятор будет запущен повторно, то вторая копия процесса установки автоматически завершится с выводом окна пердупреждения.
  2. Проверка на предыдущую неудачную установку. Если в процессе установки обнаружена предыдущая неудачная установка (определяется по наличию файла %%T\UnCom.~), то она будет удалена (инструкции для корректной деинсталляции берутся из %%T\UnCom.~) и работа инсталлятора прекращена.
  3. Секция [Check] - предназначена для проверки версии Windows, на которой запускается инсталлятор, а также наличия или отсутствия
    • файлов
    • записей реестра
    • определенной версии Microsoft .NET Framework
    • определенной версии Microsoft Visual C++ Redistributable Package
    Формат записей в этой секции приведен в settingSample.ini. Также см. параметры NoDotNet, AlreadyDotNet, NeedRegistry, AlreadyRegistry, NeedFile и AlreadyFile в секции [Message].


В этой же теме я также буду выкладывать конструкторы для создания некоторых программ. Список:
  1. 7-zip 16.04
  2. Ashampoo Uninstaller 4.3.0.0
  3. BSplayer Pro 2.7.0.1080
  4. CCleaner 5.29.0.6033
  5. ConsoleZ 1.15.0.15253
  6. FileMenu Tools 6.8.0.0
  7. HashTab 5.2.0.0
  8. ImgBurn 2.5.8.0
  9. IZArc 4.3.0.3856
  10. Paint.NET 4.0.19, Paint.NET 3.5.11 и плагины
  11. Regshot 2.0.1.70
  12. Resource Hacker 4.5.30.180
  13. Scanner 2.13
  14. Universal Extractor 1.6.1.1035 (13/12/2018) mod by koros aka ya158
  15. Набор утилит для удаления SpyWare, AdvWare, руткитов, троянов, червей и т.п. v1.2

История версий

Скачать ЯДиск Скачать GoogleDrive

-------
Объективная реальность есть бред, вызванный недостатком алкоголя в крови.
Оптимизм есть недостаток информации.
Хочу быть змеёй, чтобы на работу лёжа ходить.
Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы


Отправлено: 16:38, 06-02-2015

 

Ветеран


Автор проектов


Сообщения: 1575
Благодарности: 493

Профиль | Отправить PM | Цитировать


Новая версия Universal Extractor
1.6.1.1033 (05/12/2018)
  1. Исправлена ошибка (при распаковке InstallShield CAB (Data1.hdr, Data1.cab, Data2.cab), путь к которым содержит юникодные символы, во временную папку копировался только один файл, а не три).
  2. unzip заменен на версию 6.10c23 с исправлением уязвимостей CVE-2018-1000031, CVE-2018-1000032, CVE-2018-1000033, CVE-2018-1000034, CVE-2018-1000035 (спасибо rinat84 и Pasha_ZZZ).
  3. Обновлен Less MSIerables (lessmsi) до версии 1.6.3.
  4. Исправлена ошибка (неправильно создавался лог при неудачной распаковке).
  5. Изменен алгоритм распаковки с помощью unzip/7zip.

-------
Объективная реальность есть бред, вызванный недостатком алкоголя в крови.
Оптимизм есть недостаток информации.
Хочу быть змеёй, чтобы на работу лёжа ходить.
Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:12, 05-12-2018 | #181



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Автор проектов


Сообщения: 1575
Благодарности: 493

Профиль | Отправить PM | Цитировать


Новая версия Universal Extractor
1.6.1.1034 (11/12/2018)
  1. При анализе EXE-файла теперь идет проверка на WiX installer по фразе 'WiX ' вместо 'WiX installer'.
  2. Обновлен Detect-It-Easy до версии 2.01 (спасибо hors за создание консольной версии без внешних зависимостей).
  3. Обновлен Exeinfo PE до версии v0.0.5.1 - 2018 ( 1020 + 68 signatures x64).
  4. Обновлены плагины для 7z: Modern7z до версии 1.8.4, eDecoder до версии 1.20.2.
  5. Изменена структура меню GUI.

-------
Объективная реальность есть бред, вызванный недостатком алкоголя в крови.
Оптимизм есть недостаток информации.
Хочу быть змеёй, чтобы на работу лёжа ходить.
Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:12, 11-12-2018 | #182


Ветеран


Автор проектов


Сообщения: 1575
Благодарности: 493

Профиль | Отправить PM | Цитировать


Новая версия Universal Extractor
1.6.1.1035 (13/12/2018)
  1. Исправлена ошибка (элементы в окне "Настройки" налезали друг на друга) (спасибо AlexM2222).
  2. Изменено: при выборе опции "Поверх всех окон" этот атрибут добавляется всем окнам (msgbox()).
  3. Обновлен Windows Installer XML Toolset Decompiler до версии 3.11.2318.
  4. Обновлен Enigma Virtual Box до версии 0.54а

-------
Объективная реальность есть бред, вызванный недостатком алкоголя в крови.
Оптимизм есть недостаток информации.
Хочу быть змеёй, чтобы на работу лёжа ходить.
Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:54, 13-12-2018 | #183


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Собрал инсталлятор. При запуске выдает ошибку
7zip:Внутренняя ошибка. Код ошибки 100.
Подскажите что я сделал не так?

Отправлено: 02:36, 25-03-2021 | #184


Ветеран


Автор проектов


Сообщения: 1575
Благодарности: 493

Профиль | Отправить PM | Цитировать


Game Men,
Давайте ваши файлы - будем разбираться.

-------
Объективная реальность есть бред, вызванный недостатком алкоголя в крови.
Оптимизм есть недостаток информации.
Хочу быть змеёй, чтобы на работу лёжа ходить.
Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы


Отправлено: 06:36, 25-03-2021 | #185


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


А какая версия 7zip нужна для запаковки ? Я так понял 9.20. или любая. Да и какие именно файлы вам надо?

Отправлено: 09:23, 25-03-2021 | #186


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Да мне кажется что у меня не та версия 7zip. Пробовал другой файл запакованный в 7zip с моими файлами то собрался.

Отправлено: 09:46, 25-03-2021 | #187


Ветеран


Автор проектов


Сообщения: 1575
Благодарности: 493

Профиль | Отправить PM | Цитировать


Game Men,
Цитата Game Men:
А какая версия 7zip нужна для запаковки ? Я так понял 9.20. или любая »
В комплекте идут те файлы 7zip, которые нужны для конструктора. Модифицированного SFX модуля 7-Zip'а для установок от Oleg_Sch был написан довольно давно и как он себя поведет с новыми версиями 7zip я не знаю.
Цитата Game Men:
Да и какие именно файлы вам надо? »
Я имел в виду то, из чего вы пытаетесь собрать инсталлятор и файл настройки.

-------
Объективная реальность есть бред, вызванный недостатком алкоголя в крови.
Оптимизм есть недостаток информации.
Хочу быть змеёй, чтобы на работу лёжа ходить.
Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы


Отправлено: 22:11, 26-03-2021 | #188



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Модифицированный SFX модуль 7-Zip'а для установок Oleg_Sch Автоматическая установка Windows 2000/XP/2003 2011 20-03-2024 11:07
GUI для модифицированного 7-Zip SFX модуля для установок hobbeat Автоматическая установка Windows 2000/XP/2003 259 09-10-2016 07:01
Project SFX Config - GUI для создания конфигураций модифицированного модуля 7zip Medic84 Автоматическая установка Windows 2000/XP/2003 79 14-04-2014 22:04
CMD/BAT - [решено] 7-zip. Командная строка. Как изменить иконку sfx архива? Centrinar Скриптовые языки администрирования Windows 1 01-08-2011 03:53
Создание silent 7-zip sfx mitiya Автоматическая установка Windows 2000/XP/2003 17 01-03-2011 22:14




 
Переход