4

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

    <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

4

1 回答 1

5

确保正确引用 NetFxExtension。

资料来源:WixNetfxExtension

使用 WixNetfxExtension 属性 要在 MSI 中使用 WixNetfxExtension 属性,请使用以下步骤:

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

例如:

<PropertyRef Id="NETFRAMEWORK20" />

此外,如果您需要 SP2,您可能希望使用该属性NETFRAMEWORK20_SP_LEVEL来获得相应的服务包级别。在进行故障排除时,我还会检查安装日志以查看它是否指示属性值设置为什么。

于 2012-12-05T19:05:33.913 回答