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

inv*_*nva 9 installation installer wix

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

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

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

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

<InstallExecuteSequence>
    <Custom Action="CloseTrayApp" Before="InstallValidate" />
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

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

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

xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*ter 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'
Run Code Online (Sandbox Code Playgroud)

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

使用标准自定义操作

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