【问题标题】:install inf (driver) from nsis on windows vista or greater在 windows vista 或更高版本上从 nsis 安装 inf(驱动程序)
【发布时间】:2023-03-20 13:51:02
【问题描述】:

我尝试在 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 文件应该在 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)

【问题讨论】:

    标签: windows driver nsis


    【解决方案1】:

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

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

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

    【讨论】:

    • 如果我尝试使用引号,我会收到一条错误消息,说无法使用确定按钮安装驱动程序(cmd 和 nsis 也是)
    • 好吧,我假设 $INSTDIR 可以由用户更改,所以除非 InfDefaultInstall 有特殊的命令行处理,否则你可能会遇到空格问题
    • 我认为问题是因为我没有使用 DisableX64FSRedirection 宏.. 因为现在它正在工作
    猜你喜欢
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 2011-07-13
    • 2018-04-05
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 2011-09-11
    相关资源
    最近更新 更多