|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » Модифицированный SFX модуль 7-Zip'а для установок |
|
Модифицированный SFX модуль 7-Zip'а для установок
|
Старожил Сообщения: 341 |
Профиль | Сайт | Отправить PM | Цитировать
Модифицированный SFX модуль 7-Zip'а для установок Версия 1.6.1 Stable, сборка 3873 (5 марта 2016 г.) Версия 1.7.0 Develop, сборка 3873 (5 марта 2016 г.) Модифицированный модуль предоставляет широкие возможности для создания SFX архивов. Используя модуль, Вы можете:
Зеркалa: Веб-архив сайта Яндекс.Диск - полный набор OneDrive - полный набор, пароль: 7zsfxmod OneDrive - только модули SFX (7zsd_tools_170_3900.7z) Обсуждение GUI (графической оболочки) для создания 7-zip SFX с модифицированным модулем ведется в этой теме. Автор GUI - hobbeat. Кнопка для работы с 7z SFX архивами в Total Commander-е находится здесь (автор - gora, вечная память) Файлы конфигурации 7z SFX обсуждаются в этой теме (автор - gora) Отдельное спасибо ArtXGroup за финансовую поддержку Теперь модуль будет в двух версиях: 1. Stable. В дальнейшем в нем из изменений будет только исправление ошибок (надеюсь их не будет) и обновление кода самого 7-Zip до последней стабильной версии. 2. Develop->Alpha->Beta. Исходные коды 7-Zip - последняя бета версия самого архиватора, добавление новых функций. FAQ |
|
Отправлено: 06:20, 11-07-2005 |
Ветеран Сообщения: 1576
|
Профиль | Отправить PM | Цитировать Ж.Д.А.Л.К.Е.Р., Victor_Man,
Некоторые размышления по-поводу 1. Предотвращения повторного запуска инсталлятора. Создание какого-либа файла типа z1_KillTask.cmd вообще не требуется. Строка типа ExecuteOnLoad="hidcon:cmd /c FOR /F \"Tokens=1,2\" %I IN ('\"TASKLIST|FINDSTR /BILC:\"%%M\"\"') DO SET /A N+=1&Set PID=%~J&FOR /F \"Tokens=*\" %k IN ('cmd /v:on /C IF !N! GTR 1 ECHO !PID!') DO TASKKILL /F /T /PID \"%k\"" 2. Хорошая идея проверять и удалять инсталляцию, которая по какой-то причине покрашилась. Но что-то не хочется для этого перезагружаться (я по поводу ключа в RunOnce) - ведь инсталляция может прерваться не только из-за вольной или невольной перезагрузки компьютера. Также лично мне не нравится создание в архиве с программой каких-либо дополнительных файлов (я имею в виду z3_Stop.cmd). Помимо этого в этот файл (z3_Stop.cmd) надо занести всю информацию для полной деинсталляции приложения, хотя инсталляция может быть прервана задолго до конца и полная деинсталляция может оказаться избыточной. Но и не это так важно (влиять должно только на время деинсталляции), как, например, то, что при инсталляции ключи реестра могут не просто добавляться/удаляться, а изменяться. В этом случае заранее не известно какое значение ключа реестра было до инсталляции, и, соответственно, что должно быть в реестре после деинсталляции. Отсюда вывод - данные для инсталляции необходимо создавать динамически в самом процессе инсталляции. Причем эти данные можно использовать не только для восстановления системы после неудачной инсталляции, а и просто для обычной деинсталляции впоследствии. Чтобы не быть голословным опять же приведу в пример свой Конструктор инсталляторов на основе 7z SFX. Инсталляторы, созданные с его помощью, в процессе установки формируют файл UnCom.~ в папке с программой. В этот файл записывается все, что делает инсталлятор, в том числе и изменяемые параметры реестра. После установки в реестре создается ветка для деинсталляции программы с помощью стандартного апплета Установка и удаления программ, а команда для деинсталляции использует данные из UnCom.~, которые записываются в реестр, сам файл UnCom.~ после этого удаляется. Так вот, если перед распаковкой программы UnCom.~ будет находится в папке, в которую должна будет установиться программа, то после окна предупреждения команды для деинсталляции из него будут выполнены, удалена папка с программой и процесс инсталляции таксккиллится. |
------- Отправлено: 16:16, 10-02-2017 | #1811 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:44, 10-02-2017 | #1812 |
Ветеран Сообщения: 1576
|
Профиль | Отправить PM | Цитировать sov44,
Я знаю. Просто я ещё добавляю окно с информацией и там приходится городить второй цикл For. Я привел код в качестве того, что можно не создавать доп файл. |
------- Отправлено: 22:20, 10-02-2017 | #1813 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать Цитата Ж.Д.А.Л.К.Е.Р.:
В справке по модифицированному модулю смотрим раздел "Файл конфигурации": » Ну, это то я все знаю прекрасно...но оно проблемы не решает. В ДЕЙСТВИТЕЛЬНОСТИ ВСЕ НЕ ТАК, КАК НА САМОМ ДЕЛЕ Слэш то в переменной и с ним ничего нельзя сделать. Вот пример. У разных юзеров назначен %TEM% так: %TEMP%=C:\Temp - вариант 1 %TEMP%=C:\Temp\ - вариант 2 (т.е. с концевым флэшем - такое встречается, хотя и не слишком часто) и в конфигурационном файле 7zSFX записано: InstallPath="%TEMP%\\PathProg" RunProgram="Program.exe" В варианте 1 7zSFX будет искать программу здесь: %TEMP%\PathProg\Program.exe - он успешно ее найдет и запустит В варианте 2 7zSFX будет искать программу здесь: %TEMP%\PathProg\\Program.exe - и он ее не найдет (!) А вот если доверить вопрос поиска cmd.exe, то все в порядке: RunProgram="cmd /c Program.exe" Также отработает правильно и такая строка: RunProgram="waitall:Program.exe" (видимо потому, что в этом случае используется вызов через cmd.exe) ==================================== Короче, дольше писать - вот сделал за три минуты три примера. https://www.upload.ee/files/6659834/...lPath.rar.html Запустите в каждом zz_Start.CMD и посмотрите результат. Я писал именно об этом. О том, что мы не можем всех заставить поубирать слэши из TEMP. Ну, остается вариант сказать сами виноваты...либо писать cmd /c или waitall. ==================================================== Разбираться стал, когда стали сообщать: Сборка не работает, не запускается даже!!! Одна, другая...- совершенно разные. После разборок - вот она причина, %TEMP% со слешем. Кстати, этим грешат "старые волки", которые DOS еще помнят, а там %TEMP% со слешем был почти за правило. Видимо, с тех пор Windows и обрабатывает эту ситуацию, чтобы не было коллизий. |
Последний раз редактировалось Victor_Man, 11-02-2017 в 00:39. Отправлено: 23:39, 10-02-2017 | #1814 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать ya158
Ну, чем больше вариантов - тем лучше, есть из чего выбрать Без командного файла - это хороший вариант, в принципе. Я не делаю сложных проектов, поэтому стараюсь делать из простых элементов. Ну, и также размышления: Я остался на варианте с файлом, который вторая копия запускает из разархивированной первой. Соответственно, при запуске первой копии такого файла нет вообще (т.к. не было еще разархивации). Дело в том, что я вдруг сделал SFX на AusLogic Disk Defrag, а он при запуске загружает систему до 100%. И...с удивлением обнаружил, что при такой нагрузке бывают сбои в TaskKill - и второй процесс тоже запускается! Особенно, если кликнуть еще пару раз для тестирования. Я стал тестировать, запуская сборки из .cmd по 5 штук Понятно, что такого не может быть реально, но захотелось "разобраться досконально". Вспомнил молодость с отладкой задач в реальном времени, с логами. Выяснил, что иногда последний PID не свой, т.е. задачи убивают друг друга, вот тут и могут быть проблемы. А вот если запрашивать не последний процесс, а PID родителя через WMIC, то там получается всегда свой PID. Но там что-то все так медленно ворочается - я от варианта c WMIC отказался. Одним словом, самый устойчивый оказался именно вариант с файлом, который вторая копия запускает из разархивированной первой. Но еще раз - это все для запредельных вариантов, которые в жизни не встретятся... =================================================== Добавил альтернативный вариант z1_KillTask.cmd (на WMIC/TaskKill вместо TaskList/TaskKill) - в принципе то он рабочий. http://forum.oszone.net/post-2688624.html#post2688624 |
Последний раз редактировалось Victor_Man, 11-02-2017 в 01:16. Отправлено: 00:22, 11-02-2017 | #1815 |
Пользователь Сообщения: 91
|
Профиль | Отправить PM | Цитировать Victor_Man, Со сторонними утилитами, выложенными в теме ранее, не хотите попробовать продолжить эксперименты?
|
Отправлено: 08:30, 11-02-2017 | #1816 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать CryptoNick, какие имеются в виду?
А, tasktool...ну, гляну, может. С убиванием непонятки были - на каждое нормальное завершение taskkill (0) приходилось аж 3 ошибочных (128)... ======= Хотя, для нашего случая (единичный повторный запуск) все описанные решения через taskkill вполне рабочие, так что это уже не в тему, пожалуй. |
Последний раз редактировалось Victor_Man, 11-02-2017 в 10:29. Отправлено: 10:07, 11-02-2017 | #1817 |
Пользователь Сообщения: 91
|
Профиль | Отправить PM | Цитировать Еще как в тему... Как я писал, в WinPE может и не быть taskkill и tasklist
|
Отправлено: 11:09, 11-02-2017 | #1818 |
Ветеран Сообщения: 1576
|
Профиль | Отправить PM | Цитировать Цитата Victor_Man:
Я сделал свой Конструктор для упрощения составления файла конфигурации (чтобы не акцентировать свое внимание на правильности синтаксиса файла конфигурации - там слеш не задвоил, тут кавычки не заэкранировал) и для наиболее корректной деинсталляции, т.к. сам модуль SFX в явном виде не дает инструментов деинсталляции. Предотвращение повторного запуска удаление прерванной установки лично для меня не столь интересны, как, например, закрепление программы на панели задач с правами администратора или даже просто присвоение прав администратора ярлыку, созданному с помощью модуля. Цитата Victor_Man:
Цитата Victor_Man:
Цитата CryptoNick:
|
||||
------- Последний раз редактировалось ya158, 11-02-2017 в 11:47. Отправлено: 11:25, 11-02-2017 | #1819 |
Пользователь Сообщения: 91
|
Профиль | Отправить PM | Цитировать ya158,
Цитата:
И таких как я много... Как альтернативу, всему мудреному, заумному, написал свою программу... Цитата:
Можно использовать первую... А вес у нее почти такой же как у батника-убийцы дубликата. Цитата:
При повторном запуске проекта и его закрытии, все не заблокированные файлы первого проекта, удаляются. И если первому, они понадобятся, то будет ошибка... |
|||
Последний раз редактировалось CryptoNick, 11-02-2017 в 12:02. Отправлено: 11:56, 11-02-2017 | #1820 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Горячие клавиши для восстановления заводских установок ноутбуков | Sparkster | Ноутбуки | 398 | 03-10-2019 15:11 | |
GUI для модифицированного 7-Zip SFX модуля для установок | hobbeat | Автоматическая установка Windows 2000/XP/2003 | 259 | 09-10-2016 07:01 | |
Создание silent 7-zip sfx | mitiya | Автоматическая установка Windows 2000/XP/2003 | 17 | 01-03-2011 22:14 | |
[решено] Как создать модуль SFX? | CtrlSoft | Программное обеспечение Windows | 3 | 13-02-2008 21:31 | |
CMD/BAT - [решено] замена set str2=%str1:.zip/=.zip/!% глючит на пробелах?! | akrav | Скриптовые языки администрирования Windows | 5 | 12-02-2008 11:54 |
|