WiX Toolset使用技巧——使用Burn引擎安装.NET Framework
使用.NET Framework编写应用时,通常需要将Framework一起打包,然后与应用一起安装。Wix 3.6及以上版本可以使用Burn处理。步骤1:为应用创建捆绑包
具体处理步骤见:原文:Building Installation Package Bundles、译文:WiX Toolset入门——安装包捆版包基础元素介绍
步骤2:添加一个.NET PackageGroups引用
向捆绑包项目添加WixNetFxExtension引用
将PackageGroupRef元素添加到捆绑 包的chain元素下,以此引用你应用 所需的.NET包。关于详细列表见:原文:WixNetfxExtension。另,确保PayloadGroupRef元素放置在其他任何需要.NET的软件包之前。
<Chain>
<PackageGroupRef Id="NetFx45Web"/>
<MsiPackage Id="MyApplication" SourceFile="$(var.MyApplicationSetup.TargetPath)"/>
</Chain>
步骤3:打包.NET Framework再发行组件【可选】
.NET PackageGroup会在需要.NET再发行组件时,进行远程下载。如果你想要创建不需要Internet连接的捆绑包,则可以将.NET再发行包打包到你的捆绑包中。这样做需要你本地有再发行组件的副本,例如签入到你的源代码控制系统中。
<Bundle>
<PayloadGroup Id="NetFx452RedistPayload">
<Payload Name="redist\NDP452-KB2901907-x86-x64-AllOS-ENU.exe"
SourceFile="X:\path\to\redists\in\repo\NDP452-KB2901907-x86-x64-AllOS-ENU.exe"/>
<PayloadGroup/>
</Bundle>
注意:捆绑包chain元素下的PackageGroupRef元素仍是需要的。
自定义bootstrapper应用
任何本机bootstrapper应用(包括WiX标准引导应用),都可以和包含.NET的捆绑包配合使用。
托管引导应用在包含.NET时,必须注意保证它们不会不必要地依赖于正在安装的.NET Framework版本。
从捆绑包中引用托管引导应用宿主
<BootstrapperApplicationRef
Id="ManagedBootstrapperApplicationHost">
<Payload
Name="BootstrapperCore.config"
SourceFile="$(var.MyMBA.TargetDir)\TestUX.BootstrapperCore.config"/>
<Payload
SourceFile="$(var.MyMBA.TargetPath)"/>
</BootstrapperApplicationRef>
将引导应用定位到操作系统内置的.NET版本。如Windows 7中就是.NET 3.5。
如果旧版本不可用,则使用新版.NET支持。以下示例为BootstrapperCore.config文件的内容:
<configuration>
<configSections>
<sectionGroup name="wix.bootstrapper" type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperSectionGroup, BootstrapperCore">
<section name="host" type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.HostSection, BootstrapperCore" />
</sectionGroup>
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0" />
</startup>
<wix.bootstrapper>
<host assemblyName="MyBootstrapperApplicationAssembly">
<supportedFramework version="v3.5" />
<supportedFramework version="v4\Client" />
<!-- Example only. Replace the host/@assemblyName attribute with
an assembly that implements BootstrapperApplication. -->
<host assemblyName="$(var.MyMBA.TargetPath)" />
</host>
</wix.bootstrapper>
</configuration>
页:
[1]