如何在 WiX 中执行仅在安装或卸载时执行的自定义操作?

Posted

技术标签:

【中文标题】如何在 WiX 中执行仅在安装或卸载时执行的自定义操作?【英文标题】:How can I perform a custom action in WiX that only executes on install or uninstall? 【发布时间】:2013-06-29 00:19:24 【问题描述】:

我有两个自定义操作,其中一个我想在安装我的产品时执行,另一个在卸载时执行。

我的自定义操作当前是在“InstallFinalize”之后从合并模块调用的,但安装和卸载都会发生这种情况。我尝试添加“未安装且未升级产品代码”条件,但这给了我一个错误:

错误 2762。无法写入脚本记录。交易未开始。

我也尝试过附加到其他操作(例如,UnpublishComponents),但我找不到任何唯一可以安装或卸载的操作。

我该如何解决这个问题?

【问题讨论】:

How to add a WiX custom action that happens only on uninstall (via MSI)?的可能重复 【参考方案1】:

应该使用的变量“INSTALLED”是“Installed”。在 *** 回答 How to add a WiX custom action that happens only on uninstall (via MSI)? 中查找有关安装和卸载条件的更多信息。

【讨论】:

【参考方案2】:

尝试下一个1. 仅用于安装:

<InstallExecuteSequence>
<Custom Action="SomeAction" After="InstallFinalize">NOT Installed AND NOT REMOVE</Custom>
</InstallExecuteSequence>

2. 卸载尝试使用:Rob's answer

UPGRADINGPRODUCTCODE 属性仅在RemoveExistingProducts CA 期间设置。

【讨论】:

非常感谢,这就是方法。

以上是关于如何在 WiX 中执行仅在安装或卸载时执行的自定义操作?的主要内容,如果未能解决你的问题,请参考以下文章

如何在卸载时立即生成WIX执行命令

WIX 中功能的自定义操作

Wix:修补时运行条件自定义操作(非完整安装)

如何仅在安装和修改时执行条件自定义操作?

如何使用 wix 在卸载时编写注册表项

如何防止 wix 自定义引导程序卸载 UI 在升级过程中显示