【发布时间】:2019-05-21 12:20:39
【问题描述】:
我正在使用 Wix 创建一个 .msi 安装文件。 当我卸载我的应用程序时,它仍然在工作,我可以在任务管理器中看到它。
我已尝试延迟执行自定义操作,如 Wix 文档中所述: https://wixtoolset.org/documentation/manual/v3/customactions/qtexec.html 但不幸的是,它不适用于我。 我要执行的命令是“taskkill /f /im myProcess.exe”
<Property Id="myProcessKill" Value="taskkill /f /im myProcess.exe"/>
<CustomAction Id="myProcessKill" BinaryKey="WixCA" DllEntry="WixQuietExec"
Execute="deferred" Return="check" Impersonate="no"/>
<InstallExecuteSequence>
<Custom Action="myProcessKill" After="InstallValidate"/>
</InstallExecuteSequence>
这使我的 msi 文件在安装过程中出错。 如果我将 Return="check" 更改为 Return="ignore",则 msi 会完成安装,但它不会在卸载时终止我的进程。 上面的代码有什么问题?或者有没有其他方法可以在卸载时终止我的进程? 提前致谢
【问题讨论】:
-
也许可以阅读Restart Manager feature。还有一个more detailed version here(参见“设置过度杀伤”部分)。
-
我没有详细检查过卸载场景,但应该值得一读。重启管理器实质上以受控方式关闭应用程序,并酌情保存数据。
-
@SteinÅsmul 感谢您的评论,但我不想在卸载后重新启动您知道其他解决方案吗
-
这不是关于重新启动,而是关于应用程序的受控关闭以及使用重新启动管理器功能重新启动它的可能性。我不确定它在卸载时是否正常工作。 See this technical piece from Advanced Installer。让您的应用程序优雅地自行关闭比杀死它要好。
标签: wix windows-installer