Показать полную графическую версию : .: Файлы конфигурации 7z SFX. Помощь и советы :.
Эта тема создается специально для вопросов по 7z SFX архивам на базе модифицированных модулей от Oleg_Sch (http://forum.oszone.net/member.php?u=32441). Перед тем, как задать вопрос, обратите внимание, на перечисленные ниже ссылки.
Домашняя страница модулей: http://7zsfx.info (зеркала в теме по ссылке ниже)
Обсуждение модулей: http://forum.oszone.net/showthread.php?t=51547
В теме предполагается обсуждать вопросы написания файлов конфигурации для 7z SFX архивов, делится своими наработками, нестандартными и оригинальными решениями, расширяющими возможности использования модулей и т.п..
Лучшие варианты файлов конфигурации и оригинальные решения могут быть включены в справку по модифицированным модулям.
Полезные ссылки:
Список переменных, которые могут быть использованы в файле конфигурации модифицированного модуля. (http://forum.oszone.net/post-1253563.html#post1253563)
Вопрос: Как можно удалить необходимую папку ДО установки? Насколько я читал RunProgram, ExecuteFile, AutoInstall выполняются после распаковки.
Ответ: Установка и распаковка это разные этапы работы модуля. До распаковки ни каких действий произвести нельзя, модуль этого не предусматривает. А после распаковки начинается установка и первыми командами установки можно удалить "любую" папку (конечно, если ее вообще можно удалить).
Если Вы хотите удалить папку в которую нужно произвести установку программы, то распаковывайте SFX во временную папку, затем удаляйте, ту, которую хотите удалить, а затем производите установку/копирование/перемещение из временной папки, туда, куда сочтете нужным. Временная папка автоматически удалится после завершения работы SFX.
Вопрос: Возможно ли 2 варианта распаковки? Например: запаковано 4 файла: 1.txt, 2.txt, 3.txt и 4.txt. В первом случае распакованы будут все файлы, а во-втором только 3.txt и 4.txt. Вариант распаковки выбирает пользователь?
Ответ: Нет, такое невозможно. Всегда распаковываются все файлы из архива. После распаковки можно скопировать/переместить только нужные файлы в нужное место, или просто удалить ненужные.
Раз эта тема вышла, тогда вопрос:
Есть ключ реестра, чтоб после импорта реестр, сам reg-файл удалился? (выделено жирным) Вот мой отрывок файла конфигурации:
;!@Install@!UTF-8!
InstallPath = "%ProgramFiles%\\Test"
SetEnvironment = "INF_File=INF.inf"
SetEnvironment = "INF_Sect=DefaultInstall"
RunProgram = "fm10:\"%SystemRoot%\\System32\\RunDLL32.exe\" advpack.dll,LaunchINFSectionEx %%T\\%INF_File%,%INF_Sect%,,4,N"
RunProgram = "hidcon:\"%ComSpec%\" /c Move /y \"%%T\\%INF_File%\" \"%SystemRoot%\\Inf\""
RunProgram = "REGEDIT /S reg.reg"
GUIFlags = "4+8+16+32+64+256+4096"
MiscFlags = "4"
GUIMode = "1"
OverwriteMode = "0"
;!@InstallEnd@!
чтоб после импорта реестр, сам reg-файл удалился? »
Добавьте в конец файла конфигурации команду:Delete=%%T\\reg.reg" И еще у Вас нет сигнатуры конца файла;!@InstallEnd@!
Не работает переменная %SYSTEMROOT%
;!@Install@!UTF-8!
Title="Some Software"
BeginPrompt="Do you want to install the Some Software?"
Directory="%SYSTEMROOT%\\System32\\"
RunProgram="msiexec /i SomeSoftware.msi"
;!@InstallEnd@!
C:\>echo %SYSTEMROOT%
C:\Windows
KML, не пробовали использовать внутренние переменные?
или вместо %SYSTEMROOT% юзать %windir% ?
или убрать последний ненужный сплеш в имени папки?
например вот так всё стабильно работает:
;!@Install@!UTF-8!
Title="Установка пакета обоев для рабочего стола"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Придется подождать..."
InstallPath="%PathInst%"
RunProgram="desk.cpl ,,2"
SetEnvironment="PathInst=%windir%\\web\\Wallpaper"
GUIMode="1"
GUIFlags="6206"
; This SFX archive was created using "Button for creation and work with 7z SFX archives in Total Commander v.1.17.2" 16.02.2011 10-16. The last version of "Button" you can find on http://buttontc.7zsfx.info
;!@InstallEnd@!
Не работает переменная %SYSTEMROOT% »
Т.к., месторасположение файла SomeSoftware.msi не указано, то попробую предположить, что он расположен в корне архива.
Не запускается он по причине использования параметра Directory, который устанавливает путь к файлам в команде RunProgram. По этому пути модуль обнаруживает msiexec, но вот файла SomeSoftware.msi там нет, ибо он распакован во временную директорию модуля.
Модулю не требуется команда msiexec /i для запуска .msi файлов и ее можно упустить в строке запуска.
Параметр Directory тоже не нужен, ибо файл SomeSoftware.msi находится в текущей папке модуля и весь файл конфигурации сводится к:;!@Install@!UTF-8!
Title="Some Software"
BeginPrompt="Do you want to install the Some Software?"
RunProgram="SomeSoftware.msi"
;!@InstallEnd@!
убрать последний ненужный сплеш в имени папки? »
Нет, без него нельзя, т.к. это путь к msiexec
Попробовал так, не пашет:
;!@Install@!UTF-8!
Title="Some Software"
BeginPrompt="Do you want to install the Some Software?"
InstallPath="%PathInst%"
SetEnvironment="PathInst=%windir%\\temp"
RunProgram="msiexec /i %PathInst%\\SomeSoftware.msi"
;!@InstallEnd@!
Такое впечатление, что 7z не находит msiexec
Параметр Directory тоже не нужен, ибо файл SomeSoftware.msi находится в текущей папке модуля и весь файл конфигурации сводится к: »
;!@Install@!UTF-8!
Title="Some Software"
BeginPrompt="Do you want to install the Some Software?"
RunProgram="SomeSoftware.msi"
;!@InstallEnd@!
К сожалению 7z с вами не согласен и выдаёт вот такое сообщение
%1 is not a valid Win32 application.
7z с вами не согласен »
1 Приведите скриншот
2 Подозреваю, что Вы используете оригинальный модуль архиватора, а не модифицированный.
Приведите строку Авторское право созданного SFX
3 Сообщите также:
- где находится файл SomeSoftware.msi
- систему и ее разрядность
- название модуля, его версию и сборку, его разрядность
- файл SomeSoftware.msi не является х64 приложением?
Приведите строку Авторское право созданного SFX »
Copyright (c) 1999-2010 Igor Pavlov
где находится файл SomeSoftware.msi »
Вот батник, которым создаётся .exe
del SomeSoftware.7z
del SomeSoftware.exe
..\7zr a SomeSoftware.7z .\SomeSoftware.msi -m0=BCJ2 -m1=LZMA:d25:fb255 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3 -mx
copy /b ..\7zSD.sfx + configuration.conf + SomeSoftware.7z SomeSoftware.exe
del SomeSoftware.7z
систему и ее разрядность »
Windows 7 x64
название модуля, его версию и сборку, его разрядность »
7z920_extra (http://heanet.dl.sourceforge.net/project/sevenzip/7-Zip/9.20/7z920_extra.7z), без разницы какой набор .dll использовать, результат всегда одинаковый.
файл SomeSoftware.msi не является х64 приложением? »
нет
Copyright (c) 1999-2010 Igor Pavlov »
Значит я был правВы используете оригинальный модуль архиватора, а не модифицированный »
Не читаете шапку, где написанодля вопросов по 7z SFX архивам на базе модифицированных модулей »
Меняйте модуль на модифицированный, все заработает.
Да, с модифициованным работает нормально, единственное "но" используются русские ресурсы по умолчанию (диалоговые сообщения, заголовки окон и т.п.)
Всё ОК, если запускать с ключиком -sfxlang:1033, но хотелось бы чтобы это происходило автоматически...
хотелось бы чтобы это происходило автоматически »
На английской OS будут использоваться английские "ресурсы" автоматически.
Oleg_Sch
27-03-2012, 01:50
На английской OS будут использоваться английские "ресурсы" автоматически. »
Уточню. На любой "не русской локали". Использование русских ресурсов определяется "языком по умолчанию" для текущего пользователя
По какой причине может не удаляться временная папка и ее содержимое после установки?
Конфиг:
;!@Install@!UTF-8!
RunProgram="programm.exe /VERYSILENT /LOADINF=\"progr.ini\""
GUIMode="2"
;!@InstallEnd@!
По какой причине может не удаляться временная папка и ее содержимое после установки? »
По причине "дочерних" процессов запущенных основным процессом programm.exe, который может сам закрыться после установки.
Можете попробовать использовать префикс waitall.
gora, благодарю великодушно - помогло.
Мда, рано обрадовался - перестало работать. Стоит добавить waitall: перед именем файла и выдается ошибка "Не найден указанный файл".
;!@Install@!UTF-8!
RunProgram="waitall:programm.exe /VERYSILENT /LOADINF=\"progr.ini\""
GUIMode="2"
;!@InstallEnd@!
перестало работать »
Видимо проблема в Вашем programm.exe, т.к., воспроизвести ошибку не смог.
Для проверки сделал конфиг:;!@Install@!UTF-8!
RunProgram="waitall:test_waitall.bat /VERYSILENT /LOADINF=\"progr.ini\""
GUIMode="2"
;!@InstallEnd@!
Содержание файла test_waitall.bat, который лежит в корне архива:@Echo Off
Echo %*
Pause
Ни каких ошибок не обнаружил.
gora, а какие у вас версии модуля и кнопки? Кнопка у меня последння, но проблема присутствует. С батником тоже пробовал - то же самое. Может эта фича под ХР не работает? :(
P.S. Мне можно без "Вашем" - я русский. :)
Да, с вашим тестовым батником и конфигом нет проблем. Буду разбираться.
Еще раз спасибо.
Scorpkoms
12-04-2012, 09:01
Доброго времени уважаемые!
Есть ли разница в команде для исполнения reg файла в х64 и х86 редакциях?
regedit /s
Спасибо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.