2011-10-11 101 views
1

我遇到了Wix安裝程序的問題,該安裝程序涵蓋三種不同的功能集(客戶端/開發人員和服務器)。在卸載Wix安裝程序時禁用StartIIS7Configuration transaciton

當選擇客戶端時,安裝程​​序不需要執行任何在組件中定義的操作,這些操作未包含在此功能中。

在安裝我不明白一個問題,因爲我已經添加了一個自定義操作

<!-- Only perform the IIS Configuration if we have installed the Admin Application--> 
<Custom Action="SkipIISCA" Before="InstallValidate"> 
    <![CDATA[COMPONENT_TYPE = 2]]> 
</Custom> 

正在安裝的「客戶」組件類型時,這是唯一的運行。自定義動作的SKIPCONFIGUREIIS屬性設置爲1

時或者在卸載一個修復上的安裝程序執行時出現問題。看起來正在嘗試卸載或修復產品時正在嘗試IIS配置,並且似乎不會運行自定義操作來禁用此行爲。

基於註冊表設置,有沒有一種很好的方式來設置卸載/修復時的SKIPCONFIGUREIIS設置?

謝謝。

回答

0

安裝期間設置的一些屬性存儲在隱藏的Windows目錄c:\ windows \ installer中 - 每次安裝一個。在卸載/修復會話的日誌中,您可以看到打開了緩存文件併爲新的卸載/修復會話設置了屬性。 (或者,您可以從卸載/修復日誌中找到該臨時文件,然後使用Orca打開它,在Orca的「屬性」下,它會顯示保存的所有安裝屬性的值)。

基於上述描述,我敢打賭,正在設置自定義操作的屬性未被存儲,但COMPONENT_TYPE的值可用(與用於在自定義操作中設置SKIPCONFIGUREIIS的輸入相同)。

如果是這樣,那麼就使IIS配置的行動是基於這些特性:

<Custom Action="Your_Configure_IIS_Action" Before="InstallFinalize"> 
(NOT SKIPCONFIGUREIIS) OR (COMPONENT_TYPE = 2)</Custom> 

如果你不希望ConfigureIIS發生的卸載/修復過程中設置的任何功能,那麼就使用這些屬性:

<Custom Action="Your_Configure_IIS_Action" Before="InstallFinalize"> 
(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom> 

另一件要考慮的事情是,如果最初的安裝程序是在一個級別 - 例如一個客戶端,並且卸載/修復由服務器級別的某人完成。原始安裝的component_type被存儲。在這種情況下,您可以考慮在卸載/修復過程中添加對component_type的確定方式(通過對話框或其他屬性)。

相關問題