我的安装程序有一个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安装程序包?
谢谢!
答案 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 > v6.0"/>
<ExePackage Id="Net40Installer"
Name="Net40Installer.exe"
InstallCommand="-q"
InstallCondition="VersionNT < v6.1"/>
</PackageGroup>
它在XP上安装.NET4.0。我在Win7上尝试过,但我认为(我希望)它是正确的。
答案 1 :(得分:1)
在3.9及更早版本中,条件在提供的扩展中得到修复,但您可以包含来自github 3.9或github 3.10的来源,并对包ID进行一些修改并修改您想要的条件。
在3.10中,DetectCondition和InstallCondition是可自定义的。 github 3.10.2 netfx4.6
<WixVariable Id="NetFx45WebDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx45MinRelease)" Overridable="yes" />
<WixVariable Id="NetFx45WebInstallCondition" Value="" Overridable="yes" />
<WixVariable Id="NetFx45WebPackageDirectory" Value="redist\" Overridable="yes" />