admin 发表于 2017-4-8 14:02:18

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]
查看完整版本: WiX Toolset使用技巧——使用Burn引擎安装.NET Framework