Состояние выглядит правильно. Последняя часть с REINSTALL
будет истинной, если ваша функция будет переустановлена.
Хотя вы можете попробовать использовать !ca_feature=3
вместо REINSTALL><ca_feature
: это приведет к запуску ЦС при установке этой функции.
Я думаю, что ваше состояние может выглядеть так:
(&ca_feature=3) OR (!ca_feature=3 AND NOT (REMOVE><ca_feature OR REMOVE=ALL))
Он будет запускать ЦС, когда эта функция запланирована для установки, или если она установлена и не запланирована для удаления.
Эта часть AND NOT &ca_feature=2
в первых скобках является избыточной, поскольку &ca_feature
не может быть равно 2, если оно уже равно 3.
Используйте MSI подробное ведение журнала , чтобы лучше понять, что происходит. Запустите установку следующим образом:
msiexec /i package.msi /l*vx log.txt
Когда состояние объекта изменяется или свойство изменяется, вы увидите сообщение в журнале. Тогда вы сможете сравнить фактические значения с вашими ожиданиями. Используйте другие рабочие переключатели вместо /i
, чтобы запустить его в режиме изменения или удаления.