|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы |
|
Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы
|
Ветеран Сообщения: 1575 |
Профиль | Отправить PM | Цитировать
Конструктор инсталляторов на основе модифицированного SFX модуля 7-Zip'а Довольно часто пользователи сталкиваются с необходимостью перепаковки дистрибутивов различных программ:
С другой стороны при выходе новой версии программы требуется пересобирать инсталлятор. Делать это удобнее с помощью запуска скрипта, который будет брать необходимую информацию из файла настроек, созданного заранее. Помимо этого скрипт должен считывать некоторую информацию из файлов программы (например версию программы) и изменять в соответствии с ней получаемый инсталлятор. Я не хочу устраивать "холливоры" на тему того, какой софт для создания инсталляторов лучше. Я хочу показать, как создавать полноценные инсталляторы на базе Модифицированного 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). В этой же теме я также буду выкладывать конструкторы для создания некоторых программ. Список:
История версий Скачать ЯДиск Скачать GoogleDrive |
|
------- Отправлено: 16:38, 06-02-2015 |
Ветеран Сообщения: 1575
|
Профиль | Отправить PM | Цитировать Цитата wolkow70:
Можно мне прислать готовый инсталлятор? В отношении того, что программа нормально не регистрировалась - моя вина. Я не рассчитывал, что в KEY могут быть пробелы. Для исправления этого в make.cmd надо прописать Позже выложу исправленную версию. |
|
------- Отправлено: 18:03, 18-10-2015 | #71 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Цитата ya158:
Из конфа: SetEnvironment="RegUninstall=HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall" SetEnvironment="DisplayName=BSPlayer PRO" RunProgram="hidcon:cmd /c REG ADD \"%RegUninstall%\\BSplayer Pro\" /V \"DisplayName\" /T REG_SZ /D \"BSPlayer PRO\" /F" RunProgram="hidcon:cmd /c REG ADD \"%RegUninstall%\\BSplayer Pro\" /V \"DisplayIcon\" /T REG_SZ /D \"%%T\\bsplayer.exe\" /F" RunProgram="hidcon:cmd /c REG ADD \"%RegUninstall%\\BSplayer Pro\" /V \"DisplayVersion\" /T REG_SZ /D \"v2.6.9.1079\" /F" RunProgram="hidcon:cmd /c REG ADD \"%RegUninstall%\\BSplayer Pro\" /V \"Publisher\" /T REG_SZ /D \"(C) 2000-2015 AB Team\" /F" RunProgram="hidcon:cmd /c REG ADD \"%RegUninstall%\\BSplayer Pro\" /V \"URLInfoAbout\" /T REG_SZ /D \"http://www.bsplayer.com\" /F" RunProgram="hidcon:cmd /c REG ADD \"%RegUninstall%\\BSplayer Pro\" /V \"UninstallString\" /T REG_SZ /D \"mshta vbscript:execute(\\\"If MsgBox(\\\"\\\"Вы действительно хотите удалить %DisplayName% и все компоненты программы?\\\"\\\",36,\\\"\\\"Деинсталляция %DisplayName%\\\"\\\")=6 Then Set w=CreateObject(\\\"\\\"WScript.Shell\\\"\\\"):For each d in split(w.RegRead(\\\"\\\"%RegUninstall%\\BSplayer Pro\\UnCom\\\"\\\"),vbCrLf):r=w.Run(d,0,True):Next:close\\\")\" /f" RunProgram="hidcon:mshta vbscript:execute(\"f=CreateObject(\"\"Scripting.FileSystemObject\"\").GetFile(\"\"UnCom.~\"\").OpenA sTextStream(1).ReadAll():with CreateObject(\"\"ADODB.Stream\"\"):.Type=2:.Mode=3:.Open():.Charset=\"\"windows-1251\"\":.WriteText(f):.Position=0:.Charset=\"\"cp866\"\":S=.ReadText end with:a=CreateObject(\"\"WScript.Shell\"\").RegWrite(\"\"%RegUninstall%\\BSplayer Pro\\UnCom\"\",S,\"\"REG_SZ\"\"):close\")" Delete="%%T\\UnCom.~" Из реестра: [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\BSplayer Pro] "DisplayName"="BSPlayer PRO" "DisplayIcon"="C:\\Program Files (x86)\\Webteh\\BSplayerPro\\bsplayer.exe" "DisplayVersion"="v2.6.9.1079" "Publisher"="(C) 2000-2015 AB Team" "URLInfoAbout"="http://www.bsplayer.com" "UninstallString"="mshta vbscript:execute(\"If MsgBox(\"\"Вы действительно хотите удалить BSPlayer PRO и все компоненты программы?\"\",36,\"\"Деинсталляция BSPlayer PRO\"\")=6 Then Set w=CreateObject(\"\"WScript.Shell\"\"):For each d in split(w.RegRead(\"\"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\BSplayer Pro\\UnCom\"\"),vbCrLf):r=w.Run(d,0,True):Next:close\")" "UnCom"="CMD /C FOR /F %i IN ('\"TASKLIST|FINDSTR /BILC:\"bsplayer.exe\"\"') do TASKKILL /F /T /IM \"%i\" Тут загвоздка скорее всего в Wow6432Node. Надо адаптировать для x64. http://rghost.ru/7Ccs9gfBk |
|
------- Последний раз редактировалось wolkow70, 18-10-2015 в 19:58. Отправлено: 19:45, 18-10-2015 | #72 |
Ветеран Сообщения: 1575
|
Профиль | Отправить PM | Цитировать Проверил присланный файл на виртуалке на 8.1 х64 - все устанавливается и удаляется. Даже регистрируетс, только не видно имя, на которое зарегистрировано (исправление этого описывал выше)
Цитата wolkow70:
Проблема в другом - в реестр, на сколько я понял, попадают экранированные слеши и кавычки (\\ и \"). Вот, что должно быть в UninstallString: mshta vbscript:execute("If MsgBox(""Вы действительно хотите удалить BSPlayer PRO и все компоненты программы?"",36,""Деинсталляция BSPlayer PRO"")=6 Then Set w=CreateObject(""WScript.Shell""):For each d in split(w.RegRead(""HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\BSplayer Pro\UnCom""),vbCrLf):r=w.Run(d,0,True):Next:close") |
|
------- Отправлено: 23:46, 18-10-2015 | #73 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать ya158,
После применения предложенных исправлений проблема с регистрацией - решена, проблема с удалением - нет. |
------- Отправлено: 15:57, 19-10-2015 | #74 |
Ветеран Сообщения: 1575
|
Профиль | Отправить PM | Цитировать wolkow70,
По поводу удаления - надо проверять на чистой системе. Я не ставил 10 и пока проверить не могу. Надо отследить как данные из конфигурационного файла инсталлятора записываются в реестр. |
------- Отправлено: 16:57, 19-10-2015 | #75 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Цитата ya158:
|
|
------- Отправлено: 19:13, 19-10-2015 | #76 |
Ветеран Сообщения: 1575
|
Профиль | Отправить PM | Цитировать wolkow70,
Это я привел для примера: в UnCom тоже надо убирать экранировку слеша и кавычек. Помимо этого в UnCom заносится хитрая запись. Это несколько строк разделенных переносом строки vbCrLf. Поэтому, если скопировать эти данные и вставить в текстовый файл, то должны вставиться несколько строк. Можно запускать эти строки по очереди и отслеживать деинсталляцию. Правда не совсем в лоб, т.к. из комстроки может получиться неправильно из-за cmd /c в начале строк, а из Пуск-Выполнить может не получиться из-за ограничения на длину строки. Для отладки я заменяю "cmd /c" на "cmd /k", а в UninstallString заменить r=w.Run(d,0,True) на r=w.Run(d,1,True). Строки из файла в реестр можно вставлять просто ctrl+A - ctrl+C - ctrl+V |
------- Отправлено: 19:47, 19-10-2015 | #77 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать ya158,
интересует автономное использование автоит-модуля регистрации из конструктора, так как задумался над написанием своего установщика, буду делать на nsis, так для меня привычнее. |
------- Отправлено: 09:29, 20-10-2015 | #78 |
Ветеран Сообщения: 1575
|
Профиль | Отправить PM | Цитировать wolkow70,
Да не вопрос - исходник autoit в папке files |
------- Отправлено: 09:41, 20-10-2015 | #79 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать ya158,
К сожалению не получается у меня воспользоваться вашим autoit. Не могу правильно передать параметры через nsis. ; !define KEY "Kaizer Soze / CORE" !define PASS "2992A2857EA9753AB692D8DD1ADC630212ECB1DA2100" ; ExecWait '"$INSTDIR\bsp.exe" ${KEY} ${PASS}' : вводится ключом Kaizer Soze и паролем CORE а Pass совсем не вводится. |
------- Отправлено: 14:33, 21-10-2015 | #80 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Модифицированный SFX модуль 7-Zip'а для установок | Oleg_Sch | Автоматическая установка Windows 2000/XP/2003 | 2017 | 08-06-2024 08:01 | |
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 |
|