在我拥有的 WIX 设置中,升级应用程序时,我设置了关闭可能保留需要更新的文件的应用程序的要求:
<util:CloseApplication
Id="CloseMyApp"
Target="[MyAppExe]"
CloseMessage="yes"
Description="!(loc.MyAppStillRunning)"
RebootPrompt="no"
ElevatedCloseMessage="no"
/>
另一方面,应用程序将通过“用户友好”对话框捕获关闭窗口,用户可以在该对话框中确认他或她想要关闭应用程序。
当安装程序运行 CloseApplication 时,它发现必须停止该应用程序,但它无法关闭我的应用程序。一种理论是对话框阻止应用程序关闭。
所以问题是:这可能是一个问题吗?如果是这样 - 当安装程序要求应用程序关闭时,我怎样才能有这个确认对话框并且仍然正常运行?我必须收听 Win32 消息(例如 WM_QUIT/WM_CLOSE)还是有一个 .NET API 可以用来正确响应这些事件?
更新:根据mailinglist, CloseApplication 将发送 WM_CLOSE 给应用程序。如果用户关闭应用程序与 WIX 发送的关闭消息相比,我仍然会遇到不同行为的问题。不确定如何识别应用程序关闭方式的不同来源。