Модифицированный SFX модуль 7-Zip'а для установок
-
Ж.Д.А.Л.К.Е.Р.
Re: Модифицированный SFX модуль 7-Zip'а для установок
Victor_Man, И снова Tasklist /FO CSV /FI "IMAGENAME eq %zz_M%" /NH, который не работает на 2003.
-
CryptoNick
Re: Модифицированный SFX модуль 7-Zip'а для установок
Залез я в старую версию кнопки gora и нашел микро утилиту tasktool.exe ~2kb она умеет убивать и получать список процессов VT 1/57
Пример:
tasktool -kn totalcmd.exe убить
tasktool -la получить список
Ссылка
на инсталлер кнопкиПример:
tasktool -kn totalcmd.exe убить
tasktool -la получить список
-
mbsystem
Re: Модифицированный 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)
====================================
Короче, дольше писать - вот сделал за три минуты три примера.
Запустите в каждом zz_Start.CMD и посмотрите результат.
Я писал именно об этом. О том, что мы не можем всех заставить поубирать слэши из TEMP.
Ну, остается вариант сказать сами виноваты...либо писать cmd /c или waitall.
====================================================
Разбираться стал, когда стали сообщать: Сборка не работает, не запускается даже!!! Одна, другая...- совершенно разные.
После разборок - вот она причина, %TEMP% со слешем.
Кстати, этим грешат "старые волки", которые DOS еще помнят, а там %TEMP% со слешем был почти за правило.
Видимо, с тех пор Windows и обрабатывает эту ситуацию, чтобы не было коллизий.
В справке по модифицированному модулю смотрим раздел "Файл конфигурации":
Модифицированный 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'а для установок
ya158
Ну, чем больше вариантов - тем лучше, есть из чего выбрать
Без командного файла - это хороший вариант, в принципе.
Я не делаю сложных проектов, поэтому стараюсь делать из простых элементов.
Ну, и также размышления:
Я остался на варианте с файлом, который вторая копия запускает из разархивированной первой.
Соответственно, при запуске первой копии такого файла нет вообще (т.к. не было еще разархивации).
Дело в том, что я вдруг сделал SFX на AusLogic Disk Defrag, а он при запуске загружает систему до 100%.
И...с удивлением обнаружил, что при такой нагрузке бывают сбои в TaskKill - и второй процесс тоже запускается!
Особенно, если кликнуть еще пару раз для тестирования. Я стал тестировать, запуская сборки из .cmd по 5 штук
Понятно, что такого не может быть реально, но захотелось "разобраться досконально".
Вспомнил молодость с отладкой задач в реальном времени, с логами.
Выяснил, что иногда последний PID не свой, т.е. задачи убивают друг друга, вот тут и могут быть проблемы.
А вот если запрашивать не последний процесс, а PID родителя через WMIC, то там получается всегда свой PID.
Но там что-то все так медленно ворочается - я от варианта c WMIC отказался.
Одним словом, самый устойчивый оказался именно вариант с файлом, который вторая копия запускает из разархивированной первой.
Но еще раз - это все для запредельных вариантов, которые в жизни не встретятся...
===================================================
Добавил альтернативный вариант z1_KillTask.cmd (на WMIC/TaskKill вместо TaskList/TaskKill) - в принципе то он рабочий.
Ну, чем больше вариантов - тем лучше, есть из чего выбрать

Без командного файла - это хороший вариант, в принципе.
Я не делаю сложных проектов, поэтому стараюсь делать из простых элементов.
Ну, и также размышления:
Я остался на варианте с файлом, который вторая копия запускает из разархивированной первой.
Соответственно, при запуске первой копии такого файла нет вообще (т.к. не было еще разархивации).
Дело в том, что я вдруг сделал 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'а для установок
Ж.Д.А.Л.К.Е.Р.,
Только сейчас дошло, что проблема в /FI "IMAGENAME eq XXXX"....я прошлый раз не так понял.
2003 у меня нет, проверить негде.
Через полчасика переделаю, все-равно была еще ошибочка (ее я уже исправил).
Только сейчас дошло, что проблема в /FI "IMAGENAME eq XXXX"....я прошлый раз не так понял.
2003 у меня нет, проверить негде.
Через полчасика переделаю, все-равно была еще ошибочка (ее я уже исправил).
-
Victor_Man
Re: Модифицированный SFX модуль 7-Zip'а для установок
Victor_Man, Так все работает????
Если такая длинная строчка, можно ее и на части разделить, для удобочитаемости...
Создавать, например, батник построчно...
Если такая длинная строчка, можно ее и на части разделить, для удобочитаемости...
Создавать, например, батник построчно...
-
Ж.Д.А.Л.К.Е.Р.
Re: Модифицированный SFX модуль 7-Zip'а для установок
Еще как в тему... Как я писал, в WinPE может и не быть taskkill и tasklist
-
magsood
Re: Модифицированный SFX модуль 7-Zip'а для установок
Цитата Victor_Man:
Я не делаю сложных проектов, поэтому стараюсь делать из простых элементов.
Я и не говорю, что SFX 7-zip предназначен для сложных проектов. Например, установить AkelPad с нормальной заменой Блокнота гораздо проще с помощью nsis.
Я сделал свой Конструктор для упрощения составления файла конфигурации (чтобы не акцентировать свое внимание на правильности синтаксиса файла конфигурации - там слеш не задвоил, тут кавычки не заэкранировал) и для наиболее корректной деинсталляции, т.к. сам модуль SFX в явном виде не дает инструментов деинсталляции. Предотвращение повторного запуска удаление прерванной установки лично для меня не столь интересны, как, например, закрепление программы на панели задач с правами администратора или даже просто присвоение прав администратора ярлыку, созданному с помощью модуля.
Цитата Victor_Man:
Выяснил, что иногда последний PID не свой
А чей же тогда PID? У двух процессов одинаковый PID?
Цитата Victor_Man:
А вот если запрашивать не последний процесс, а PID родителя через WMIC
Недопонял - PID какого родителя?
Цитата CryptoNick:
Еще как в тему... Как я писал, в WinPE может и не быть taskkill и tasklist
Ну ради таких WinPE таскать в дистрибутиве дополнительный файл - это как-то.... Если я не ошибаюсь, то taskkill/tasklist просто файлы. Тогда проще на той же флешке, где находятся инсталляторы иметь taskkill/tasklist, а в инсталляторах для этого случая организовать добавку пути к taskkill/tasklist в Path. А еще проще вставить в такой WinPE taskkill/tasklist.... Да и вообще - представим очень маловероятный сценарий: Запустили WinPE и обнаружили, что в оси нет необходимой, уже проинсталлированной, программы - решили установить и случайно запустили установку дважды. Ещё более маловероятно, что такая двойная установка что-то накосячит в WinPE или в самой программме, но и в этом случае можно просто перезагрузиться и снова аккуратно проинсталлировать нужную программу...
Я не делаю сложных проектов, поэтому стараюсь делать из простых элементов.
Модифицированный 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'а для установок
ya158,
Цитата:
Я сделал свой Конструктор для упрощения составления файла конфигурации
Ну не знаю, как упрощение.... Я в нем так и не разобрался... Как и в кнопке gora
И таких как я много...
Как альтернативу, всему мудреному, заумному, написал свою программу
Цитата:
Ну ради таких WinPE таскать в дистрибутиве дополнительный файл - это как-то....
Одна утилита весит два килобайта, другая 8 килобайт.
Можно использовать первую... А вес у нее почти такой же как у батника-убийцы дубликата.
Цитата:
решили установить и случайно запустили установку дважды. Ещё более маловероятно, что такая двойная установка что-то накосячит в WinPE или в самой программме, но и в этом случае можно просто перезагрузиться и снова аккуратно проинсталлировать нужную программу...
Если извлекать в определенную папку, и потом, после окончания работы, само удалять данную папку...
При повторном запуске проекта и его закрытии, все не заблокированные файлы первого проекта, удаляются.
И если первому, они понадобятся, то будет ошибка...
Цитата:
Я сделал свой Конструктор для упрощения составления файла конфигурации
Ну не знаю, как упрощение.... Я в нем так и не разобрался... Как и в кнопке gora
И таких как я много...
Как альтернативу, всему мудреному, заумному, написал свою программу
7z SFX Constructor - создание SFX архивов
Цитата:
Ну ради таких WinPE таскать в дистрибутиве дополнительный файл - это как-то....
Одна утилита весит два килобайта, другая 8 килобайт.
Можно использовать первую... А вес у нее почти такой же как у батника-убийцы дубликата.
Цитата:
решили установить и случайно запустили установку дважды. Ещё более маловероятно, что такая двойная установка что-то накосячит в WinPE или в самой программме, но и в этом случае можно просто перезагрузиться и снова аккуратно проинсталлировать нужную программу...
Если извлекать в определенную папку, и потом, после окончания работы, само удалять данную папку...
При повторном запуске проекта и его закрытии, все не заблокированные файлы первого проекта, удаляются.
И если первому, они понадобятся, то будет ошибка...
-
Victor_Man
Re: Модифицированный SFX модуль 7-Zip'а для установок
Цитата CryptoNick:
Ну не знаю, как упрощение...
Упрощение - ну, например, не надо в длинной строке внимательно отслеживать экранировку кавычек. У меня из-за невнимательности частенько бывает, что не замечаю в середине длинной строки, что не поставил слеш перед кавычками. Также, например, не надо вспоминать правильный синтаксис записи в реестр - указал в system.ini куст, имя и значение параметра и все. Надо изменить что-то в определенной секции - не нужно искать по всему файлу конфигурации. Я частенько пересобираю инсталляторы и мне проще просто запустить простой cmd-шник, зная, что он не просто соберет инсталлятор, но и также выставит в его свойствах соответствующие записи. А также автоматическое создание деинсталляции... Как-то так...
Цитата CryptoNick:
Я в нем так и не разобрался..
Если есть такое желание - прошу в соответствующую тем. С удовольствием помогу разобраться, заодно может найдутся какие-нибудь ошибки или подскажите путь для упрощения/модификации...
Цитата CryptoNick:
Как и в кнопке gora
В ней я вижу только одну полезную функцию - быстро посмотреть файл конфигурации (все собираюсь сделать свою кнопку только для этой функции, но все руки не доходят). Распаковывать лучше с помощью самого 7-zip или с помощью UniversalExtractor-a, а создавать SFX мне проще батником.
Цитата CryptoNick:
Как альтернативу, всему мудреному, заумному, написал свою программу...
Можно по-подробнее?...
Цитата CryptoNick:
Одна утилита весит два килобайта, другая 8 килобайт.
Дело не в весе... Просто я считаю, что в дистрибутиве программы должна быть только сама программа и никаких служебных файлов.
Ну не знаю, как упрощение...
Модифицированный 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'а для установок
Дело не в весе... Просто я считаю, что в дистрибутиве программы должна быть только сама программа и никаких служебных файлов.