2011-07-26 56 views
1

如果特殊功能的操作狀態爲「安裝」,則必須執行自定義操作。現在我正在使用下一個條件:重新安裝期間的CA條件

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

我想在修改模式下執行它。當功能已安裝並且用戶不想刪除它時。我想追加OR (REINSTALL><ca_feature OR REINSTALL=ALL)到我的條件字符串。但它似乎無法正常工作..我無法瞭解MSI在某些情況下如何工作,這是我的問題。但我也無法在互聯網上找到答案。 請告訴我什麼我做/理解錯誤?thanx提前

回答

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不能等於2,如果它已經等於3


使用MSI verbose logging更好地瞭解發生了什麼事情。以這種方式運行您的安裝:

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

當功能狀態發生變化或屬性被修改時,您會在日誌中看到一條消息。然後,您就可以將實際值與您的預期進行比較。使用其他操作開關代替/i以修改或刪除模式運行它。

+0

謝謝你,阿列克謝。我會在以後嘗試你的情況,當我啓用change_mode在我installer.I只是想知道:如果功能狀態是安裝,並且我不改變它的狀態在change_mode(如果我只是添加一個新的功能)什麼將等於REINSTALL屬性。我猜它會像重新安裝=「NEWONEFEATURE」。如果是這樣,它真的更好用!FEATURE = 3,正如你所說的。謝謝了很多,我明白了現在:)和來自莫斯科的你好) – Nerielle