2013-03-18 141 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