Wix& Burn - PackageGroupRef条件。可能吗?

时间:2014-07-03 14:17:31

标签: .net wix burn

我的安装程序有一个bootstrapper项目。引导程序安装.NET,SQLExpress,IIS和我的应用程序。如果操作系统是Windows Vista或更高版本,我想安装.NET4.5,如果是XP,则安装.NET4.0。

我在PackageGroupRef元素中使用简单的<Chain>,使用WixNetFxExtension dll:

<Chain>
  <PackageGroupRef Id="NetFx45Web"/>
  <PackageGroupRef Id="DotNetInstall"/>
</Chain>

有没有办法向PackageGroupRef插入条件?或者我必须编写自己的.NET安装程序包?

谢谢!

2 个答案:

答案 0 :(得分:3)

我想我找到了解决方案。

我创建了两个Wix Burn项目,一个用于安装.NET4.5,另一个用于安装.NET4.0。像这样:

<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Bundle Name="Bootstrapper" Version="1.0.0.0" Manufacturer="VilmosNagy" UpgradeCode="844c755f-f02b-4dd3-8b9c-af2498f3128c">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"/>
    <Chain>
      <PackageGroupRef Id="NetFx40Web"/>
    </Chain>
  </Bundle>
</Wix>

一个用于.NET4.5。我将theese编译为.exe文件。在我将一个Packagegroup插入原始项目之后,根据Windows版本安装了一个.ese .exes。像这样:

<PackageGroup Id="DotNetInstall">
  <ExePackage Id="Net45Installer"
              Name="Net45Installer.exe"
              InstallCommand="-q"
              InstallCondition="VersionNT &gt; v6.0"/>
  <ExePackage Id="Net40Installer"
              Name="Net40Installer.exe"
              InstallCommand="-q"
              InstallCondition="VersionNT &lt; v6.1"/>
</PackageGroup>

它在XP上安装.NET4.0。我在Win7上尝试过,但我认为(我希望)它是正确的。

答案 1 :(得分:1)

在3.9及更早版本中,条件在提供的扩展中得到修复,但您可以包含来自github 3.9github 3.10的来源,并对包ID进行一些修改并修改您想要的条件。

在3.10中,DetectCondition和InstallCondition是可自定义的。 github 3.10.2 netfx4.6

<WixVariable Id="NetFx45WebDetectCondition" Value="NETFRAMEWORK45 &gt;= $(var.NetFx45MinRelease)" Overridable="yes" />
<WixVariable Id="NetFx45WebInstallCondition" Value="" Overridable="yes" />
<WixVariable Id="NetFx45WebPackageDirectory" Value="redist\" Overridable="yes" />