我有点痛苦。我有一个安装程序安装并启动托盘图标应用程序(常见的.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"
如何避免弹出对话框窗口并触发执行此自定义操作?
答案 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'
更多信息可在以下网址找到:
请注意,CloseApp自定义操作有一个限制,即它不会“终止”您的应用程序。它只会礼貌地向您的应用发送WM_CLOSE消息,并由您的trayapp接收并处理该消息并关闭。