2013-10-31 47 views
2

我正在使用以下代碼在我的msi-setup中安裝Windows功能(如IIS),該功能還會安裝我的wcf服務。Wix - 我在哪裏可以安裝Windows功能

<Property Id="INSTALLIISPROP" Value="C:\Windows\System32\dism.exe"></Property> 
<CustomAction Id="InstallIISCA" Return="check" Property="INSTALLIISPROP" Execute="deferred" HideTarget="yes" Impersonate="yes" 
     ExeCommand="/online /enable-feature /featurename:IIS-WebServerRole /featurename:IIS-WebServerManagementTools /featurename:IIS-ManagementConsole" ></CustomAction> 
<InstallExecuteSequence> 
    <Custom Action="InstallIISCA" Before="InstallFinalize">NOT Installed</Custom> 
</InstallExecuteSequence> 

做工精細,只是我需要的非法入境者服務安裝過程中已經安裝(獲取安裝的websides,ECT的列表在UI)。我創建了一個謝勝利,安裝項目,並把代碼在那裏,但如果我有一個虛擬文件只執行我的命令:

<Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
     <Component Id="ProductComponent" Guid="ff876420-51ed-4bfc-bfd0-167a6333bf5e"> 
    <File Id="Product.wxs" Source="Product.wxs" KeyPath="yes" Checksum="yes"/> 
     </Component> 
    </ComponentGroup> 
</Fragment> 

此外,我不希望在我的「已安裝應用程序」列表中的項目謝勝利。這將是什麼「正常」的位置?我可以直接從Bootstrapper執行我的命令嗎?或者我可以在加載UI之前執行Custiom Action並檢查任何條件?

<Chain > 
    <PackageGroupRef Id="NetFx45Web"/> 
    <MsiPackage SourceFile="ServiceSetup.msi" EnableFeatureSelection="yes" DisplayInternalUI="yes" ForcePerMachine="yes"/> 
</Chain> 

回答

2

該解決方案其實很簡單。 Before =「CostFinalize」在「準備」對話框中安裝特徵。

<CustomAction Id="InstallIISCA" Return="ignore" Property="DISMPFAD" Execute="oncePerProcess" Impersonate="yes" 
    ExeCommand="/online /enable-feature /all /featurename:IIS-WebServerRole /featurename:IIS-WebServer /featurename:IIS-CommonHttpFeatures /featurename:IIS-StaticContent /featurename:IIS-DefaultDocument /featurename:IIS-DirectoryBrowsing /featurename:IIS-HttpErrors /featurename:IIS-ApplicationDevelopment /featurename:IIS-ASPNET /featurename:IIS-ASPNET45 /featurename:IIS-NetFxExtensibility /featurename:IIS-NetFxExtensibility45 /featurename:IIS-ISAPIExtensions /featurename:IIS-ISAPIFilter /featurename:IIS-HealthAndDiagnostics /featurename:IIS-HttpLogging /featurename:IIS-LoggingLibraries /featurename:IIS-RequestMonitor /featurename:IIS-Security /featurename:IIS-RequestFiltering /featurename:IIS-HttpCompressionStatic /featurename:IIS-WebServerManagementTools /featurename:IIS-ManagementConsole /featurename:IIS-IPSecurity /featurename:WAS-WindowsActivationService /featurename:WAS-ProcessModel /featurename:WAS-NetFxEnvironment /featurename:WAS-ConfigurationAPI /featurename:WCF-NonHTTP-Activation /featurename:WCF-Pipe-Activation45 /featurename:WCF-TCP-Activation45 /featurename:WCF-TCP-PortSharing45 /featurename:WCF-HTTP-Activation45" > 
    </CustomAction> 
    <InstallUISequence> 
    <Custom Action="InstallIISCA" Before="CostFinalize" Overridable="yes">NOT Installed AND (VersionNT > 601)</Custom> 
    </InstallUISequence > 
相關問題