Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » Модифицированный SFX модуль 7-Zip'а для установок

Ответить
Настройки темы
Модифицированный SFX модуль 7-Zip'а для установок

Старожил


Сообщения: 341
Благодарности: 128


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Petya V4sechkin
Дата: 02-11-2017




Модифицированный 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 архив
  • и многое другое...

Домашняя страница | Страница загрузок
Зеркал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
читать дальше »



Q:
Цитата:
Как извлекать определенные папки, в зависимости от разрядности системы/варианта установки и т.д
A: Такой возможности нет, SFX архив распаковывается полностью


Q:
Цитата:
а можно ли для sfx архива задавать пароль который при обычном запуске sfx архива как бы не запрашивался и сам вводился, а при попытке просто распаковать архив этот пароль запрашивался
A: Нельзя. Модули с данной поддержкой официально недоступны. Пока, пользуясь своей "властью", я даю такие модули только тем, кто мне помогает/прикладывает какие-то усилия в развитии самого модуля, справки к нему и сопутствующих файлов. Считайте это моим эгоизмом.

Это сообщение посчитали полезным следующие участники:
Показать/скрыть список поблагодаривших

Отправлено: 06:20, 11-07-2005

 

Новый участник


Сообщения: 40
Благодарности: 1

Профиль | Отправить PM | Цитировать


Еще раз вернулся к скриптам защиты от повторного запуска и сбоев:
http://forum.oszone.net/post-2688624.html#post2688624
Собственно, теперь скрипт формируется и запускается на выполнение прямо в PreExtract (в папке %SfxVarApiPath%):
Код: Выделить весь код
PreExtract="%%P:hidcon:cmd.exe /c \"(echo set zz_T=%zz_T:\\\\=\\%&echo For /F \"Skip=1 Tokens=1,2 Delims=,\" %%I In ^('Tasklist /FO CSV /FI \"IMAGENAME eq %zz_M%\" /NH '^) Do ^(If %%I==\"%zz_M%\" Set PID=%%~J^)&echo If Defined PID ^(cd /d \"%TEMP\"%^&rd /s /q \"%SfxVarApiPath%\"^&TaskKill /PID %PID% /T /F^)&echo If Exist \"%zz_T%\z3_Stop.cmd\" ^(cd /d \"%zz_T%\"^&call z3_Stop.cmd^))>z1_TaskKill.cmd\"&z1_TaskKill.cmd"
Одна дли-и-и-и-нная строчка но менять ее не нужно.
=====================================
Какая-то непонятная ситуация возникает - пока удалил

Последний раз редактировалось Victor_Man, 27-01-2017 в 14:06. Причина: Доработка


Отправлено: 02:39, 27-01-2017 | #1801



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 40
Благодарности: 1

Профиль | Отправить PM | Цитировать


Ж.Д.А.Л.К.Е.Р.,
Только сейчас дошло, что проблема в /FI "IMAGENAME eq XXXX"....я прошлый раз не так понял.
2003 у меня нет, проверить негде.
Через полчасика переделаю, все-равно была еще ошибочка (ее я уже исправил).

Отправлено: 19:35, 27-01-2017 | #1802


Пользователь


Автор проектов


Сообщения: 91
Благодарности: 19

Профиль | Отправить PM | Цитировать


Victor_Man, Так все работает????
Если такая длинная строчка, можно ее и на части разделить, для удобочитаемости...
Создавать, например, батник построчно...

Отправлено: 19:59, 31-01-2017 | #1803


Аватара для Ж.Д.А.Л.К.Е.Р.

Ветеран


Contributor


Сообщения: 1861
Благодарности: 868

Профиль | Отправить PM | Цитировать


Victor_Man, Tasklist из 2003 сервера тупо не находит процесс если использовать встроенный фильтр, поэтому формируем список всех процессов и дальше его разбираем другими командами.
tasklist x86/x64 из 2003, переименовать чтоб имя не совпадало с системным и закинуть в одну из папок %Path%. Так на другой Windows (проверил на Хр х86 и 7 х64) можно воспроизвести проблему 2003-го Tasklist-а.


CryptoNick, Нет, там все по старому.
Цитата CryptoNick:
Создавать, например, батник построчно... »
Вот батник.

Отправлено: 10:42, 01-02-2017 | #1804


Аватара для magsood

Новый участник


Сообщения: 11
Благодарности: 1

Профиль | Отправить PM | Цитировать


How last version 7zsd?!

Отправлено: 14:03, 01-02-2017 | #1805


Пользователь


Автор проектов


Сообщения: 91
Благодарности: 19

Профиль | Отправить PM | Цитировать


magsood, Вот
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:32, 01-02-2017 | #1806


Новый участник


Сообщения: 40
Благодарности: 1

Профиль | Отправить PM | Цитировать


CryptoNick,
Так я так и делал, это в Preextract строчка одна, а .cmd создается многострочный.
V2 вроде рабочий, но.....после длительного тестирования - запускал из .cmd несколько копий - он более чувствительный, иногда, хотя и редко, копии оставались в памяти. Реально такого частого запуска не быть может, конечно, но, тем не менее, как говорится - лучшее враг хорошего. Немного подшаманил V1 (мод. варианта Ж.Д.А.Л.К.Е.Р) - должен работать на W2003:
http://forum.oszone.net/post-2688624.html#post2688624
Все-таки жалко, что Олег не сделал функции выхода из программы...но, что есть, то есть.

Последний раз редактировалось Victor_Man, 08-02-2017 в 13:22.


Отправлено: 20:40, 05-02-2017 | #1807


Новый участник


Сообщения: 40
Благодарности: 1

Профиль | Отправить PM | Цитировать


Кстати, столкнулся с еще одной "базовой" проблемой (долго не мог понять, в чем дело):
Windows всегда (наверное?) принимает в пути \\ за \
Для примера, вот так файл Test.txt распечатывается без проблем:
Код: Выделить весь код
@echo off
set "TEMP=C:\AA BB\"
echo %TEMP%
type "%TEMP%\Test.txt"
type "C:\\AA BB\\Test.txt"
Pause
А вот 7zSFX этого не понимает. С проблемой приходится сталкиваться, например, когда назначается:
Код: Выделить весь код
InstallPath="%TEMP%\PathProgram"
Все прекрасно работает, пока не попадается система, где назначен TEMP с концевым флэшем.
Этот флэш остается в InstallPath и при попытке загрузить программу по RunProgram 7xSFX не находит файл программы!
С одной стороны, вроде в %TEMP% слэша не должно быть, но явно нигде не указано.
И некоторые в процессе настройки системы под себя его ставят. В основном - "старые волки", которые еще DOS помнят.
И вот возникают проблемы с некоторыми программами, они часто неявные, непонятные и не критические, но...7z SFX этому пример.
Неприятно, т.к. мало ли куда может попасть разработанная сборка...всем заранее не укажешь, что %TEMP% без слэша д.б.
Реального универсального выхода из этой проблемы в 7zSFX я не нашел.
Ну, точнее, один есть - все делать через .cmd и cmd /c, но это выход не универсальный.
Может, кто-нибудь все-таки нашел?

Отправлено: 13:24, 08-02-2017 | #1808


Аватара для Ж.Д.А.Л.К.Е.Р.

Ветеран


Contributor


Сообщения: 1861
Благодарности: 868

Профиль | Отправить PM | Цитировать


Цитата Victor_Man:
Windows всегда (наверное?) принимает в пути \\ за \ »
В справке по модифицированному модулю смотрим раздел "Файл конфигурации":
Цитата:
ВАЖНО! Следующие двухсимвольные последовательности в "значение_параметра" заменяются односимвольными:

\\ = \
\" = "
\n = перевод строки
\t = табуляция
Если надо указать обратный слеш (\) (например, в путях или тексте диалога), НЕОБХОДИМО использовать ДВОЙНОЙ (\\), а если "значение_параметра" или текст диалога содержит кавычки ("), НЕОБХОДИМО перед ними использовать обратный слеш (\") (правило "лидирующего слеша").

Двухсимвольные последовательности \n и \t зависят от регистра. Т.е., \N и \T НЕ будут заменяются односимвольными.

Отправлено: 21:44, 08-02-2017 | #1809


Ветеран


Автор проектов


Сообщения: 1579
Благодарности: 496

Профиль | Отправить 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.~ будет находится в папке, в которую должна будет установиться программа, то после окна предупреждения команды для деинсталляции из него будут выполнены, удалена папка с программой и процесс инсталляции таксккиллится.

-------
Объективная реальность есть бред, вызванный недостатком алкоголя в крови.
Оптимизм есть недостаток информации.
Хочу быть змеёй, чтобы на работу лёжа ходить.
Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы


Отправлено: 16:16, 10-02-2017 | #1810



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » Модифицированный SFX модуль 7-Zip'а для установок

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Горячие клавиши для восстановления заводских установок ноутбуков 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




 
Переход