![]() |
Несрабатывает CMD-сценарий после запуска из авторан-меню
Вложений: 1
Всем привет. Хочу попросить у вас помощи. Есть cmd-сценарий который устанавливает драйвер, он отрабатывает при обычном запуске нормально. Но если запускаю из авторана, не видит pnputil.exe, даже если я указываю полный путь. Так же есть подозрения, что не срабатывает условие по определению битности системы, так как пробЫвал запускать установку драйвера через devcon и там срабатывает только установка для x86 системы. Что можно сделать, чтобы сценарий все же работал из авторан-меню?
Скачать авторан меню: https://dropmefiles.com/xjIUd Сам сценарий следующий: If "%PROCESSOR_ARCHITECTURE%"=="x86" ( start /w pnputil -i -a "%~dp0Driver\x86\ftdibus.inf" ) Else ( start /w pnputil -i -a "%~dp0Driver\x64\ftdibus.inf" ) exit |
FreshMen85, а) покажите не исполняемый файл autorun.exe, а сценарий, на основе которого он был создан; б) выкладывайте архив на dropmefiles.
|
Вложений: 1
Iska, файл перезалил. На счет показать сценарий не понял, как сделать. Авторан сделан в программе Auto Play Menu Builder 8, файл проекта в архиве. Может какие-то опциии самой программы показать? Еще такой же проект делал в Autorun Enterprise PRO 2 и тут в итоге та же беда. Такое ощущение что авторан запускается в какой-то ограниченной среде.
Система для опытов кстати Windows 10 RS4 x64 Кстати вот сделал проект на MInstAll, то же самое, не находит pnputill https://dropmefiles.com/1ux6u |
FreshMen85, у меня есть несколько предположений. И первое из них касается того, что и autorun.exe, и 0_InstallSoft.exe — x86-приложения, а Ваша ОС — x64. Для x86-приложений ОС использует перенаправление некоторых каталогов и разделов реестра, в частности, когда они обращаются к каталогу %SystemRoot%\System32, ОС перенаправляет их запросы в реальный каталог %SystemRoot%\SysWOW64.
Отсюда следует, что, когда Ваше x86-приложение, будь то autorun.exe или 0_InstallSoft.exe, будучи запущенным на x64 ОС, пытается исполнить пакетный файл посредством %comspec% /c или ShellExecute — запускается не x64-версия cmd.exe из каталога %SystemRoot%\System32, а x86-версия cmd.exe из каталога %SystemRoot%\SysWOW64. Затем эта x86-версия cmd.exe из каталога %SystemRoot%\SysWOW64 начинает обрабатывать и исполнять Ваш пакетный файл, доходит до команды «If "%PROCESSOR_ARCHITECTURE%"=="x86" …» и выясняется, что, да — %PROCESSOR_ARCHITECTURE% оказывается таки равно x86 :lol: (что вполне логично и правильно в данном контексте), то есть — совсем не то, что Вы ожидали получить. Кроме того — что команда «start /w pnputil -i -a "%~dp0Driver\x86\ftdibus.inf"», что команда «start /w pnputil -i -a "%~dp0Driver\x64\ftdibus.inf"» пытаются выполнить ShellExecute() с ожиданием для pnputil.cmd/pnputil.bat/pnputil.com/pnputil.exe (потому как Вы не указываете расширение) в текущем каталоге (и не находит их там), затем в PATH (не находит и там — помним, что %SystemRoot%\System32 отображается на %SystemRoot%\SysWOW64, а в нём каких-либо pnputil.cmd/pnputil.bat/pnputil.com/pnputil.exe не наблюдается), затем в реестре в обоих разделах App Paths — и тоже не находит. В результате Вы закономерно получаете тот результат, что видите. |
Iska, скорей всего вы правы. Попробовал запустить cmd.exe напрямую С:\Windows\system32\cmd.exe и передать с помощью команды CALL содержимое _setup.cmd, но у меня с разбегу ни чего не получилось. Хотел просто спросить я хоть правильно пытаюсь решить задачу?
|
FreshMen85, не могу сказать пока ничего вразумительного, потому как не знаю проблему, которую Вы хотите решить выбранным Вами решением.
|
Iska, хочу просто автоматизировать установку драйверов, но запуск установки должен осуществляться из авторана.
. |
FreshMen85, я бы взял какой-нибудь AutoPlay Media Studio и попробовал бы привязать к кнопке какой-нибудь такой код:
Код:
if (System.Is64BitOS()) then |
Время: 15:23. |
Время: 15:23.
© OSzone.net 2001-