我是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文件与应用程序的大小大致相同(<5 MB),因此我必须假设在安装期间仍在下载框架。
问题
那么,WixNetfxExtension包中“NetFx40ClientWeb”和“NetFx40ClientRedist”的区别是什么?
如何在boostrapper中包含本地可再发行组件,以便不需要下载?
修改
我相信我找到了答案here:
WiXNetFxExtension将检查一个名为“redist”的子目录 你的软件包是针对软件包然后下载它的,如果它不存在的话 该路径,例如“REDIST \ dotNetFx40_Client_setup.exe”。这是标准的 烧伤行为。
答案 0 :(得分: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="4.5.50709") AND (NOT VersionNT64 OR (Netfx4x64FullVersion="4.5.50709"))" InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion="4.5.50709" OR Netfx4x64FullVersion="4.5.50709"))" />
<MsiPackage Id="MyProg" Cache="no" Compressed="no" DisplayInternalUI="yes" Vital="yes" SourceFile="$(var.installerPath)\MyProgCore.msi" />
</PackageGroup>
</Fragment>
</Wix>