【问题标题】:WiX call app on uninstall before User prompt "close manually"在用户提示“手动关闭”之前卸载 WiX 调用应用程序
【发布时间】:2012-03-23 21:22:17
【问题描述】:

我有一个安装程序,它会安装一个应用程序并在安装完成后立即启动它。这对我来说很有效。

但现在我想在卸载应用程序时停止该应用程序,我不希望提示用户手动关闭应用程序。这将全自动工作。

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

我认为这不会那么困难,但我没有让它发挥作用。到目前为止我做了什么:

我定义了一个 CustomAction:

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

并称它为:

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

但这不起作用。我想我错误地安排了我的自定义操作,但我无法确定正确的时间来做这件事。

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

Before="InstallValidate"

是正确的地方。

【问题讨论】:

  • 当你说“这行不通”时——你是什么意思?日志文件中是否有任何错误?
  • 如何查看日志文件?不起作用意味着,我仍然得到“手动关闭应用程序”对话框,安装程序说它失败并且进程仍在运行。
  • 为了生成详细的日志文件,您应该使用 /l*v 命令行开关运行安装。像这样:msiexec /i MyApplication.msi /l*v MyLogFile.txt

标签: windows installation wix


【解决方案1】:

根据FilesInUse Dialog 帮助主题,在 InstallValidate 之前是安排自定义操作的正确位置。但我很困惑为什么 WM_CLOSE 不适合你。我看到你问了另一个问题并接受了它作为答案。也许您的 TrayApp 可能有一个“隐藏的”表单,用户永远不会看到但正在运行以接收 WM_CLOSE 消息。这是我多年来做过很多次的伎俩。

否则,如果你真的想调用你的 EXE,我建议永远不要使用 EXE 自定义操作。而是使用Quiet Execution Custom Action。关于为什么要这样做的一些原因,请参阅Integration Hurdles for EXE Custom Actions

【讨论】:

  • 感谢您的回复,我已经尝试使用隐藏表单,但我体验到每次我从任务栏图标触发某些操作时,都会发送 wm_close 消息,因此应用程序已关闭,因为我无法弥补卸载程序 wm_close 消息和常见 wm_close 消息之间的区别
猜你喜欢
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 2012-06-19
相关资源
最近更新 更多