gora
21-03-2013, 14:52
Прошу помощи в поиске причин и возможных решений
Проблема:
Я создаю в контекстном меню пункт "Запустить с параметрами (Test) ..." для запуска exe файлов с параметрами. Но в некоторых случаях такой запуск приводит к краху оболочки из которой он произведен.
Тестировал запуск из Total Commander (далее ТС) обеих разрядностей (х64 и х86) и Explorer. Крах наблюдается только в х64 приложениях и ни когда в х86, хотя файлы используются одни и те же. Если запуск произведен из контекстного меню в оболочке, то крашится оболочка, если из TC, то крашится ТС.
При запуске из батника (выполняется та же самая команда запуска vbs скрипта, что и из контекстного меню) или самого vbs скрипта краха не наблюдается.
Удалось выяснить, что крах вызывает определенная команда в exe файле. У меня это SFX - установщик архиватора 7-zip с батником внутри. В батнике есть команда для удаления ранее установленных версий архиватора:
For /L %%i In (20,1,%numF%) Do MsiExec /qn /x{23170F69-40C1-270%dI%-09%%i-000001000000} подробнее можно посмотреть в самом батнике (setup7z.cmd) исходники все прикреплены.
При отработке именно этой команды и происходит крах. Если удалять нечего (нет установленного 7-zip), то команда отрабатывает вхолостую без ошибок.
Все, что может потребоваться для тестов, я прикрепил в архиве.
Source\ - папка с исходниками
AllInOne.vbs - собственно скрипт, запускаемый из контекстного меню
Install.exe - дополнительный файл для добавления в реестр записей о создаваемом пункте контекстного меню. Он же их может удалить, при необходимости, после тестов.
startBat.bat - дополнительный батник для запуска AllInOne.vbs не через контекстное меню, но выполняющий аналогичную команду запуска vbs скрипта, как и из контекстного меню
7zipArch.exe - "подопытный кролик" инсталлятор архиватора 7-zip версии 9.20.
1 Архив нужно распаковать на х64 системе в любое удобное место (лучше в корень любого диска).
2 Запустить Install.exe, для добавления пункта в контекстное меню
3 Далее запускать 7zipArch.exe из контекстного меню, вводит в окно ключ -ai0 (других файл не примет) и, наблюдая за происходящим, попытаться решить проблему.
После запуска 7zipArch.exe работу батника можно видеть в консольном окне. После упомянутой выше строки в нем стоит Pause и нужно нажать любую клавишу для продолжения установки архиватора.
Буду благодарен за любую помощь.
Ссылка на архив (https://dl.dropbox.com/u/35142695/test_run_context_sl2_130321_14-12.7z)
Проблема:
Я создаю в контекстном меню пункт "Запустить с параметрами (Test) ..." для запуска exe файлов с параметрами. Но в некоторых случаях такой запуск приводит к краху оболочки из которой он произведен.
Тестировал запуск из Total Commander (далее ТС) обеих разрядностей (х64 и х86) и Explorer. Крах наблюдается только в х64 приложениях и ни когда в х86, хотя файлы используются одни и те же. Если запуск произведен из контекстного меню в оболочке, то крашится оболочка, если из TC, то крашится ТС.
При запуске из батника (выполняется та же самая команда запуска vbs скрипта, что и из контекстного меню) или самого vbs скрипта краха не наблюдается.
Удалось выяснить, что крах вызывает определенная команда в exe файле. У меня это SFX - установщик архиватора 7-zip с батником внутри. В батнике есть команда для удаления ранее установленных версий архиватора:
For /L %%i In (20,1,%numF%) Do MsiExec /qn /x{23170F69-40C1-270%dI%-09%%i-000001000000} подробнее можно посмотреть в самом батнике (setup7z.cmd) исходники все прикреплены.
При отработке именно этой команды и происходит крах. Если удалять нечего (нет установленного 7-zip), то команда отрабатывает вхолостую без ошибок.
Все, что может потребоваться для тестов, я прикрепил в архиве.
Source\ - папка с исходниками
AllInOne.vbs - собственно скрипт, запускаемый из контекстного меню
Install.exe - дополнительный файл для добавления в реестр записей о создаваемом пункте контекстного меню. Он же их может удалить, при необходимости, после тестов.
startBat.bat - дополнительный батник для запуска AllInOne.vbs не через контекстное меню, но выполняющий аналогичную команду запуска vbs скрипта, как и из контекстного меню
7zipArch.exe - "подопытный кролик" инсталлятор архиватора 7-zip версии 9.20.
1 Архив нужно распаковать на х64 системе в любое удобное место (лучше в корень любого диска).
2 Запустить Install.exe, для добавления пункта в контекстное меню
3 Далее запускать 7zipArch.exe из контекстного меню, вводит в окно ключ -ai0 (других файл не примет) и, наблюдая за происходящим, попытаться решить проблему.
После запуска 7zipArch.exe работу батника можно видеть в консольном окне. После упомянутой выше строки в нем стоит Pause и нужно нажать любую клавишу для продолжения установки архиватора.
Буду благодарен за любую помощь.
Ссылка на архив (https://dl.dropbox.com/u/35142695/test_run_context_sl2_130321_14-12.7z)