2012-02-23 174 views
0

嗨,我使用下面的代碼來啓用Windows 7中的IIS 7.5。它的工作正常。但問題是每次運行設置(.MSi)IIS安裝和卸載時間也會啓用IIS7.5,如何將條件檢查iis7.5是否禁用,然後我想安裝IIS。我正在使用wix3.5IIS 7.5安裝只需要一次,如果IIS禁用

請幫幫我。

<CustomAction Id="InstallIISCA" PatchUninstall="no" Return="check" Property="INSTALLIISPROP" Execute="oncePerProcess" HideTarget="yes" Impersonate="yes" 
     ExeCommand=" /Online /Enable-Feature /FeatureName:IIS-WebServerRole /FeatureName:IIS-ApplicationDevelopment /FeatureName:IIS-ASPNET /FeatureName:IIS-IIS6ManagementCompatibility /FeatureName:IIS-WebServerManagementTools /FeatureName:IIS-ISAPIFilter /FeatureName:IIS-ISAPIExtensions /FeatureName:IIS-NetFxExtensibility /FeatureName:IIS-WindowsAuthentication /FeatureName:IIS-IISCertificateMappingAuthentication /FeatureName:IIS-IPSecurity /FeatureName:IIS-ISAPIExtensions /FeatureName:IIS-ISAPIFilter /FeatureName:IIS-ManagementConsole "/> 
<InstallExecuteSequence> 
    <Custom Action="InstallIISCA" Before="ConfigureIIs" /> 
</InstallExecuteSequence> 
<Property Id="INSTALLIISPROP" Value="dism.exe"></Property> 

回答

0

您可以添加多個限制何時運行自定義操作的條件。要只運行在安裝時你的IIS檢查,您的自定義元素改成這樣:

<Custom Action="InstallIISCA" Before="ConfigureIIs"> 
    Not Installed 
    </Custom> 

你的描述有大約條件句几上運行。我認爲你也要求一個條件,如果IIS啓用(?也許你的意思是安裝?)不做安裝。要做到這一點,首先設置一個屬性爲條件(在這裏,檢查IIS的版本,以確定是否安裝了)

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

然後包括在自定義操作條件的財產:

<Custom Action="InstallIISCA" Before="ConfigureIIs"> 
    Not Installed AND IIS_MAJOR_VERSION 
    </Custom> 

並猜測你已經有了「ConfigureIIS」操作的一些條件,所以它不會不必要地運行。