Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Несрабатывает CMD-сценарий после запуска из авторан-меню (http://forum.oszone.net/showthread.php?t=338129)

FreshMen85 08-12-2018 20:43 2844884

Несрабатывает 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

Iska 08-12-2018 22:02 2844904

FreshMen85, а) покажите не исполняемый файл autorun.exe, а сценарий, на основе которого он был создан; б) выкладывайте архив на dropmefiles.

FreshMen85 09-12-2018 05:49 2844965

Вложений: 1
Iska, файл перезалил. На счет показать сценарий не понял, как сделать. Авторан сделан в программе Auto Play Menu Builder 8, файл проекта в архиве. Может какие-то опциии самой программы показать? Еще такой же проект делал в Autorun Enterprise PRO 2 и тут в итоге та же беда. Такое ощущение что авторан запускается в какой-то ограниченной среде.
Система для опытов кстати Windows 10 RS4 x64

Кстати вот сделал проект на MInstAll, то же самое, не находит pnputill
https://dropmefiles.com/1ux6u

Iska 09-12-2018 12:24 2844995

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 — и тоже не находит. В результате Вы закономерно получаете тот результат, что видите.

FreshMen85 09-12-2018 14:37 2845010

Iska, скорей всего вы правы. Попробовал запустить cmd.exe напрямую С:\Windows\system32\cmd.exe и передать с помощью команды CALL содержимое _setup.cmd, но у меня с разбегу ни чего не получилось. Хотел просто спросить я хоть правильно пытаюсь решить задачу?

Iska 09-12-2018 14:50 2845014

FreshMen85, не могу сказать пока ничего вразумительного, потому как не знаю проблему, которую Вы хотите решить выбранным Вами решением.

FreshMen85 09-12-2018 15:38 2845020

Iska, хочу просто автоматизировать установку драйверов, но запуск установки должен осуществляться из авторана.
.

Iska 09-12-2018 16:12 2845023

FreshMen85, я бы взял какой-нибудь AutoPlay Media Studio и попробовал бы привязать к кнопке какой-нибудь такой код:
Код:

if (System.Is64BitOS()) then
        result = File.Run(os.getenv("SystemRoot") .. "\\Sysnative\\pnputil.exe", "-i -a Install\\Driver\\x64\\ftdibus.inf", "", SW_SHOWNORMAL, true);
else
        result = File.Run(os.getenv("SystemRoot") .. "\\System32\\pnputil.exe", "-i -a Install\\Driver\\x86\\ftdibus.inf", "", SW_SHOWNORMAL, true);
end



Время: 15:23.

Время: 15:23.
© OSzone.net 2001-