2013-03-18 233 views
2

我想要一個引導程序安裝.NET 4.5(如果不可用),然後再安裝我的setup.msi。如果機器有.NET 4.5,那麼我只想安裝產品setup.msi。WiX引導程序應用程序

以下是我的代碼:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 

    <Bundle Name="AAA" Version="1.0.0.0" UpgradeCode="8DA460D6-B4CB-4ED0-A1FE-44F269070647"> 
     <BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost"> 
     </BootstrapperApplicationRef> 

     <Chain> 
      <PackageGroupRef Id="Netfx45FullP"/> 

      <MsiPackage Compressed="yes" Vital="yes" Id="PMService" Cache="yes" Visible="no" 
       SourceFile="C:\Users\abc.msi"> 
      </MsiPackage> 
     </Chain> 
    </Bundle> 

    <Fragment> 
     <WixVariable Id="WixMbaPrereqPackageId" Value="Netfx45Full" /> 
     <WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" /> 

     <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4FullVersion" /> 
     <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4x64FullVersion" Win64="yes" /> 

     <PackageGroup Id="Netfx45FullP"> 
      <ExePackage Id="Netfx45" Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes" 
         InstallCommand="/q" 
         SourceFile="dotNetFx45_Full_x86_x64.exe" 
         DetectCondition="(Netfx4FullVersion=&quot;4.5.50709&quot;) AND (NOT VersionNT64 OR (Netfx4x64FullVersion=&quot;4.5.50709&quot;))" 
         InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion=&quot;4.5.50709&quot; OR Netfx4x64FullVersion=&quot;4.5.50709&quot;))"/> 
     </PackageGroup> 
    </Fragment> 
</Wix> 

回答

2

你要刪除您安裝條件的AND (NOT (Netfx4FullVersion=&quot;4.5.50709&quot; OR Netfx4x64FullVersion=&quot;4.5.50709&quot;)一部分。

檢測條件將處理是否安裝.NET Framework的情況。如果檢測到已安裝,則不會再次安裝。

安裝條件將決定是否允許包裝在機器上。如果評估結果爲false,將從機器上卸載軟件包。

通過將檢測條件添加到安裝條件中,基本上可以確保該軟件包可以安裝在機器上並保留在機器上。 :)

+0

感謝您的回覆Rob Mensching我想檢測條件,因爲我的要求是...如果.net框架沒有安裝在機器中,我的引導程序想安裝.net frmaework,然後安裝產品。如果機器已經有.net框架,那麼......它只是想安裝產品安裝程序..我有點糊塗......你能清楚這一點嗎?而且它仍然無法正常工作 – Programmer 2013-03-19 04:02:05