1
我有一个即将安装/更新驱动程序的MSI。不过,我想检测驱动程序是否正在运行并在开始安装之前将其关闭。我需要这样做,因为客户正在使用活动目录部署到计算机。如何检测我的Wix MSI中运行的软件?
使用WIX安装脚本,我该怎么做?
我有一个即将安装/更新驱动程序的MSI。不过,我想检测驱动程序是否正在运行并在开始安装之前将其关闭。我需要这样做,因为客户正在使用活动目录部署到计算机。如何检测我的Wix MSI中运行的软件?
使用WIX安装脚本,我该怎么做?
不知道我是否在这里丢失了一些东西,但如果您在安装之前需要关闭驱动程序,那么在我看来,自定义操作将是最好的方法。
您可以通过使用VB脚本或调用托管程序集来编写自定义操作。我更喜欢后者(个人偏好C#而不是VB)。在维克斯源文件中的自定义动作将看起来像:
声明其表示组件中的二进制元素被称为成:
<Binary Id="BIN_DriverManagement" SourceFile=".\DriverManagement.CA.dll />
然后定义的自定义动作,调用组件的方法,包括:
<CustomAction Id="CACT_ShutDownDriverAction" BinaryKey="BIN_DriverManagement" DllEntry="ShutDownDriver" />
的最后一步将schedulling自定义操作进入安装顺序:
<InstallExecuteSequence>
<Custom Action="CACT_ShutDownDriverAction" After="LaunchConditions" />
</InstallexecuteSequence>
实际上,我不确定何时应该安排这样的自定义操作,这取决于需求。
自定义操作功能,在C#中实现应[CustomAction]从Microsoft.Deployment.WindowsInstaller namespace属性预先考虑,所以它可能是这样的:
[Microsoft.Deployment.WindowsInstaller.CustomAction]
public static ActionResult ShutDownDriver(Session session)
{
// Shut down the driver here.
}
是不是有点困难使用C#?您无法确定.NET运行时已安装。 – 2012-04-24 15:11:06
当然,这可能是一个问题,但自定义操作不限于.NET代码。您可以使用CustomAction的FileKey属性执行自定义本机代码可执行文件。 – 2012-04-25 06:48:39