Wix引导程序不会检测已安装的.NET框架

时间:2012-12-05 15:54:08

标签: .net wix version bootstrapper

我有一个Wix安装程序和bootstrapper应用程序来安装我的应用程序和服务。作为先决条件,我需要安装.NET 2.0 SP2 Framework并尝试使用以下codesnippet检测:

    <Chain>
      <PackageGroupRef Id='Netfx2Package' />
      <MsiPackage SourceFile="..\Wix.CHL7.Dispatcher.Service.AZHF\bin\Debug\Wix.CHL7.Dispatcher.Service.AZHF.msi" Id="Wix.CHL7.Dispatcher.Service.AZHF_PackageId" Cache="yes" Visible="no">
        <MsiProperty Name="INSTALLDIR" Value="[INSTALLPATH]" />
        <MsiProperty Name="WixAppFolder" Value="[INSTALLSCOPE]"/>

      </MsiPackage>
    </Chain>
  </Bundle>

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

    <PackageGroup Id="Netfx2Package">
      <ExePackage Id="Netfx2Exe"
                  Cache="no"
                  Compressed="no"
                  PerMachine="yes"
                  Permanent="yes"
                  Vital="yes"
                  SourceFile="C:\Installation\Wix.CHL7.Dispatcher.Service.Bootstrapper\lib\NetFx20SP2_x86.exe"
                  DownloadUrl="http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe"
                  DetectCondition="NETFRAMEWORK20"
                  InstallCondition="FALSE"/>
    </PackageGroup>
  </Fragment>

当我在安装了.NET 2.0 SP2的计算机上运行安装程序时(在注册表中检查过),我的安装程序想要下载并安装框架。

我认为我的DetectCondition不正确,但似乎无法找到解决问题的正确方法。 那么如何检测我的引导程序中是否安装了.NET 2.0 SP2?

提前致谢!

w ^

1 个答案:

答案 0 :(得分:5)

确保正确引用NetFxExtension。

来源:WixNetfxExtension

  

使用WixNetfxExtension属性使用WixNetfxExtension   MSI中的属性,使用以下步骤:

     

为上面列出的要使用的项添加PropertyRef元素   在你的MSI中。添加-ext命令行   调用light.exe以包含WixNetfxExtension时的参数   MSI链接过程。

     

例如:

<PropertyRef Id="NETFRAMEWORK20" />

此外,如果需要SP2,您可能希望使用属性NETFRAMEWORK20_SP_LEVEL来获取相应的Service Pack级别。在进行故障排除时,我还要检查安装日志,看它是否指示属性值的设置。