1

インストールしようとしているドライバーは、Windows 7x64 用のカーネル ミニフィルター ドライバーです。インストーラーをテストしているマシンはテスト モードであり、ドライバー ファイルと .cat ファイルはすべて、作成した証明書で署名されています。こちらの手順に従いましたが、まだドライバーをインストールできません。.inf ファイルのセクションに必ず追加DriverPackageType = FileSystemMinifilterしました。[version]

以下は、私の 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

また、「右クリック インストール」でも正常にインストールされます。

DifxApp を使用する代わりに、上記の「RUNDLL32.EXE」コマンドをカスタム アクション ExeCommand として WiX インストーラーに追加すると、マシンに .msi ファイルを手動でインストールするときに機能しますが、Active Directory サーバー (コンピューターごとの GPO) から 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 に答える