使用Wix Bootstrapper安装.NET可再发行组件(Burn)

Gad*_*s34 7 c# install wix wix-extension

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

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

按照如何:使用刻录安装.NET Framework的建议.该应用程序可以在没有Web访问权限的服务器上使用,因此从本地可再发行组件安装.net非常重要.引导程序似乎运行良好,并按预期安装框架.但是,setup.exe文件的大小与应用程序大小相同(<5 MB),因此我必须假设在安装过程中仍在下载框架.

问题

  1. 那么,WixNetfxExtension包中"NetFx40ClientWeb"和"NetFx40ClientRedist"之间的区别是什么?

  2. 如何在boostrapper中包含本地可再发行组件,以便不需要下载?

编辑:

我相信我找到了答案在这里:

WiXNetFxExtension将检查名为"redist"的子目录,其中您的包用于包,然后在该路径中不存在时下载它,例如"redist\dotNetFx40_Client_setup.exe".这是标准的Burn行为.

Gil*_*lad 2

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

2.clientRedist - 意味着可重新分发 - 意味着不需要任何互联网连接的完整软件包,您可以将其安装在任何计算机上。


如果您使用可再发行包,应该没问题 - 这是 .Net 4.5 的示例,它与 .Net 4.0 相同,只是差异是可再发行包。

<?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>
Run Code Online (Sandbox Code Playgroud)