【问题标题】:Installing .NET redistributable with Wix Bootstrapper (Burn)使用 Wix Bootstrapper (Burn) 安装 .NET 可再发行组件
【发布时间】:2013-12-04 15:43:06
【问题描述】:

我是 Wix/Burn 的新手,正在尝试了解一些基础知识。我有一个简单的引导程序,它使用以下链安装所需的 .net 4.0 框架:

<Chain>
    <PackageGroupRef Id="NetFx40ClientRedist"/>
    <MsiPackage Id="MyApp" SourceFile="$(var.WixInstaller.TargetPath)" DisplayInternalUI="yes" />
</Chain>

按照How To: Install the .NET Framework Using Burn 的建议。 该应用程序可以在没有 Web 访问权限的服务器上使用,因此从本地可再发行组件安装 .net 非常重要。引导程序似乎工作得很好,并按预期安装了框架。不过,setup.exe 文件的大小与应用程序(

问题

  1. 那么,WixNetfxExtension 包中的“NetFx40ClientWeb”和“NetFx40ClientRedist”有什么区别?

  2. 如何在 boostrapper 中包含本地可再发行组件,从而无需下载?

编辑:

相信我找到了答案here

WiXNetFxExtension 将检查一个名为“redist”的子目录,其中 您的捆绑包适用于该软件包,如果它不存在则下载它 那条路,例如“redist\dotNetFx40_Client_setup.exe”。这是标准 燃烧行为。

【问题讨论】:

  • 您是如何将 redist 文件夹复制到安装程序的本地计算机的?
  • 我通过在 NetFx40Redist 源代码中的“ExePackage”定义中添加“SourceFile”属性来使其工作,但我仍然想知道如何在不破解源代码的情况下执行此操作。

标签: c# wix installation wix-extension


【解决方案1】:

两者的区别是:
1. clientWeb - 意味着您必须连接到网络,然后将下载 .net 4.0 并安装在机器上。

2.clientRedist - 表示可再发行 - 表示不需要任何连接到互联网的完整包,您可以将其安装在任何计算机上。


如果您使用可再发行包,您应该没问题 - 这是 .Net 4.5 的示例,对于 .Net 4.0 也是一样,只有 diff 是可再发行包。

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
  <Bundle Name="Prog" Version="1.0.0.0" Manufacturer="my Corporation" UpgradeCode="*">
    <Chain>
      <!-- TODO: Define the list of chained packages. -->
      <PackageGroupRef Id="Netfx45FullPackage" />
    </Chain>
  </Bundle>
  <Fragment>
    <PackageGroup Id="Netfx45FullPackage">
      <ExePackage Id="Netfx45Xxx" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile="..\SetupProject\dotnetfx45_full_x86_x64.exe" DetectCondition="(Netfx4FullVersion=&quot;4.5.50709&quot;) AND (NOT VersionNT64 OR (Netfx4x64FullVersion=&quot;4.5.50709&quot;))" InstallCondition="(VersionNT &gt;= v6.0 OR VersionNT64 &gt;= v6.0) AND (NOT (Netfx4FullVersion=&quot;4.5.50709&quot; OR Netfx4x64FullVersion=&quot;4.5.50709&quot;))" />

      <MsiPackage Id="MyProg" Cache="no" Compressed="no" DisplayInternalUI="yes" Vital="yes" SourceFile="$(var.installerPath)\MyProgCore.msi" />
    </PackageGroup>
  </Fragment>
</Wix>

【讨论】:

  • 如果安装了更高版本的.Net,我们如何检测并跳过安装?
  • DetectCondition="(Netfx4FullVersion="4.5.50709") AND (NOT VersionNT64 OR (Netfx4x64FullVersion="4.5.50709"))"
  • 是的,我正在使用这个条件。但是,在安装了 4.6 的系统中,burn 会尝试启动安装程序。然后我必须从 .Net 安装程序 UI 手动退出 .Net 安装程序。
猜你喜欢
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
  • 2013-02-24
相关资源
最近更新 更多