我是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文件的大小与应用程序大致相同(<5MB),因此我不得不假设在安装过程中仍在下载该框架。
问题
那么,WixNetxExtension包中的"NetFx40ClientWeb"one_answers"NetFX40ClientDist"之间有什么区别?
我如何在boostrapper中包含一个本地可重新分发的文件,这样就不需要下载了?
编辑:
我相信我在这里找到了答案:
WiXNetFxExtension将检查一个名为"redist"的子目录,其中您的捆绑包是为软件包准备的,如果在该路径,例如"redist\dotNetFx40_Client_setup.exe"。这是标准路径烧伤行为。
两者之间的区别是:
1.clientWeb-意味着你必须连接到web,然后会下载.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="..SetupProjectdotnetfx45_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>