【问题标题】:How to kill a process upon uninstall using WiX如何在使用 WiX 卸载时终止进程
【发布时间】: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


【解决方案1】:

也许可以试试:WiX's CloseApplication Element。在尝试任何其他方法以避免依赖任何二进制文件之前,我会先尝试一下。 Found this sample on github.com(未经测试)。

【讨论】:

    【解决方案2】:

    尝试使用cmd.exe 带引号并将taskkill 传递给那个,在你的情况下

    <Property Id="myProcessKill" Value="&quot;c:\windows\system32\cmd.exe&quot; /c taskkill /f /im myProcess.exe"/>
    

    我也不确定您的自定义操作是否按顺序排列,至少您应该添加REMOVE="ALL"。在我们的应用中,我们使用&lt;Custom Action="CloseApplication" Before="InstallInitialize"&gt; &lt;![CDATA[ NOT UPGRADINGPRODUCTCODE AND REMOVE="ALL" ]]&gt; &lt;/Custom&gt;

    【讨论】:

    • 非常感谢您的回答,但是,有没有办法不指定c分区,因为用户可能将windows安装在另一个目录上?在您的应用程序上,您是否指定了 c 分区?再次感谢
    • @ElamirOhana 这是一个非常有趣的案例,在拥有数千名用户的生产环境中从未遇到过这个问题:) 但您可以尝试使用 SystemRoot 环境变量跨度>
    • 我不想在卸载后重新启动。您是如何在您的应用中实现“CloseApplication”自定义操作的?
    • 上面的示例不需要任何重启
    • 这个解决方案工作得很好,感谢几天来一直在努力让它工作。我终于设置了一个空白的 msi 项目并插入行进行测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多