重新安装期间的CA条件

时间:2011-07-26 08:31:59

标签: wix windows-installer conditional-statements reinstall

我有一个自定义操作,如果特殊功能的操作状态为“install”,则必须执行该操作。现在我正在使用下一个条件:

(&ca_feature=3 AND NOT &ca_feature=2) OR (!ca_feature=3 AND PATCH) .

我想在修改模式下执行它。当该功能已安装且用户不想删除它时。我可以将OR (REINSTALL><ca_feature OR REINSTALL=ALL)附加到我的条件字符串中。但它似乎无法正常工作..我无法了解MSI在某些情况下是如何工作的,这是我的问题。但我也无法在互联网上找到答案。 请告诉我我在做什么/理解错误?提前感谢

1 个答案:

答案 0 :(得分:2)

条件正确。如果要重新安装您的功能,则REINSTALL的最后一部分将成立。

虽然您可以尝试使用!ca_feature=3而不是REINSTALL><ca_feature:在安装该功能时会运行CA.


我认为你的情况可能是这样的:

(&ca_feature=3) OR (!ca_feature=3 AND NOT (REMOVE><ca_feature OR REMOVE=ALL))

当此功能计划安装时,或者如果已安装并且未安排删除,则会运行CA.

第一个括号中的此部分AND NOT &ca_feature=2是多余的,因为&ca_feature如果已经等于3,则不能等于2.


使用MSI verbose logging更好地了解正在发生的事情。以这种方式运行您的安装:

msiexec /i package.msi /l*vx log.txt

当功能状态更改或属性被修改时,您将在日志中看到一条消息。然后,您将能够将实际值与您的期望进行比较。使用其他操作开关而不是/i以修改或删除模式运行它。