我有一个将安装/更新驱动程序的 MSI。但是我想检测驱动程序是否正在运行并在开始安装之前将其关闭。当客户使用 Active Directory 部署到计算机时,我需要静默执行此操作。
使用 WIX 安装脚本,我该怎么做?
我有一个将安装/更新驱动程序的 MSI。但是我想检测驱动程序是否正在运行并在开始安装之前将其关闭。当客户使用 Active Directory 部署到计算机时,我需要静默执行此操作。
使用 WIX 安装脚本,我该怎么做?
不确定我是否在这里遗漏了一些东西,但如果您需要在安装之前关闭驱动程序,那么在我看来,自定义操作将是最好的方法。
您可以通过使用 VB 脚本或调用托管程序集来编写自定义操作。我更喜欢后者(个人偏好 C# 而不是 VB)。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.
}