1

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

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

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

4

1 回答 1

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详细日志记录可以更好地了解正在发生的事情。以这种方式运行您的安装:

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

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

于 2011-07-28T08:58:28.393 回答