установить inf (драйвер) из nsis на Windows Vista или выше - PullRequest
0 голосов
/ 22 июня 2010

Я пытаюсь установить драйвер в среде Windows 7 x64 с помощью cmd и установщика nsis, сделанного из скрипта

из cmd я делаю например:

 InfDefaultInstall C:\kit\driver\win7-64\my_driver.inf

из nsis, который я делаю (это строка из скрипта):

 Exec 'InfDefaultInstall $INSTDIR\driver\win7-64\my_driver.inf'

файл inf должен скопировать файл .sys в папку Windows \ system32 \ drivers и записать некоторые данные в реестр

Проблема в том, что это происходит в cmd, и это не происходит при использовании установщика nsis (я имею в виду, что он выглядит так, как будто он это делает, но файл .sys не идет туда, куда должен идти)

также, при удалении я делаю из скрипта nsis:

Delete '$WINDIR\system32\drivers\my_driver.sys'

эта команда не удаляет файл sys (который пошел туда, куда должен, потому что я выполнил команду строки cmd ПОСЛЕ установки)

==

все тесты выполнены с учетной записью администратора, UAC отключен, также попытался щелкнуть правой кнопкой мыши запуск от имени администратора в установщике, но он просто не скопирует его

==

Я попробовал это на Windows XP

Exec 'rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 $INSTDIR\driver\win7-64\my_driver.inf'

и отлично работает (из cmd и скрипта nsis)

также пробовал эту команду на win7, и я получил такие же не работающие результаты. ТАКЖЕ пробовал это на Vista x86, так что я не думаю, что это проблема архитектуры, но что-то вроде разрешений, или связанных с UAC (хотя UAC не включен)

1 Ответ

1 голос
/ 22 июня 2010

Я сомневаюсь, что это имеет значение в вашем случае, но вы должны процитировать ваши пути: Exec 'InfDefaultInstall "$INSTDIR\driver\win7-64\my_driver.inf"' и т. Д.

Вы должны включить файл x64.nsh и вызвать макрос DisableX64FSRedirection (вы, вероятно, также хотите использовать $ sysdir, а не $ WINDIR \ system32)

Что касается команды InfDefaultInstall, возможно, текущий / рабочий каталог имеет значение, вы можете установить его в nsis с помощью SetOutPath

...