如何检测我的软件是否在我的Wix MSI中运行?

时间:2012-04-20 10:17:57

标签: wix windows-installer

我有一个MSI,它将安装/更新驱动程序。但是我想检测驱动程序是否正在运行并在开始安装之前将其关闭。我需要在客户使用活动目录部署到计算机时默默地执行此操作。

使用WIX安装脚本,我该怎么做?

1 个答案:

答案 0 :(得分:2)

不确定我是否遗漏了这里的内容,但如果您需要在安装前关闭驱动程序,那么在我看来,自定义操作将是最佳方法。

您可以使用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.
}