ドライバーをインストール/更新するMSIがあります。ただし、インストールを開始する前に、ドライバーが実行されているかどうかを検出してシャットダウンしたいと思います。顧客がActiveDirectoryを使用してコンピューターに展開しているため、これをサイレントに実行する必要があります。
WIXインストールスクリプトを使用して、これを行うにはどうすればよいですか?
ドライバーをインストール/更新するMSIがあります。ただし、インストールを開始する前に、ドライバーが実行されているかどうかを検出してシャットダウンしたいと思います。顧客がActiveDirectoryを使用してコンピューターに展開しているため、これをサイレントに実行する必要があります。
WIXインストールスクリプトを使用して、これを行うにはどうすればよいですか?
ここに何かが欠けているかどうかはわかりませんが、インストールする前にドライバーをシャットダウンする必要がある場合は、カスタム アクションが最善の方法だと思います。
VB スクリプトを使用するか、マネージ アセンブリを呼び出すことにより、カスタム アクションを作成できます。私は後者の方が好きです (個人的には VB ではなく C# を好みます)。WiX ソース ファイルのカスタム アクションは次のようになります。
呼び出されるアセンブリを表すバイナリ要素を宣言します。
<Binary Id="BIN_DriverManagement" SourceFile=".\DriverManagement.CA.dll />
次に、カスタム アクションを定義して、アセンブリのメソッドを呼び出します。
<CustomAction Id="CACT_ShutDownDriverAction" BinaryKey="BIN_DriverManagement" DllEntry="ShutDownDriver" />
最後のステップは、カスタム アクションをインストール シーケンスにスケジュールすることです。
<InstallExecuteSequence>
<Custom Action="CACT_ShutDownDriverAction" After="LaunchConditions" />
</InstallexecuteSequence>
実際には、このようなカスタム アクションをいつスケジュールする必要があるかはわかりません。要件によって異なります。
C# で実装されたカスタム アクション関数は、Microsoft.Deployment.WindowsInstaller 名前空間の [CustomAction] 属性を先頭に追加する必要があるため、次のようになります。
[Microsoft.Deployment.WindowsInstaller.CustomAction]
public static ActionResult ShutDownDriver(Session session)
{
// Shut down the driver here.
}