[译]:WiX Toolset使用技巧——使用Burn引擎安装.NET Framework

标签: WiX Toolset, 官方教程, 中文翻译

博客分类: 官方教程

返回目录索引
原文地址:Install the .NET Framework Using Burn
译文地址:WiX Toolset使用技巧——使用Burn引擎安装.NET Framework

How To: Install the .NET Framework Using Burn

使用.NET Framework编写应用时,通常需要将Framework一起打包,然后与应用一起安装。Wix 3.6及以上版本可以使用Burn处理。

步骤1:为应用创建捆绑包

具体处理步骤见:原文:Building Installation Package Bundles译文:WiX Toolset入门——安装包捆版包基础元素介绍

步骤2:添加一个.NET PackageGroups引用

  1. 向捆绑包项目添加WixNetFxExtension引用
  2. 将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版本。

  1. 从捆绑包中引用托管引导应用宿主

    <BootstrapperApplicationRef
    Id="ManagedBootstrapperApplicationHost">
    <Payload
        Name="BootstrapperCore.config"
        SourceFile="$(var.MyMBA.TargetDir)\TestUX.BootstrapperCore.config"/>
    <Payload
        SourceFile="$(var.MyMBA.TargetPath)"/>
    </BootstrapperApplicationRef>
    
  2. 将引导应用定位到操作系统内置的.NET版本。如Windows 7中就是.NET 3.5。

  3. 如果旧版本不可用,则使用新版.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>
    

译:奇葩史

没有评论