1

我尝试安装的驱动程序是适用于 Windows 7x64 的 Kernel Mini-Filter 驱动程序。我正在测试安装程序的机器处于测试模式,并且驱动程序文件和 .cat 文件都使用我制作的证书进行了签名。我按照此处的说明进行操作,但仍然无法安装驱动程序。我确保添加DriverPackageType = FileSystemMinifilter[version].inf 文件的部分。

这是我的 WiX 安装程序 xml 的摘录:

        <Directory Id="Driver" Name="Driver">
          <Component Id="MY-DRIVER-NAME" Guid="MY-GUID">
            <File
              Id="DRIVER_FILE1_SYS"
              Name="DriverFile1.sys"
              DiskId="1"
              Source="path_to_sys_file"
              Vital="yes"
              System="yes"
              ReadOnly="yes"
              KeyPath="yes"/>
            <File
              Id="DRIVER_FILE2_SYS"
              Name="DriverFile2.sys"
              DiskId="1"
              Source="path_to_sys_file"
              Vital="yes"
              System="yes"
              ReadOnly="yes"
              KeyPath="yes"/>
            <File
              Id="DRIVER_FILE3_SYS"
              Name="DriverFile3.sys"
              DiskId="1"
              Source="path_to_sys_file"
              Vital="yes"
              System="yes"
              ReadOnly="yes"
              KeyPath="yes"/>
            <File
              Id="DRIVER_FILE4_SYS"
              Name="DriverFile4.sys"
              DiskId="1"
              Source="path_to_sys_file"
              Vital="yes"
              System="yes"
              ReadOnly="yes"
              KeyPath="yes"/>
            <File
              Id="DRIVER_FILE_INF"
              Name="DriverFile.inf"
              DiskId="1"
              Source="path_to_inf_file"
              Vital="yes"
              System="yes"
              ReadOnly="yes"/>
            <File
              Id="DRIVER_FILE_CAT"
              Name="DriverFile.cat"
              DiskId="1"
              Source="path_to_cat_file"
              Vital="yes"
              System="yes"
              ReadOnly="yes"/>
            <difx:Driver Legacy="yes"/>
          </Component><!--LEGDriver-->

“Id”、“Name”和“Source”路径已更改(我实际上并没有使用上面显示的值,这只是一个示例)。我构建安装程序没有问题。当我运行它时,msiexec /i MyMsi.msi /l*v install.log我看到了错误DIFXAPP: ERROR: Could not get services associated with driver package

然后它尝试撤消更改并遇到更多错误:

ERROR: Unable to revert to a previous driver store for service ''.
ERROR: Unable to open service '' to delete it because of error 0x7B

使用以下命令安装 .inf 文件没有问题:

RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 path-to-inf\infname.inf

它还通过“右键单击安装”成功安装。

将上面的“RUNDLL32.EXE”命令作为自定义操作 ExeCommand 添加到我的 WiX 安装程序而不是使用 DifxApp 在手动安装计算机上的 .msi 文件时有效,但是,当通过 GPO 从 Active Directory 服务器(每计算机 GPO ),安装未完成。(除 INF 安装外的所有内容都已完成)。

4

1 回答 1

2

原来答案是 RUNDLL32.exe 命令的修改版本。将 132 更改为 131

RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 131 path-to-inf\infname.inf

根据http://msdn.microsoft.com/en-us/library/aa376957(v=vs.85).aspx

128 + 4 = 132 = 要求用户重新启动(如果需要) 128 + 3 = 131 = 不要询问只是重新启动

由于这是从 AD 部署并在任何用户登录之前在启动时安装的,我想当程序尝试创建一个弹出框以询问用户是否要关闭时它会失败。将其设置为 131 会导致它在用户登录之前安装并重新启动计算机。计算机完成双重重启后,一切顺利。

于 2014-03-12T19:35:41.983 回答