Еще модифицировал, функции:
- Предотвращение запуска второй копии проекта для исключения нарушения работы первой копии.
- Восстановление измененных файлов и реестра в случае краха или случайной перезагрузки системы во время работы проекта.
https://www.upload.ee/files/6360739/...X_MOD.rar.html
Описание внутри.
Приложен пример для Minitool Partition Wizard.
Пароль - ru-board
=========================
Еще модернизировал - при крахе/перезапуске системы восстанавливается окружение.
Поэтому в сценарии завершения их можно все использовать.
Вроде теперь уже совсем универсально получилось.
https://www.upload.ee/files/6377275/PW91_Fix6.rar.html
Ну и окончательно добил по нюансам с32-битными программами на x64.
И добавил в инструкцию описание по созданию проекта. Приложены три разные проекта.
https://www.upload.ee/files/6397683/7zSFX_Fix9.1.rar.html
Теперь все как-то проще и единообразнее получается - берешь шаблон и правишь.
Попробовал на нескольких проектах - проблем не обнаружил (Win7x86, Win7x64, Win10x64).
================================================
В последней ссылке - Fix9 учтена поправка
Ж.Д.А.Л.К.Е.Р. и добавлена небольшая защита от локального запуска файлов.
Теперь должна работать на ХP(кроме Home)/2003/7/2008 R2/8/10.
================================================
Небольшая модернизация z1_KillTask.cmd - корректное завершение при случайно оставшейся папке в %InstallPath%
https://www.upload.ee/files/6540914/...Fix10.rar.html
Текст z1_KillTask.cmd
Код:
@echo off
:: Exit under the mistaken launch
if NOT "%zz_T%\"=="%~dp0" Exit
cd /d ""%~dp0"
rd "%SfxVarApiPath%"
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)
:: Kill our task, if it is the second
If Defined PID TaskKill /PID %PID% /T /F
:: Otherwise, finish the unfinished previous run and exit to 7zSFX script
if exist z3_Stop.cmd z3_Stop.cmd
По смыслу примерно то же, что [у]Ж.Д.А.Л.К.Е.Р[/b] тут
http://forum.oszone.net/post-2694448.html#post2694448
Плюс корректное удаление некорректно завершенного предыдущего старта (последняя команда - if exist z3_Stop.cmd z3_Stop.cmd).
========================================================================
Ну, и еще раз вернусь к этому вопросу. В предыдущем варианте использовался z1_KillTask.cmd от первого запущенного проекта.
Основная причина - на момент выполнения PreExtract нет еще никаких файлов (скриптов) для управления.
Сделал вариант v2 - скрипт создается непосредственно в команде PreExtract:
Решил отказаться от варианта с созданием z1_KillTask.cmd в команде PreExtract. Он вроде
рабочий, но.....после длительного тестирования - запускал из .cmd несколько копий - он более чувствительный, иногда, хотя и редко, копии оставались в памяти. Реально таких многократных запусков быть не может, конечно, но, тем не менее, как говорится - лучшее враг хорошего.
Немного подшаманил V1 (мод. варианта
Ж.Д.А.Л.К.Е.Р - должен работать на W2003:
https://www.upload.ee/files/6672538/7zSFX_MOD_v12.rar.html