Показать полную графическую версию : Модифицированный SFX модуль 7-Zip'а для установок
Подскажите, почему не работает таймер на кнопке ОК при установке? Кроме того, после установки программы окно должно закрыться.
;!@Install@!UTF-8!
SetEnvironment="Name=Microsoft Offise 2010 SP1"
SetEnvironment="Vers=17.08.2011"
Title="Установка %Name%"
BeginPromptTimeout="15"
FinishMessage="%Name%%Vers% установлен!"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Придется подождать..."
BeginPrompt="Установка %Name% от %Vers%"
RunProgram="fm20:hidcon:cmd /c msksm.cmd"
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
BeginPrompt="Сейчас будет установлен %Name% от %Vers%"
;!@InstallEnd@!
upd Вопрос снят - причина была в модуле.
Обнаружил такую вещь, очень долго не мог понять, в чём дело: если использовать команду "ExecuteFile", все команды "RunProgram" игнорируются и не срабатывают! Думаю, достаточно важное замечание, сколько времени и нервов убил, пытаясь понять ошибку.
если использовать команду "ExecuteFile", все команды "RunProgram" игнорируются и не срабатывают! »
Читаем справку: :read: Существуют 4 типа команд запуска программ: 'AutoInstall', 'AutoInstallX', 'RunProgram' и 'ExecuteFile'. В файле конфигурации могут одновременно присутствовать любые из этих 4-х типов и даже все, но после запуска SFX архива может выполняться только один тип команд запуска.
Одновременное наличие 'ExecuteFile' и 'RunProgram', в файле конфигурации, возможно, но нецелесообразно, т.к. 'ExecuteFile' имеет приоритет и все 'RunProgram' будут проигнорированы.
Возможно ли создание 7z архива, а в дальнейшем sfx через командную строку?
Да, но батником проще. Посмотреть конкретную реализацию можно, например, здесь (http://forum.oszone.net/post-1436397-46.html).
gora, то, что надо, буду пробовать. Нужно упаковать Ofiice 2010 SP1 в автоматическом режиме ( в случае добавления обновлений) :)
Нужна помощь в написании файла конфигурации.
Архив состоит из 3 файлов:
ProxifierSetup.exe - нужно запустить с ключом [/verysilent /tasks="groupicon, desktopicon"]
ByFly_guest.ppx - нужно скопировать в папку пользователя ...Application Data\Proxifier\Profiles
Setting.reg - Добавить информацию в системный реестр
;!@Install@!UTF-8!
SetEnvironment="Name=Proxifier"
SetEnvironment="Vers= v3.0 released"
Title="Установка %Name%"
BeginPrompt="Сейчас будет установлен %Name%%Vers%
Нажав 'OK', удерживая [Shift], можно скрыть процесс установки"
FinishMessage="%Name%%Vers% установлен!"
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
MiscFlags="4"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Придется подождать..."
RunProgram="ProxifierSetup.exe"
RunProgram="hidcon:cmd /c copy ByFly_guest.ppx %USERPROFILE%\Application Data\Proxifier\Profiles"
RunProgram="hidcon:REGEDIT /S Setting.reg"
AutoInstall="fm20:ProxifierSetup.exe /verysilent /tasks="groupicon, desktopicon""
AutoInstall="hidcon:cmd /c copy ByFly_guest.ppx %USERPROFILE%\Application Data\Proxifier\Profiles"
AutoInstall="hidcon:REGEDIT /S Setting.reg"
;!@InstallEnd@!
;!@Install@!UTF-8!
SetEnvironment="Name=Proxifier"
SetEnvironment="Vers= v3.0 released"
Title="Установка %Name%"
BeginPrompt="Сейчас будет установлен %Name%%Vers%
Нажав 'OK', удерживая [Shift], можно скрыть процесс установки"
FinishMessage="%Name%%Vers% установлен!"
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
MiscFlags="4"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Придется подождать..."
RunProgram="ProxifierSetup.exe"
RunProgram="hidcon:cmd /c copy /y ByFly_guest.ppx \"%USERPROFILE%\\Application Data\\Proxifier\\Profiles\""
RunProgram="REGEDIT /S Setting.reg"
AutoInstall="fm20:ProxifierSetup.exe /verysilent /tasks=\"groupicon, desktopicon\""
AutoInstall="hidcon:cmd /c copy /y ByFly_guest.ppx \"%USERPROFILE%\\Application Data\\Proxifier\\Profiles\""
AutoInstall="REGEDIT /S Setting.reg"
;!@InstallEnd@!
gora, файл ByFly_guest.ppx не появился в %USERPROFILE%\\Application Data\\Proxifier\\Profiles\, может по тому что установка ProxifierSetup.exe не создает каталога \Proxifier\Profiles\, а он создается только после запуска программы.
timon45, команда Copy не создает папку назначения. Если этой папки нет до копирования, то ее нужно создать или использовать xCopy (последняя создает папки автоматически). RunProgram="hidcon:xCopy ByFly_guest.ppx \"%USERPROFILE%\\Application Data\\Proxifier\\Profiles\\ByFly_guest.ppx\" /e /i /y"
gora, с данной командой у меня уже даже настройки в реестр не вносятся, и папка тоже не создается, (с предыдущей командой настройки в реестр вносятся)
Решил сделать по другому:
;!@Install@!UTF-8!
SetEnvironment="Name=Proxifier"
SetEnvironment="Vers= v3.0 released"
InstallPath="%USERPROFILE%\\Application Data\\Proxifier\\Profiles"
Title="Установка %Name%"
BeginPrompt="Сейчас будет установлен %Name%%Vers%
Нажав 'OK', удерживая [Shift], можно скрыть процесс установки"
FinishMessage="%Name%%Vers% установлен!"
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
MiscFlags="4"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Придется подождать..."
RunProgram="ProxifierSetup.exe"
RunProgram="hidcon:cmd /c copy /y ByFly_guest.ppx \"%USERPROFILE%\\Application Data\\Proxifier\\Profiles\""
RunProgram="REGEDIT /S Setting.reg"
AutoInstall="fm20:ProxifierSetup.exe /verysilent /tasks=\"groupicon, desktopicon\""
AutoInstall="hidcon:cmd /c copy /y ByFly_guest.ppx \"%USERPROFILE%\\Application Data\\Proxifier\\Profiles\""
AutoInstall="REGEDIT /S Setting.reg"
Delete="%USERPROFILE%\\Application Data\\Proxifier\\Profiles\\ProxifierSetup.exe"
Delete="%USERPROFILE%\\Application Data\\Proxifier\\Profiles\\Setting.reg"
;!@InstallEnd@!
Если каталог не создается там мы его создадим :)
ну хотелось бы использовать более грамотное решение.
Поправил RunProgram="hidcon:xCopy ByFly_guest.ppx \"%USERPROFILE%\\Application Data\\Proxifier\\Profiles\\\" /e /y"
dee.jack
21-10-2011, 15:23
В справке несколько раз упоминается, что в оригинальном, как я понимаю в автоматическом режиме создания SFX, тоже должны быть свои параметры конфигурации, вот дословно (Параметр оригинального SFX модуля архиватора 7-Zip).
Есть также спец утилита от создателей, чтобы извлекать config.txt из готовых архивов. Я попробовал этой утилитой извлечь файл конфигурации из SFX созданным обычным путём, но файла config.txt там нет. Мне именно нужно взглянуть на такую конфигурацию, не спрашивайте только зачем. :) Если кто знает, подскажите плизз.
в оригинальном, как я понимаю в автоматическом режиме создания SFX, тоже должны быть свои параметры конфигурации, вот дословно (Параметр оригинального SFX модуля архиватора 7-Zip). »
1 В автоматическом режиме создается SFX без файла конфигурации.
2 SFX с файлом конфигурации могут создаваться только с модулями входящими в пакет 7z_extra и только вручную.
Подробнее об этом написано в справке (описание ключа -sfx), где и перечислены Параметры оригинального SFX модуля архиватора 7-Zip
dee.jack
21-10-2011, 18:44
Дело в том, что я создаю установщик на базе инсталлятора, в нём я прописал параметры с ключами -y -o.
Этот инсталлятор запускает SFX архив, и распаковывает архив туда, куда мне надо. Как только я меняю интерфейс sfx архива на Виндовский и меняю кое-какие надписи на распаковщике с помощью файла конфигурации, этот файл ни в какую не хочет распаковываться туда куда мне надо, в отличии от архива, созданного автоматом. Не пойму тогда какую конфигурацию делать. Перепробовал варианты с путями в папку где находится файл, а он туда же и распаковывается при запуске инсталлятора, без путей - файл вообще пропадает. Как вот сделать, чтобы всё происходило как и в случае создания SFX автоматически, т.е. такой файл исполняет команды инсталлятора, а с конфигурацией почему-то нет. Вывод из этого конечно делается такой, не правильная конфигурация, т.е. не та которая нужна.
Вопрос тогда такой, что нужно еще добавить в файл конфига, чтобы архив слушал команды инсталлятора?
;!@Install@!UTF-8!
GUIFlags="4+8+16+32+128+1024"
;!@InstallEnd@!
P.S.
Пути в которые забрасывает файлы программа инсталлятора , крайне не стандартные, и я научил его их определять.
При создании SFX использовал Файл 7zsd_LZMA.sfx из пакета Экстра.
Может кто подсказать по такому делу: в параметрах 7z SFX есть такая строчка:
RunProgram="%%P:hidcon:cmd /c >>%NameInf% Echo KEY_UNINST1 =\"rundll32 advpack,LaunchINFSection %SystemRoot%\\INF\\MyProgram.inf,Uninstall_%%P,0\""
но в inf-файле переменная %SystemRoot% прописывается как её значение, а мне нужно, чтобы прописывалась именно как текст %SystemRoot%
Такое возможно?
specialist
27-10-2011, 17:17
иногда в таких случаях помогает удвоение признака переменной %%
попробуйте
RunProgram="%%P:hidcon:cmd /c >>%NameInf% Echo KEY_UNINST1 =\"rundll32 advpack,LaunchINFSection %%SystemRoot%%\\INF\\MyProgram.inf,Uninstall_%%P,0\""
прописывалась именно как текст %SystemRoot%
Такое возможно? »
Удвоение процентов сработает, но я Вас уже предупреждал, что в секции [Strings] нельзя использовать переменные.
иногда в таких случаях помогает удвоение признака переменной %%
попробуйте »
Удвоение процентов сработает...»
Пробовал, и даже пробовал переменную через другую переменную в параметрах окружения прописать, но почему-то вот что получается:
либо так
KEY_UNINST1 ="rundll32 advpack,LaunchINFSection %C:\Windows%\INF\MyProgram.inf,Uninstall_x86,0"
либо так
KEY_UNINST1 ="rundll32 advpack,LaunchINFSection C:\Windows\INF\MyProgram.inf,Uninstall_x86,0"
...но я Вас уже предупреждал, что в секции [Strings] нельзя использовать переменные.»
Я об этом помню. Просто попробовал поэкспериментировать и вручную в этой строчке inf-а прописать %SystemRoot% - всё прекрасно работает, в ярлыке получается всё, как положено.
вот что получается: »
А так:RunProgram="%%P:hidcon:cmd /V:ON /c Set \"aa=SystemRoot\" & >>%NameInf% Echo KEY_UNINST1 =\"rundll32 advpack,LaunchINFSection %!aa!%\\INF\\MyProgram.inf,Uninstall_%%P,0\""
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.