卸载前WiX关闭应用程序 - 关闭打开的应用程序消息

时间:2012-03-22 12:11:02

标签: wix installation installer

我有点痛苦。我有一个安装程序安装并启动托盘图标应用程序(常见的.exe)

这工作正常,但现在我想在此UI之前停止该应用程序,告诉用户手动关闭应用程序,因为在卸载例程期间,我的托盘图标被删除但进程仍在运行。

我在卸载之前(甚至在此期间)应用此自定义操作来关闭应用

<CustomAction Id="CloseTrayApp" ExeCommand="-exit" FileKey="TrayApp" Execute="immediate" Return="asyncNoWait" />

<InstallExecuteSequence>
    <Custom Action="CloseTrayApp" Before="InstallValidate" />
</InstallExecuteSequence>

但是“关闭所有正在运行的应用程序”对话框仍会弹出,但我认为这将解决我的问题。

我已经尝试过使用CloseAction,但由于编译时出错,我急于使用它。它说WixUtils命名空间可能会丢失,但我仔细检查它是否存在:

xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"

如何避免弹出对话框窗口并触发执行此自定义操作?

1 个答案:

答案 0 :(得分:7)

您还必须添加对WixUtilExtension.dll的引用。如果您使用的是Visual Studio / Votive,只需右键单击“添加引用”,然后从[ProgramFilesFolder] Windows Installer XML v3.5 \ bin中选择DLL。否则,您必须使扩展可用于编译器和链接器:

candle.exe yourfile.wxs -ext %full path to WixUtilExtension.dll%'
light.exe yourfile.wixobj -ext %full path to WixUtilExtension.dll% –out yourfile.msi yourfile.wixout'

更多信息可在以下网址找到:

Using Standard Custom Actions

请注意,CloseApp自定义操作有一个限制,即它不会“终止”您的应用程序。它只会礼貌地向您的应用发送WM_CLOSE消息,并由您的trayapp接收并处理该消息并关闭。