Войти

Показать полную графическую версию : Модифицированный SFX модуль 7-Zip'а для установок


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 [61] 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

sov44
13-08-2011, 23:35
Подскажите, почему не работает таймер на кнопке ОК при установке? Кроме того, после установки программы окно должно закрыться.

;!@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 Вопрос снят - причина была в модуле.

BigBoo
18-08-2011, 01:35
Обнаружил такую вещь, очень долго не мог понять, в чём дело: если использовать команду "ExecuteFile", все команды "RunProgram" игнорируются и не срабатывают! Думаю, достаточно важное замечание, сколько времени и нервов убил, пытаясь понять ошибку.

gora
18-08-2011, 06:00
если использовать команду "ExecuteFile", все команды "RunProgram" игнорируются и не срабатывают! »
Читаем справку: :read: Существуют 4 типа команд запуска программ: 'AutoInstall', 'AutoInstallX', 'RunProgram' и 'ExecuteFile'. В файле конфигурации могут одновременно присутствовать любые из этих 4-х типов и даже все, но после запуска SFX архива может выполняться только один тип команд запуска.

Одновременное наличие 'ExecuteFile' и 'RunProgram', в файле конфигурации, возможно, но нецелесообразно, т.к. 'ExecuteFile' имеет приоритет и все 'RunProgram' будут проигнорированы.

sov44
18-08-2011, 16:21
Возможно ли создание 7z архива, а в дальнейшем sfx через командную строку?

gora
18-08-2011, 16:28
Да, но батником проще. Посмотреть конкретную реализацию можно, например, здесь (http://forum.oszone.net/post-1436397-46.html).

sov44
18-08-2011, 16:43
gora, то, что надо, буду пробовать. Нужно упаковать Ofiice 2010 SP1 в автоматическом режиме ( в случае добавления обновлений) :)

timon45
04-09-2011, 15:27
Нужна помощь в написании файла конфигурации.
Архив состоит из 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@!

gora
04-09-2011, 15:38
;!@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@!

timon45
04-09-2011, 15:55
gora, файл ByFly_guest.ppx не появился в %USERPROFILE%\\Application Data\\Proxifier\\Profiles\, может по тому что установка ProxifierSetup.exe не создает каталога \Proxifier\Profiles\, а он создается только после запуска программы.

gora
04-09-2011, 16:03
timon45, команда Copy не создает папку назначения. Если этой папки нет до копирования, то ее нужно создать или использовать xCopy (последняя создает папки автоматически). RunProgram="hidcon:xCopy ByFly_guest.ppx \"%USERPROFILE%\\Application Data\\Proxifier\\Profiles\\ByFly_guest.ppx\" /e /i /y"

timon45
04-09-2011, 16:21
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@!
Если каталог не создается там мы его создадим :)

ну хотелось бы использовать более грамотное решение.

gora
04-09-2011, 17:28
Поправил 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 там нет. Мне именно нужно взглянуть на такую конфигурацию, не спрашивайте только зачем. :) Если кто знает, подскажите плизз.

gora
21-10-2011, 15:36
в оригинальном, как я понимаю в автоматическом режиме создания 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 из пакета Экстра.

Nun-Nun
27-10-2011, 17:04
Может кто подсказать по такому делу: в параметрах 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\""

gora
27-10-2011, 17:28
прописывалась именно как текст %SystemRoot%
Такое возможно? »
Удвоение процентов сработает, но я Вас уже предупреждал, что в секции [Strings] нельзя использовать переменные.

Nun-Nun
27-10-2011, 19:28
иногда в таких случаях помогает удвоение признака переменной %%
попробуйте »
Удвоение процентов сработает...»
Пробовал, и даже пробовал переменную через другую переменную в параметрах окружения прописать, но почему-то вот что получается:
либо так

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% - всё прекрасно работает, в ярлыке получается всё, как положено.

gora
27-10-2011, 20:01
вот что получается: »
А так: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