在windows vista或更高版本上从nsis安装inf(驱动程序)

时间:2010-06-22 17:38:41

标签: windows driver nsis

我尝试在Windows 7 x64环境中安装驱动程序,使用cmd,以及使用脚本生成的nsis安装程序

来自cmd我做的例如:

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

来自我做的(这是脚本中的一行):

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

inf文件应该复制Windows \ system32 \ drivers文件夹中的.sys文件,并在注册表中写一些东西

问题是,它发生在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 个答案:

答案 0 :(得分:1)

我怀疑你的情况很重要,但你应该引用你的路径:Exec 'InfDefaultInstall "$INSTDIR\driver\win7-64\my_driver.inf"'

你应该包含x64.nsh文件并调用DisableX64FSRedirection宏(你可能也想使用$ sysdir而不是$ WINDIR \ system32)

就InfDefaultInstall命令而言,当前/工作目录可能很重要,您可以使用SetOutPath在nsis中设置它