代码之家  ›  专栏  ›  技术社区  ›  Alex Che

在x64系统中从NSIS安装程序安装驱动程序

  •  7
  • Alex Che  · 技术社区  · 16 年前

    Driver Install Frameworks API (DIFxAPI) 安装驱动程序。

    有没有办法用NSIS创建x64安装程序应用程序?有人解决过NSIS的类似问题吗?

    注意:我现在能看到的唯一解决办法是从安装程序运行另一个应用程序。这将是安装驱动程序的x64可执行文件。但这种方式对我来说似乎有点难。所以,我对其他解决方案感兴趣。

    4 回复  |  直到 16 年前
        1
  •  13
  •   Russell Gallop    16 年前

    此文档似乎有一个使用DPInst的解决方案( http://www.microsoft.com/whdc/driver/install/32-64bit_install.mspx )虽然我自己还没试过。

    会加上我找到的任何东西。

    现在已经开始工作了,归根结底是

    1. C:\
    2. C:\WinDDK\7600.16385.1\redist\DIFx/dpinst/EngMui/amd64/dpinst.exe 到 myApp/drivers/dpinst64.exe
    3. 复制 C:\WinDDK\7600.16385.1\redist\DIFx/dpinst/EngMui/x86/dpinst.exe 到 myApp/drivers/dpinst32.exe
    4. 将驱动程序包(inf文件等)复制到 myApp/drivers
    5. myApp.nsi !include "x64.nsh"
    6. 在安装部分的某个地方

    ${If} ${RunningX64}
           ExecWait '"$INSTDIR\drivers\dpinst64.exe" /c /q /sa /sw /PATH 
    "$INSTDIR\drivers"'
        ${Else}
           ExecWait '"$INSTDIR\drivers\dpinst32.exe" /c /q /sa /sw /PATH 
    "$INSTDIR\drivers"'
        ${EndIf}
    
        2
  •  2
  •   HX_unbanned    14 年前
        3
  •  2
  •   Peter Mortensen Pieter Jan Bonestroo    11 年前

    NSIS的原生x64版本充其量处于规划阶段,因此您必须创建一些自定义的东西,要么创建一个新的helper应用程序,要么创建一个64位版本的rundll32+某种helper DLL文件。

        4
  •  2
  •   Peter Mortensen Pieter Jan Bonestroo    10 年前

    我特别尝试使用INF文件在NSIS安装程序的x64上安装一个文件系统过滤器驱动程序。

    在32位上,我可以很高兴地调用:

    ExecWait '$SYSDIR\RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\<myinf>.inf'
    

    但是在x64上,即使使用${DisableX64FSRedirection}关闭了文件重定向,它仍然执行WOW64操作。。。

        ${If} ${RunningX64}
            ${DisableX64FSRedirection}
            SetRegView 64
        ${EndIf}
    
        ExecWait '$SYSDIR\RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\<myinf>.inf'
    
    推荐文章