Показать полную графическую версию : Модифицированный SFX модуль 7-Zip'а для установок
Oleg_Sch
11-07-2005, 06:20
http://www.7-zip.org/7ziplogo.png
(http://www.7-zip.org/)
Модифицированный SFX модуль 7-Zip'а для установок
Версия 1.6.1 Stable, сборка 3873 (5 марта 2016 г.)
Версия 1.7.0 Develop, сборка 3873 (5 марта 2016 г.)
Модифицированный модуль предоставляет широкие возможности для создания SFX архивов. Используя модуль, Вы можете:
указывать желаемый путь распаковки содержимого архива
использовать как абсолютные, так и относительные пути
выбирать между интерактивной, "тихой" и скрытой распаковкой
контролировать внешний вид диалоговых окон и текста в них
конфигурировать различные варианты установки запакованных приложений, впоследствии выбирая нужный сценарий ключом командной строки
конфигурировать установку нескольких (до 10) разных запакованных приложений, впоследствии выбирая нужные приложения и последовательность их установки ключом командной строки
просто распаковать архив в желаемую папку
запускать после распаковки последовательно несколько файлов (.exe, .msi, .reg и т.п.) и использовать его для установки приложений
заменить, применяемые ранее для установки, .bat или .cmd файлы и исключить необходимость использования "StartX.exe", "msistub.exe" и подобных утилит
создавать ярлыки к программам и назначать значки для этих ярлыков по своему усмотрению
использовать архивы с разными методами сжатия (LZMA, LZMA2, Deflate, PPMd), которые предлагает архиватор 7-Zip
удалять как отдельные файлы, после их использования, так и сам SFX архив
и многое другое...
http://7zsfx.org/ru/misc/sc_small.png (http://7zsfx.org/ru/misc/sc_large.png)
Домашняя страница | Страница загрузок
Зеркалa:
Веб-архив сайта (http://web.archive.org/web/20160919100104/http://7zsfx.info/ru/)
Яндекс.Диск (https://yadi.sk/d/6MVDHh463GVvPP) - полный набор
OneDrive (https://1drv.ms/u/s!Au66isdNRnAylZZAobdFAnx8JqSDNg) - полный набор, пароль: 7zsfxmod
OneDrive (https://1drv.ms/u/s!Au66isdNRnAylZZBT4QT5zpvQshT-g) - только модули SFX (7zsd_tools_170_3900.7z)
Обсуждение GUI (графической оболочки) для создания 7-zip SFX с модифицированным модулем ведется в этой теме (http://forum.oszone.net/showthread.php?t=63909). Автор GUI - hobbeat (http://forum.oszone.net/member.php?userid=41525).
[hr]Кнопка для работы с 7z SFX архивами в Total Commander-е находится здесь (http://forum.oszone.net/thread-83838.html) (автор - gora (http://forum.oszone.net/member.php?userid=8802), вечная память)
[hr]Файлы конфигурации 7z SFX обсуждаются в этой теме (http://forum.oszone.net/thread-230888.html) (автор - gora (http://forum.oszone.net/member.php?userid=8802))
[hr]Отдельное спасибо ArtXGroup (http://forum.oszone.net/member.php?userid=91050) за финансовую поддержку
[hr]
Теперь модуль будет в двух версиях:
1. Stable. В дальнейшем в нем из изменений будет только исправление ошибок (надеюсь их не будет) и обновление кода самого 7-Zip до последней стабильной версии.
2. Develop->Alpha->Beta. Исходные коды 7-Zip - последняя бета версия самого архиватора, добавление новых функций.
FAQ
[hr]
Q: Как извлекать определенные папки, в зависимости от разрядности системы/варианта установки и т.д
A: Такой возможности нет, SFX архив распаковывается полностью
[hr]
Q: а можно ли для sfx архива задавать пароль который при обычном запуске sfx архива как бы не запрашивался и сам вводился, а при попытке просто распаковать архив этот пароль запрашивался
A: Нельзя. Модули с данной поддержкой официально недоступны. Пока, пользуясь своей "властью", я даю такие модули только тем, кто мне помогает/прикладывает какие-то усилия в развитии самого модуля, справки к нему и сопутствующих файлов. Считайте это моим эгоизмом.
[hr]
Oleg_Sch
Спасибо, очень интересно. Сделайте конфигурационный файл для примера и снабдите комментариями, плиз.
Oleg_Sch
11-07-2005, 08:06
OK.
Пример номер 1 (с временной папкой):
;!@Install@!UTF-8!
BeginPrompt="Install this program ?"
ExtractTitle="Prepare for install..."
RunProgram="setup.exe"
AutoInstall="setup.exe /s"
GUIMode="1"
;!@InstallEnd@!
BeginPrompt - читаем хелп к 7Zip
ExtractTitle - при распаковке вместо заголовка в диалоге "0% Extracting" будет "0% Prepare for install..."
После окончания распаковки будет запущен setup.exe БЕЗ КЛЮЧЕЙ. Но если в окне запроса "Install this program ?" мы нажмем "Yes" ВМЕСТЕ С Shift'ом будет выполнен 'AutoInstall' вместо 'RunProgram', т.е. выполнится setup.exe /s. Точно такой же эффект будет, если в командной строке к нашему SFX архиву при запуске мы укажем -ai
GUIMode -
1 - показываем процесс распаковки (с заголовоком "Prepare for install..."), но убираем кнопку "Cancel" и "Закрыть", т.е. не даем пользователю прервать процесс распаковки, но пусть наблюдает.
2 - ПОЛНОСТЬЮ убираем диалог процесса распаковки. Он происходит молча.
После окончания распаковки выполняется 'RunProgram' (или 'AutoInstall', если выполнены условия описанные выше).
Если GUIMode не указан - диалог будет иметь стандартный (для 7Zip) вид, т.е. со всеми кнопками ("Cancel" и "Закрыть")
Указанный в конфиге GUIMode (или не указанный) может быть перезаписан при указании в командной строке ключа '-gmX'. Вместо 'X' может быть 0,1,2. 1 и 2 имеют тоже назначение, что и в GUIMode, 0 - переключает в стандартный режим со всеми конпками (родной 7Zip'овский).
В данном случае SFX модуль создает временную папку и УДАЛЯЕТ ее по окончанию выполнения 'RunProgram' или 'AutoInstall'
Пример номер 2 (с папкой установки):
;!@Install@!UTF-8!
BeginPrompt="Install this program ?"
RunProgram="setup.exe"
AutoInstall="setup.exe /s"
ExtractTitle="Prepare for install..."
GUIMode="1"
InstallPath="%PROGRAMFILES%\\test"
;!@InstallEnd@!
Все вышесказанное относится и к этому случаю, за исключением...
Распаковка архива производится в папку Program Files\test и содержимое этой папки по окончанию установки НЕ УДАЛЯЕТСЯ.
В режиме с 'InstallPath' наличие 'RunProgram' и/или 'AutoInstall' НЕОБЯЗАТЕЛЬНО. Если они не указаны - SFX модуль промолчит, если указаны - будут выполнены как в примере выше. Но в любом случае: сам SFX модуль данную папку и ее содержимое удалять не будет.
Кстати, обратите на слэш в пути - ОБЯЗАТЕЛЬНО указывать двойной!
Вот вроде пока и все. Может сумбурно, но как сумел...
Протестировал GUIMode="2" и ключ -ai с Adobe 7. Все работает, как заявлено. Просто замечательно! Теперь один и тот же архив можно использовать как в автоматическом режиме, так и в обычном. Это надо на MSFN, там все будут счастливы :-)
Oleg_Sch
11-07-2005, 08:56
У меня с англицким нелады, тока в режиме "ReadOnly" :-) Если есть желание - кинь, я, по мере возможностей, попробую поддерживать. Но первоначально перевести инструкцию и описание на нормальный английский - не смогу
P.S. Можешь подправить свою статью про создание SFX ;-)
Пусть местные товарищи потестируют пока, вдруг что всплывет. Я потихоньку readme переведу, у меня много работы на неделе будет, может через недельку запостим на MSFN.
P.S. Можешь подправить свою статью про создание SFX ;-)Надо бы. Я просто ссылку дам на тему, т.к. расписывать это все в статье необязательно.
Ждем-с других утилит :)
Oleg_Sch
11-07-2005, 09:56
Положил пару утилит для запуска установок из SFX (конечно, не только из них, например hidcon я использую при запуске cmd-файлов на T12 из cmdlines.txt). По сравнению с другим, плюс у них один - размер. Смотреть там же - http://unattended.solta.ru (http://unattended.solta.ru/)
P.S. Скоро еще будет
например hidcon я использую при запуске cmd-файлов на T12 из cmdlines.txt)
Интересно, а то мы тут (http://forum.oszone.net/showthread.php?t=29630) это как раз и обсуждаем :)
Oleg_Sch
11-07-2005, 10:31
Не знал, я дальше "Автоматической установки..." не лазил...Свой я написал давно, и использовал его еще в установке XP с SP1. Как и любой программист - заточил под себя, ничего лишнего (по размеру видно :-). Ща просто руки дошли положить. Можете и мой помучать :-) Обещаю оперативно подправлять, если что не так.
Oleg_Sch
Спасиб полючился рульный SFX модуль 7Zip'а
Ну вот что-то такое получилось
Modified version of the 7zip SFX module:
Configuration file:
InstallPath="path_to_extract"
Sets an extraction path. Environment variables (%SYSTEMDRIVE%, %PROGRAMFILES% etc.) are allowed, and will be replaced by their expanded values.
If you specify this parameter then 'RunProgram' is not required, all files will be simply extracted into that folder. If you specify 'RunProgram' – it will be executed.
Extraction folder will be NOT deleted at the end.
GUIMode="x"
Where x= 1 or 2 (always in double quotes, i.e. GUIMode="2")
1 – hide "Cancel" button (and “Close” button in the title bar), show extraction progress.
2 – do not show extraction dialog (silent mode)
This parameter can be overridden from the command line by specifying -gmX (see below)
AutoInstall="command_line_for_auto_install"
AUTOMATED installation mode, will be invoked if you:
1. Specify an "-ai" command line parameter (see below)
2. Click "Yes" in 'BeginPrompt' dialog (if it was specified) WHILE HOLDING Shift BUTTON.
That means that there are two modes – the usual 'RunProgram' mode and automated 'AutoInstall' mode. If you didn’t do anything mentioned above - 'RunProgram' will be used as a default.
ExtractTitle="new_title"
Allows setting an extraction window title, i.e. instead of "Extracting" - something like "Preparing to install" may be specified (do not forget about UTF-8)
There is also two new command line parameters:
-gmX – sets GUI-mode, where X:
0 – standard mode (native 7Zip dialogs, with "Cancel" and "Close" buttons).
1 – hides "Cancel" button (and "Close" button in the dialog title bar), shows extraction progress.
2 – hides the extraction dialog completely (i.e. silent mode).
This command line parameter OVERRIDES GUIMode specified in the configuration file.
-ai – automated installation
Specifies that configuration file 'AutoInstall' parameter will be used instead of 'RunProgram'.
If 'AutoInstall' is not specified – this command line parameter will be ignored.
Currently you cannot yet use environment variables in 'RunProgram' and 'AutoInstall'. This is a TODO.
TbMA
Good job! Это и будет readme.txt.
Oleg_Sch
Если выпускать публично вообще, и на MSFN в частности, то надо это делать все по взрослому, а именно под GNU LGPL, также как и сам 7-zip. Исходники (если имеются) тоже надо включить, иначе получится нарушение авторских прав.
Т.е. в readme можно включить что-то типа.
Modified version of the 7-zip SFX module for GNU 7-zip file archiver (http://www.7-zip.org/). The SFX module is released under GNU LGPL (http://www.gnu.org/)
В тонкости лицензии вникать не обязательно :)
Oleg_Sch
12-07-2005, 01:32
TbMA
Спасиб. Есть откуда плясать :) Но соглашусь с Vadikan'ом - пусть пока русскоязычное население потестирует недельку.
Vadikan Если выпускать публично вообще, и на MSFN в частности, то надо это делать все по взрослому, а именно под GNU LGPL, также как и сам 7-zip
Согласен на все 100. Про лицензию я знаю, и поэтому на той же странице (http://unattended.solta.ru (http://unattended.solta.ru/)) лежат МОДИФИЦИРОВАННЫЕ исходники 7Zip'а. Все модификации можно увидеть поискав в файлах подстроку "Oleg_Sch", я все изменения метил.
Oleg_Sch
В общем, я потестировал еще немного :) У меня не получается применить параметр -ai если присутствует BeginPrompt (и возможно InstallPath). Пример: делаю два батника batch1.cmd и batch2.cmd - оба пингуют localhost и пишут результат в ping1.txt и ping2.txt соответственно. Пакую их оба в 7z, делаю конфиг файл такой
;!@Install@!UTF-8!
BeginPrompt="Run test file?"
ExtractTitle="Prepare for install..."
RunProgram="batch1.cmd"
AutoInstall="batch2.cmd"
InstallPath="C:\\Temp"
GUIMode="1"
;!@InstallEnd@!
Если запустить без параметров и кликнуть Yes - все ок, оба файла распаковываются в C:\Temp и первый отрабатывает.
Если запустить без параметров и кликнуть Yes удерживая SHIFT, то опять все ок, оба файла распаковываются в C:\Temp и второй отрабатывает.
A вот если запускать с параметром -ai, то появляется диалoг "Run test file?", т.е. silent установка не происходит. Если же откомментировать BeginPrompt, то при запуске без параметров отрабатывает первый файл, а при запуске с -ai отрабатывает второй - все как положено.
Это так и задумано, или я что-то напутал? Просто исходя из первого примера prompt не должен появляться при наличии параметра -ai, насколько я понял.
Oleg_Sch
12-07-2005, 03:35
VadikanЭто так и задумано, или я что-то напутал?
Так было задумано :). Укажи в командной строке (помимо -ai) "-y" (без кавычек, естественно) - это родной ключ 7Zip SFX, ПОДАВЛЯЕТ вывод BeginPromt, подразумевая ответ "Yes". "-ai" ТОЛЬКО указывает использовать 'AutoInstall' вместо 'RunProgram'
Oleg_Sch
Понятно. Про -y я и не подумал. Просто зациклился на твоем примере, в котором BeginPrompt есть, и фразе Точно такой же эффект будет, если в командной строке к нашему SFX архиву при запуске мы укажем -ai
По поводу ExeTools.
Понравилось как замена StartX. Но если идти до конца - их можно сделать и поменьше на килобайт, уравняв секции по 512 и убрав мусор с хедера. Положи или пришли исходники – подправлю!
Кстати только убрав муссор архив сократился с 1027 до 926 байт ;-)
(Записать в ЕxecТools.uue и распаковать WinRAR'ом):
-------------------- ExecTools.uue --------------------------
begin 644 ExecTools.rar
M4F%R(1H'`#O0<P@`#0````````!B.G2`D"\`5P(````(```"5(4YO":[]C(=
M-0H`(````&AI9&-O;BYE>&4`\"8TE@@!40S,W\W!&Q-H@Y*Y*OULEY,+LHX$
MO"N2UEXP=!V1N6A7+&U'9(7C6XVG(V1MP23LA2<+22<8Q@R]+\"H6]*4EG"#
M*4+>%H3E2EX4O>SA0_4G2.CQUN1)AJ:;<DMXW^"%*/&DL%F>WR-%KWWE\92S
MVY[V9GC=P][%[3<%@;OM#4)&K$[,T&(4PTO,^>(U@HIR`L>JB;CEZ]P'DM?9
M=ZQCS='^9%2)G(R<M&#')"@R)$E,F4@1&5()%ISK%QB1Y,-!M;V]LU"EO'KN
MD'AC#A4_B'',XQEH(6K5[1U*Q*V:3E[9M&U>87Z_8ECU\8=5XI2L2^W30I;>
MAQ!!330<+9-#03$N3`L9&!OX%$!LC#@IP1'OK4*H5H/9S^7[S9]`\5I;63/N
MCB.0E[.JP<<R4TU<$S!TYR;/>:;(5*^G=P`3Y.#\CJM<G;&^JP7HYXSQRR91
MC*BC,2XYVPMJ4F:XOI6`4`H\WB2]WB6Y"1.E(SY5XHC'2\[%OM_>5%\QOD<C
MS?\4I;SIFBU:?_XICQJSF.MXOGL8*;F%LLHP48/IWI4=TZ+15NR$ZD[M%+C`
M5J;9;E7^-I\V74"4>>^4@U;/:C,IC]2CWN]PJXE6BPQ;<2L*E]&Y+559[9:I
M&9Y9%MO5S$V:'^Y$@NP/3+SX*'CH:]"`2DG1!EZR5MC7ZA#GAA9LE)#JP9$/
M-0`\SJ()N]"*GA%0"]1DPD$DA'<8Y$%0L.2CC19&6J7%RHR$),,I7**$%.N#
MTU3^4%L97P;58G4'CQRGCQ7""H.L[/Z[MXWZ#:I5FA9]`N?48I5TD)`P`,T`
M````"@```MU!50LKN_8R'34+`"````!M<VES='5B+F5X90#PS-&3Q/X%_=8?
M977M8C@-'5<BL/<%QJ)<`/B-19@"[RC!R-EP0Y%=GA8)D-9P6?0/*=[:R2Z/
ML^ZN>(6!!P[0X:GE8`AY@7Y5DE6KO5U_]H)TO0SF/UV#XHB`>5A1O_GU$+K9
ML,%'#1^,'KL/JR^RE1KVLPEPF"GXP`E=@_,WM$JO-?+F)MB`'[JRVN^)\-#8
MH;-#X5EM[E:<#@+Z^=9@+1X%.VNU_C]_=/?Z["'N89Z6<BI"<12>QC*59>PW
:'2BH:"$)L7H2^BDO$@L^@?U_5,0]>P!`!P!`
`
end
-------------------------------------------------------------
Oleg_Sch
25-07-2005, 05:13
Я, конечно, минималист, но не настолько :) чтобы править хедеры (можно вообще свой stub подсунуть), че ликовщик сделал - то и оставил. А секции и так на 512 байт, так что размер конечного exe-ника не уменьшится. Архив - да поменьше будет. Только в msistub можно совместить код и данные в одной секции - уменьшится на 512 байт, из-за строки "msiexec.exe /i %s". Если нужны исходники - в PM.
Debugger
25-07-2005, 10:16
Oleg_Sch
А можно ли облегчить добавление своей иконки в sfx-файл?
Oleg_Sch
25-07-2005, 10:59
А можно ли облегчить добавление своей иконки в sfx-файл?
Можно, и я над этим работаю. Будет мастер (wizard) по созданию/модификации установок на основе 7zip SFX, все параметры конфига можно будет сделать в привычном Windows GUI. В том числе и менять иконку. Но... :( Нехватка времени... Скорее всего чего-нить выложу после 14-15 августа.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.