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

Ответить
 • Просмотры: 28
Аватара пользователя
Ж.Д.А.Л.К.Е.Р.

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

Сообщение Ж.Д.А.Л.К.Е.Р. »

Victor_Man, И снова Tasklist /FO CSV /FI "IMAGENAME eq %zz_M%" /NH, который не работает на 2003.
Аватара пользователя
CryptoNick

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

Сообщение CryptoNick »

Залез я в старую версию кнопки gora и нашел микро утилиту tasktool.exe ~2kb она умеет убивать и получать список процессов VT 1/57

Ссылка
на инсталлер кнопки

Пример:

tasktool -kn totalcmd.exe убить

tasktool -la получить список
Аватара пользователя
mbsystem

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

Сообщение mbsystem »

Цитата Ж.Д.А.Л.К.Е.Р.:

В справке по модифицированному модулю смотрим раздел "Файл конфигурации":
Модифицированный SFX модуль 7-Zip'а для установок


Ну, это то я все знаю прекрасно...но оно проблемы не решает.

В ДЕЙСТВИТЕЛЬНОСТИ ВСЕ НЕ ТАК, КАК НА САМОМ ДЕЛЕ Изображение

Слэш то в переменной и с ним ничего нельзя сделать.



Вот пример.

У разных юзеров назначен %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 и обрабатывает эту ситуацию, чтобы не было коллизий.
Аватара пользователя
mbsystem

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

Сообщение mbsystem »

ya158

Ну, чем больше вариантов - тем лучше, есть из чего выбрать Изображение

Без командного файла - это хороший вариант, в принципе.

Я не делаю сложных проектов, поэтому стараюсь делать из простых элементов.

Ну, и также размышления:

Я остался на варианте с файлом, который вторая копия запускает из разархивированной первой.

Соответственно, при запуске первой копии такого файла нет вообще (т.к. не было еще разархивации).

Дело в том, что я вдруг сделал SFX на AusLogic Disk Defrag, а он при запуске загружает систему до 100%.

И...с удивлением обнаружил, что при такой нагрузке бывают сбои в TaskKill - и второй процесс тоже запускается!

Особенно, если кликнуть еще пару раз для тестирования. Я стал тестировать, запуская сборки из .cmd по 5 штук Изображение

Понятно, что такого не может быть реально, но захотелось "разобраться досконально".

Вспомнил молодость с отладкой задач в реальном времени, с логами.

Выяснил, что иногда последний PID не свой, т.е. задачи убивают друг друга, вот тут и могут быть проблемы.

А вот если запрашивать не последний процесс, а PID родителя через WMIC, то там получается всегда свой PID.

Но там что-то все так медленно ворочается - я от варианта c WMIC отказался.

Одним словом, самый устойчивый оказался именно вариант с файлом, который вторая копия запускает из разархивированной первой.

Но еще раз - это все для запредельных вариантов, которые в жизни не встретятся...

===================================================

Добавил альтернативный вариант z1_KillTask.cmd (на WMIC/TaskKill вместо TaskList/TaskKill) - в принципе то он рабочий.

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

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

Сообщение Victor_Man »

Ж.Д.А.Л.К.Е.Р.,

Только сейчас дошло, что проблема в /FI "IMAGENAME eq XXXX"....я прошлый раз не так понял.

2003 у меня нет, проверить негде.

Через полчасика переделаю, все-равно была еще ошибочка (ее я уже исправил).
Аватара пользователя
Victor_Man

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

Сообщение Victor_Man »

Victor_Man, Так все работает????

Если такая длинная строчка, можно ее и на части разделить, для удобочитаемости...

Создавать, например, батник построчно...
Аватара пользователя
Ж.Д.А.Л.К.Е.Р.

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

Сообщение Ж.Д.А.Л.К.Е.Р. »

Еще как в тему... Как я писал, в WinPE может и не быть taskkill и tasklist
Аватара пользователя
magsood

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

Сообщение magsood »

Цитата Victor_Man:



Я не делаю сложных проектов, поэтому стараюсь делать из простых элементов.
Модифицированный SFX модуль 7-Zip'а для установок




Я и не говорю, что SFX 7-zip предназначен для сложных проектов. Например, установить AkelPad с нормальной заменой Блокнота гораздо проще с помощью nsis.

Я сделал свой Конструктор для упрощения составления файла конфигурации (чтобы не акцентировать свое внимание на правильности синтаксиса файла конфигурации - там слеш не задвоил, тут кавычки не заэкранировал) и для наиболее корректной деинсталляции, т.к. сам модуль SFX в явном виде не дает инструментов деинсталляции. Предотвращение повторного запуска удаление прерванной установки лично для меня не столь интересны, как, например, закрепление программы на панели задач с правами администратора или даже просто присвоение прав администратора ярлыку, созданному с помощью модуля.


Цитата Victor_Man:



Выяснил, что иногда последний PID не свой
Модифицированный SFX модуль 7-Zip'а для установок




А чей же тогда PID? У двух процессов одинаковый PID?


Цитата Victor_Man:



А вот если запрашивать не последний процесс, а PID родителя через WMIC
Модифицированный SFX модуль 7-Zip'а для установок




Недопонял - PID какого родителя?




Цитата CryptoNick:



Еще как в тему... Как я писал, в WinPE может и не быть taskkill и tasklist
Модифицированный SFX модуль 7-Zip'а для установок




Ну ради таких WinPE таскать в дистрибутиве дополнительный файл - это как-то.... Если я не ошибаюсь, то taskkill/tasklist просто файлы. Тогда проще на той же флешке, где находятся инсталляторы иметь taskkill/tasklist, а в инсталляторах для этого случая организовать добавку пути к taskkill/tasklist в Path. А еще проще вставить в такой WinPE taskkill/tasklist.... Да и вообще - представим очень маловероятный сценарий: Запустили WinPE и обнаружили, что в оси нет необходимой, уже проинсталлированной, программы - решили установить и случайно запустили установку дважды. Ещё более маловероятно, что такая двойная установка что-то накосячит в WinPE или в самой программме, но и в этом случае можно просто перезагрузиться и снова аккуратно проинсталлировать нужную программу...
Аватара пользователя
magsood

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

Сообщение magsood »

ya158,
Цитата:



Я сделал свой Конструктор для упрощения составления файла конфигурации



Ну не знаю, как упрощение.... Я в нем так и не разобрался... Как и в кнопке gora

И таких как я много...

Как альтернативу, всему мудреному, заумному, написал свою программу
7z SFX Constructor - создание SFX архивов



Цитата:



Ну ради таких WinPE таскать в дистрибутиве дополнительный файл - это как-то....



Одна утилита весит два килобайта, другая 8 килобайт.

Можно использовать первую... А вес у нее почти такой же как у батника-убийцы дубликата.


Цитата:



решили установить и случайно запустили установку дважды. Ещё более маловероятно, что такая двойная установка что-то накосячит в WinPE или в самой программме, но и в этом случае можно просто перезагрузиться и снова аккуратно проинсталлировать нужную программу...



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

При повторном запуске проекта и его закрытии, все не заблокированные файлы первого проекта, удаляются.

И если первому, они понадобятся, то будет ошибка...
Аватара пользователя
Victor_Man

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

Сообщение Victor_Man »

Цитата CryptoNick:



Ну не знаю, как упрощение...
Модифицированный SFX модуль 7-Zip'а для установок




Упрощение - ну, например, не надо в длинной строке внимательно отслеживать экранировку кавычек. У меня из-за невнимательности частенько бывает, что не замечаю в середине длинной строки, что не поставил слеш перед кавычками. Также, например, не надо вспоминать правильный синтаксис записи в реестр - указал в system.ini куст, имя и значение параметра и все. Надо изменить что-то в определенной секции - не нужно искать по всему файлу конфигурации. Я частенько пересобираю инсталляторы и мне проще просто запустить простой cmd-шник, зная, что он не просто соберет инсталлятор, но и также выставит в его свойствах соответствующие записи. А также автоматическое создание деинсталляции... Как-то так...


Цитата CryptoNick:



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




Если есть такое желание - прошу в соответствующую тем. С удовольствием помогу разобраться, заодно может найдутся какие-нибудь ошибки или подскажите путь для упрощения/модификации...


Цитата CryptoNick:



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




В ней я вижу только одну полезную функцию - быстро посмотреть файл конфигурации (все собираюсь сделать свою кнопку только для этой функции, но все руки не доходят). Распаковывать лучше с помощью самого 7-zip или с помощью UniversalExtractor-a, а создавать SFX мне проще батником.


Цитата CryptoNick:



Как альтернативу, всему мудреному, заумному, написал свою программу...
Модифицированный SFX модуль 7-Zip'а для установок




Можно по-подробнее?...


Цитата CryptoNick:



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




Дело не в весе... Просто я считаю, что в дистрибутиве программы должна быть только сама программа и никаких служебных файлов.
Ответить

Вернуться в «Автоматическая установка Windows 2000/XP/2003»