在用户提示“手动closures”之前卸载WiX呼叫应用程序

我有一个安装程序安装了一个应用程序,并在安装完成后立即启动。 这适用于我。

但是现在我想在卸载应用程序时停止该应用程序,我不希望提示用户手动closures应用程序。 这应该是全自动的。

我需要使用自定义操作来执行此操作,WM_CLOSE消息在我的方法中不起作用(实际上,我试了几次)。

我认为这不是那么困难,但是我没有得到它的工作。 我到目前为止做了什么:

我定义了一个CustomAction:

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

并称之为:

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

但是这不起作用。 我想我正在调度我的自定义操作错误,但我无法弄清楚正确的时间来做到这一点。

是否有任何build议关于自定义操作的时间/地点? 我很不确定是否

 Before="InstallValidate" 

是正确的地方做到这一点。

Solutions Collecting From Web of "在用户提示“手动closures”之前卸载WiX呼叫应用程序"

根据FilesInUse对话框的帮助主题,InstallValidate是安排自定义操作的正确位置。 但我很困惑,为什么WM_CLOSE不会为你工作。 我看到你问了另一个问题,并接受了这个答案。 也许你的TrayApp可以有一个“隐藏”的形式,用户永远不会看到,但正在运行接收WM_CLOSE消息。 这是我多年来做过很多次的一个诀窍。

否则,如果你真的想调用你的EXE,我建议不要使用EXE自定义动作。 而是使用安静执行自定义操作 。 有关为什么要这样做的一些原因,请参阅EXE自定义操作的集成障碍 。