2016-08-17 92 views
2

我想安裝一個虛擬目錄(如果安裝了IIS)。如果沒有安裝,那就跳過它。我如何可選擇使用WiX Toolset安裝IIS虛擬目錄?

我有這個檢查:

<Fragment> 
    <Property Id="IIS_MAJOR_VERSION"> 
    <RegistrySearch Id="CheckIISVersion" 
        Root="HKLM" 
        Key="SOFTWARE\Microsoft\InetStp" 
        Name="MajorVersion" 
        Type="raw" /> 
    </Property> 

    <iis:WebSite Id='DefaultWebSite' Description='Default Web Site' Directory='INSTALLFOLDER'> 
    <iis:WebAddress Id="AllUnassigned" Port="80" /> 
    </iis:WebSite> 

</Fragment> 

並根據IIS_MAJOR_VERSION存在,我安裝的功能:

<Feature Id="ProductFeature2" Title="Setup" Level="1"> 
    <ComponentRef Id="AppIIS" /> 
    <Condition Level="0">NOT IIS_MAJOR_VERSION</Condition> 
</Feature> 

這部分似乎是工作,但是,iis:WebSite節點造成問題。我只想找到它,如果IIS_MAJOR_VERSION也存在。

如果我將iis:WebSite節點移動到組件組中,它將起作用,但iis:WebSite未處於「定位器」模式並且已安裝和卸載(這很糟糕)。

有沒有一種方法可以有條件地運行iis:WebSite的支票?

回答

0

當您添加IIS擴展中的任何元素(如<iis:WebSite>)時,將在InstallExecuteSequence表中添加一個名爲ConfigureIIs的特殊自定義操作。這個自定義操作是一個所謂的與IIS管理相關的所有入口點,藉助於WiX IIS擴展。

幸運的是,ConfigureIIs自定義操作默認情況下是根據需要跳過它的方式。如果使用Orca打開生成的MSI包並導航到左窗格上的InstallExecuteSequence表,則會看到該條件使用SKIPCONFIGUREIIS屬性。因此,想法是將其設置爲某些內容(例如1),以防您不需要執行任何與IIS相關的活動。

<SetProperty Id="SKIPCONFIGUREIIS" Value="1">NOT IIS_MAJOR_VERSION</SetProperty> 

它可與SetProperty元素來完成