PDA

Показать полную графическую версию : .: Файлы конфигурации 7z SFX. Помощь и советы :.


Страниц : [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

gora
21-03-2012, 09:16
Эта тема создается специально для вопросов по 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. Вариант распаковки выбирает пользователь?
Ответ: Нет, такое невозможно. Всегда распаковываются все файлы из архива. После распаковки можно скопировать/переместить только нужные файлы в нужное место, или просто удалить ненужные.

alert30
21-03-2012, 09:38
Раз эта тема вышла, тогда вопрос:

Есть ключ реестра, чтоб после импорта реестр, сам 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@!

gora
21-03-2012, 09:53
чтоб после импорта реестр, сам reg-файл удалился? »
Добавьте в конец файла конфигурации команду:Delete=%%T\\reg.reg" И еще у Вас нет сигнатуры конца файла;!@InstallEnd@!

KML
23-03-2012, 19:41
Не работает переменная %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

Amigos
23-03-2012, 20:18
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@!

gora
23-03-2012, 20:52
Не работает переменная %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@!

KML
24-03-2012, 13:45
убрать последний ненужный сплеш в имени папки? »
Нет, без него нельзя, т.к. это путь к 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.

gora
24-03-2012, 14:03
7z с вами не согласен »
1 Приведите скриншот
2 Подозреваю, что Вы используете оригинальный модуль архиватора, а не модифицированный.
Приведите строку Авторское право созданного SFX
3 Сообщите также:
- где находится файл SomeSoftware.msi
- систему и ее разрядность
- название модуля, его версию и сборку, его разрядность
- файл SomeSoftware.msi не является х64 приложением?

KML
25-03-2012, 14:28
Приведите строку Авторское право созданного 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 приложением? »
нет

gora
25-03-2012, 15:50
Copyright (c) 1999-2010 Igor Pavlov »
Значит я был правВы используете оригинальный модуль архиватора, а не модифицированный »
Не читаете шапку, где написанодля вопросов по 7z SFX архивам на базе модифицированных модулей »
Меняйте модуль на модифицированный, все заработает.

KML
26-03-2012, 17:55
Да, с модифициованным работает нормально, единственное "но" используются русские ресурсы по умолчанию (диалоговые сообщения, заголовки окон и т.п.)
Всё ОК, если запускать с ключиком -sfxlang:1033, но хотелось бы чтобы это происходило автоматически...

gora
26-03-2012, 18:00
хотелось бы чтобы это происходило автоматически »
На английской OS будут использоваться английские "ресурсы" автоматически.

Oleg_Sch
27-03-2012, 01:50
На английской OS будут использоваться английские "ресурсы" автоматически. »
Уточню. На любой "не русской локали". Использование русских ресурсов определяется "языком по умолчанию" для текущего пользователя

JohnnyD
06-04-2012, 16:03
По какой причине может не удаляться временная папка и ее содержимое после установки?
Конфиг:
;!@Install@!UTF-8!
RunProgram="programm.exe /VERYSILENT /LOADINF=\"progr.ini\""
GUIMode="2"
;!@InstallEnd@!

gora
06-04-2012, 16:10
По какой причине может не удаляться временная папка и ее содержимое после установки? »
По причине "дочерних" процессов запущенных основным процессом programm.exe, который может сам закрыться после установки.
Можете попробовать использовать префикс waitall.

JohnnyD
06-04-2012, 17:38
gora, благодарю великодушно - помогло.

JohnnyD
07-04-2012, 22:03
Мда, рано обрадовался - перестало работать. Стоит добавить waitall: перед именем файла и выдается ошибка "Не найден указанный файл".

;!@Install@!UTF-8!
RunProgram="waitall:programm.exe /VERYSILENT /LOADINF=\"progr.ini\""
GUIMode="2"
;!@InstallEnd@!

gora
08-04-2012, 12:32
перестало работать »
Видимо проблема в Вашем programm.exe, т.к., воспроизвести ошибку не смог.
Для проверки сделал конфиг:;!@Install@!UTF-8!
RunProgram="waitall:test_waitall.bat /VERYSILENT /LOADINF=\"progr.ini\""
GUIMode="2"
;!@InstallEnd@!
Содержание файла test_waitall.bat, который лежит в корне архива:@Echo Off
Echo %*
Pause
Ни каких ошибок не обнаружил.

JohnnyD
08-04-2012, 13:45
gora, а какие у вас версии модуля и кнопки? Кнопка у меня последння, но проблема присутствует. С батником тоже пробовал - то же самое. Может эта фича под ХР не работает? :(

P.S. Мне можно без "Вашем" - я русский. :)

Да, с вашим тестовым батником и конфигом нет проблем. Буду разбираться.
Еще раз спасибо.

Scorpkoms
12-04-2012, 09:01
Доброго времени уважаемые!
Есть ли разница в команде для исполнения reg файла в х64 и х86 редакциях?
regedit /s
Спасибо.




© OSzone.net 2001-2012