Условия CA во время переустановки - PullRequest
1 голос
/ 26 июля 2011

У меня есть пользовательское действие, которое должно быть выполнено, если состояние действия специальной функции - «установить».Теперь я использую следующее условие:

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

Я хочу выполнить его также в режиме модификации.Когда функция уже установлена ​​и пользователь не хочет ее удалять.Я хотел бы добавить OR (REINSTALL><ca_feature OR REINSTALL=ALL) к моей строке условий.но, похоже, не работает .. Я не могу понять, как MSI работает в некоторых ситуациях, это моя проблема.но я также не могу найти ответ в интернете.Пожалуйста, скажите мне, что я делаю / неправильно понимаю? Спасибо заранее

1 Ответ

2 голосов
/ 28 июля 2011

Состояние выглядит правильно. Последняя часть с 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, чтобы запустить его в режиме изменения или удаления.

...