我有一个自定义操作,该操作只能在安装期间执行,而不能在次要版本升级和删除期间执行?
我尝试了不同的条件,但 CA 正在次要版本期间执行。
1)(未安装)或不(删除=“全部”并升级产品代码)
2)(未安装)
3)(未安装)或未(已安装并删除=“全部”并升级产品代码)
但对我来说没有任何作用。
我的 CA 执行了两次,可能是因为在升级过程中安装程序正在卸载和安装。
有关如何仅在安装期间而不是在升级期间执行 CA 的任何建议。
请测试: 你可以尝试一下(NOT Installed) AND (NOT WIX_UPGRADE_DETECTED)
作为第一个测试(看到这个答案 https://stackoverflow.com/a/53937078/129130),然后使用下面的调试方法测试正确。没有保证!条件是臭名昭著的。
- 测试是否将卸载作为主要升级的一部分运行的常用方法是使用UPGRADINGPRODUCTCODE财产 https://learn.microsoft.com/en-us/windows/win32/msi/upgradingproductcode.
- 你应该知道这些问题涉及到UPGRADINGPRODUCTCODE https://stackoverflow.com/a/51090120/129130- 从表面上看,它的行为可能与您所期望的不同。
- 我建议使用
WIX_UPGRADE_DETECTED
代替UPGRADINGPRODUCTCODE
在上述条件下,使其尽可能简单。这是 WiX 特定的属性(UPGRADINGPRODUCTCODE
是内置 MSI 属性)。
Top Tip: MSI 条件的正确性是出了名的复杂。您可以通过所描述的方法非常有效地调试 MSI 条件
这里:如何在安装和修改时执行条件自定义操作
仅有的? https://stackoverflow.com/questions/52370505/how-to-execute-conditional-custom-action-on-install-and-modify-only/52377800#52377800(参见底部部分 - 使用 VBScript 消息框,然后
在不同模式下运行设置)。
小升级: 请注意小升级非常有限 https://stackoverflow.com/a/51444047/129130 - and 另一个答案 https://stackoverflow.com/a/55252064/129130。请查看这些限制,以确保您了解这些限制,并确保在发布您的软件时考虑到这些限制。还要确保测试安装程序的修复和修改方案。
Advice: Often it is better to use the launch sequence of the application to perform application configuration than relying on custom actions since they have complex sequencing, conditioning and impersonation issues
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)