Показать полную графическую версию : Модифицированный SFX модуль 7-Zip'а для установок
IgorLyahov
14-03-2009, 13:32
Добрый день.
Проблема появилась такая, собираю тихую установку для Компаса 9 LT днлаю 7z файлик, создаю конфиг вот такой:
;!@Install@!UTF-8!
RunProgram="setup.exe /S /v/qn"
GUIMode="2"
;!@InstallEnd@!
даю команду:
copy /b 7ZSD_LZMA.sfx+kompas.txt+kompas.7z kompas.exe
и получаю заветный файлик.
Проблема начинается после того заканчивается распаковка, запускается указанный файл setup.exe с ключами и удаляется все содержимое паки куда распокавался дистрибутив, вычислил все когда выбрал режим не тихой усановки и GUI сделал 0.
Вот собственно такая проблема, как решить не знаю.
Заранее всем благодарен.
Dmitry_K
14-03-2009, 15:02
Проблема начинается после того заканчивается распаковка »
а в чем, собственно, конкретно проблема? читаем документацию к модулю:
;!@Install@!UTF-8!
RunProgram="setup.exe /s"
GUIMode="2"
;!@InstallEnd@!
Это беcключевой "тихий" SFX архив. Архив при запуске незаметно (диалог распаковки не отображается, GUIMode="2") распакует содержимое во временную папку и запустит "setup.exe /s" для автоматической установки ПО. Временная папка будет удалена по окончании установки.
Если нужно не удалять временную папку, можно воспользоваться параметром InstallPath="путь" (содержимое архива тогда распакуется в указанную папку)
IgorLyahov
15-03-2009, 16:45
Вся проблема в том что временная папка удаляется сразу после начала устаеовки, а не после окончания. Раньше много раз проделывал подобную операцию и никогда такой проблемы не было.
Попробую указать путь для распаковки и после установки его удалять.
Вся проблема в том что временная папка удаляется сразу после начала устаеовки, а не после окончания. »Ваша проблема очевидно в дочерних процессах. После запуска инсталлятора командой RunProgram="setup.exe /S /v/qn" он видимо запускает дочерний процесс и закрывает основной. Модуль видит, что процесс setup.exe завершился и удаляет временную папку, т.к., он не может отследить все дочерние процессы запущенные инсталлятором.
IgorLyahov
16-03-2009, 06:31
Да, так и есть. Если указать InstallPath, то все становиться хорошо, просто после окончания установки надо не забыть ее удалить.
Спасибо.
RunProgram="setup.exe /S /v/qn" »
замени на RunProgram="start /wait setup.exe /S /v/qn"
замени на RunProgram="start /wait setup.exe /S /v/qn" »
Этого делать не надо!
1 Команда start может использоваться только через запуск cmd интерпретатора, т.е. так:RunProgram="cmd /c start /wait setup.exe /S /v/qn"
2 Команда RunProgram и так ожидает завершения запущенного ей процесса и добавление start /wait ни чего не даст.
Тогда от автора не хватает данных - на чем конкретно осбирается - на стабле или на бета? Возможно что-то не учтено
Команда RunProgram и так ожидает завершения запущенного ей процесса »
А у меня почему то при таком содержимом config.txt (автоустановщика Nero9)
;!@Install@!UTF-8!
RunProgram="Setupx.exe /i /qb SERIALNUMBER=\"xxx\" EULAACCEPTED=\"1\" INCLANGUAGES=\"RUS\""
GUIMode="2"
RunProgram="hidcon:delfieles.cmd"
;!@InstallEnd@!
первой выполняется delfieles.cmd, после чего Setupx.exe начинает отрабатываться, но "сваливается"...
(Вместо delfieles.cmd пробовал скомпиллированный из него EXE_шник - тот же результат)
Хотя в хелпе сказано :
Команд запуска программ в каждом типе ('AutoInstall', 'AutoInstallX' и 'RunProgram') может быть несколько, обрабатываются они (в пределах каждого типа) в той последовательности, в которой указаны в файле конфигурации, при этом ожидается окончание предыдущей команды, а после этого запускается следующая.
Или я что то напутал...
MKN, возможную причину описал здесь (http://forum.oszone.net/post-1064589.html#post1064589), т.е., дочерние процессы!
Проверить очень просто:
Создайте батник с двумя строками:Setupx.exe /i /qb SERIALNUMBER="xxx" EULAACCEPTED="1" INCLANGUAGES="RUS"
pause Положите его рядом с вашим файлом Setupx.exe, запустите и посмотрите когда появится сообщение "Для продолжения нажмите любую клавишу . . ." в окне консоли.
Как только оно появилось, значит инсталлятор закрыл основной процесс. Полностью он при этом отработал или нет, проверяйте.
gora,
Сообщение "Для продолжения нажмите любую клавишу . . ." после запуска батника появляется почти сразу. А вот окно самого инсталлятора открывается с ощутимой задержкой, после чего начинается процесс установки, также довольно-таки длительный...
Может эти временные задержки и "путают" очерёдность запуска моего RunProgram="hidcon:delfieles.cmd" ?
Возможно ли в таком случае задать запуск этого файла с n_ной временной задержкой ? Как это можно сделать практически ?
Сообщение "Для продолжения нажмите любую клавишу . . ." после запуска батника появляется почти сразу. А вот окно самого инсталлятора открывается с ощутимой задержкой, после чего начинается процесс установки, также довольно-таки длительный... »Что и требовалось доказать! Файл Setupx.exe после старта запускает какой то дочерний процесс (который и производит установку), а может и не один и после этого сразу же закрывается. Об этом красноречиво говорит появившееся сообщение в окне консоли. Так что модуль тут не виноват он как и cmd не может отследить работу и завершение дочерних процессов. Они контролируют только запущенный ими самими процесс, в данном случае Setupx.exe!Может эти временные задержки и "путают" очерёдность запуска »Как Вы надеюсь поняли путаницы ни какой нет, все команды выполняются по порядку, но Вам нужно как то задержать запуск delfieles.cmd до завершения установки основного приложения. Возможно ли в таком случае задать запуск этого файла с n_ной временной задержкой ? Как это можно сделать практически ? »
Сделать задержку между командами можно разными способами, вот самый простой:;!@Install@!UTF-8!
RunProgram="Setupx.exe /i /qb SERIALNUMBER=\"xxx\" EULAACCEPTED=\"1\" INCLANGUAGES=\"RUS\""
RunProgram="hidcon:ping -n N 127.0.0.1"
RunProgram="hidcon:delfieles.cmd"
GUIMode="2"
;!@InstallEnd@! Вместо N подставьте время (в секундах) заведомо большее процесса установки программы.
Habetdin
22-03-2009, 10:55
Модуль "не умеет сам" менять иконку SFX архива
я знаю, что "Кнопка для работы с 7z SFX архивами в TC" от gora умеет менять иконку... может быть Oleg_Sch и gora объединят силы, чтобы в 7z SFX Tools была "кнопка", работающая без TC?
хочется что-то вроде "выберите файл архива, иконку, файл копирайтов, файл конфигурации и нажмите "Создать" " :)
Oleg_Sch,
Хочу сказать Большое спасибо за Ваш модифицированный модуль. Просто замечательно делать на нём установщики и собирать плагины для PE.
Видел что уже просили сделать поддержку шифрованных архивов, но не смог удержаться и не повторить эту просьбу. Уж очень достают любопытные антивирусы.
Так что модуль тут не виноват он как и cmd не может отследить работу и завершение дочерних процессов. Они контролируют только запущенный ими самими процесс, в данном случае Setupx.exe! »
Всё-таки способ задержки между командами методом принудительного пингования оказался не удачным (для моего случая)
Плюс ко всему - время отработки процессов различно на разных машинах.
А помог контроль запущенного процесса с помощью tasklist (http://www.windowsfaq.ru/content/view/67/57/).
Всё отрабатывается чётко и последовательно. Никакие дочерние процессы теперь модулю не помеха !
В config.txt запускается первым RunProgram, командный файл такого содержания :
@echo off
Setupx.exe /i /qb SERIALNUMBER="XXX" EULAACCEPTED="1" INCLANGUAGES="RUS""
:ns_loop
tasklist /FI "Imagename eq setupx.exe" /nh 2> nul | find /i "setupx.exe" > nul
if errorlevel 1 (
exit )
echo ......
sleep 1
goto ns_loop
sleep.exe - утилитка для временной задержки, дабы не загружать проц во время выполнения командного файла (без неё у меня загрузка была под 100% !)
А затем, как обычно, запускаем следующий RunProgram и т.д. Ессно в первый командный файл можно ещё много чего поместить (удаление файлов, манипуляцию с сиcтемным временем для не долго живущих ключей триалов, как у меня в Nero9 и т.д.).
может быть Oleg_Sch и gora объединят силы »
Они уже объединены, в результате и появилась кнопка со всеми ее возможностями. ;)7z SFX Tools была "кнопка"»
Что то Вы путаете. В 7z SFX Tools от Oleg_Sch вообще нет ни чего похожего. Очевидно Вы имеете ввиду GUI (графической оболочки) для создания 7-zip SFX с модифицированным модулем ... Автор GUI - hobbeat. »
тогда и просьбы надо направлять к hobbeat.работающая без TC »
Что же Вам так ТС не нравится!? Рассматривайте его как оболочку к кнопке (размер не такой уж большой, может использоваться в триальном режиме неограниченное время)! :)Всё-таки способ задержки между командами методом принудительного пингования оказался не удачным (для моего случая) »Я и не утверждал, что это лучший вариант, Вы спросили про задержку - я Вам ответил. Про вариант с tasklist я знаю и использую, ноНикакие дочерние процессы теперь модулю не помеха ! »
я бы не был столь категоричным. Отслеживание дочерних процессов задача не простая да и самих процессов может быть несколько, с разными именами и запускаемыми в ходе установки несколько раз. Это большое поле для экспериментов!
Что же Вам так ТС не нравится!? Рассматривайте его как оболочку к кнопке (размер не такой уж большой, может использоваться в триальном режиме неограниченное время)! »
TC мне например очень нравиться :)
Но отсутствие притензий у автора, не говорит о том, что у так называемых правоохранительных органов притензий не будет. тк лицензионное соглашение нарушено...
Вы имеете право опробовать эту программу в течение одного месяца. Вам разрешается копировать эту условно-бесплатную версию (и ТОЛЬКО её) и передавать другим людям на любой срок, пока она не модифицируется. Под модификацией понимается изменение, добавление или удаление любых файлов этого пакета без письменного разрешения автора. Вам НЕ разрешается комплектовать эту программу вместе с другой коммерческой программой или книгой. Дилерам условно-бесплатных программ разрешается продавать Shareware-версию за небольшую плату (примерно CHF/US$ 10.-). Покупателю должно быть ясно, что он не получает версию для неограниченного использования! Приветствуется размещение этой программы на возможно большем числе BBS. Распространение на CD-ROM также допускается, пока исходные файлы не модифицированы. Пожалуйста, свяжитесь со мной, если вы хотите распространять программу с другой программой установки, изменёнными файлами и т.д. Программы, обозначенные как "Beta" или "Release candidate", не могут распространяться ни при каких условиях. Использование этой программы после испытательного срока в один месяц является нарушением международного законодательства об авторских правах! Это также несправедливо по отношению к автору, потратившему сотни часов на разработку этой программы.
Habetdin
25-03-2009, 10:40
Что то Вы путаете. В 7z SFX Tools от Oleg_Sch вообще нет ни чего похожего. »
я написал чтобы в 7z SFX Tools была "кнопка", работающая без TC »
Очевидно Вы имеете ввиду
Цитата Oleg_Sch:GUI (графической оболочки) для создания 7-zip SFX с модифицированным модулем ... Автор GUI - hobbeat. »
тогда и просьбы надо направлять к hobbeat. »
Конфигуратор для 7-zip SFX
эта оболочка только создает файл конфигурации
я же хотел, чтобы появился новый инструмент в составе 7z SFX Tools, по возможностям похожий на "кнопку". так сказать "антисплиттер", умеющий менять иконку...
вот было похожее предложение (http://forum.oszone.net/post-581814-171.html)
Господа, подскажите, пожалуйста, КАК и чем в командном файле (строке) распаковать 7z sfx-архив на составляющие, т.е. 7z архив, файл конфигурации, иконку, файл ресурсов и SFX модуль!
Позалуста! Осяня не хватает! :)
tipclose
30-03-2009, 12:38
pahan22, качаеш вот отсюда скажем этот файл (http://7zsfx.info/files/7zsd_tools_126_1307_ru.exe), после установки тебе нужен будет 7ZSplit.exe, а там уже разберешся. Файл ресурсов можно получить с помощью программы типа Restorator2007.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.