您在“创意”部分中描述的内容已经实现。您需要做的就是包含适当的 NETFX PackageGroup
,并且所有变量都已为您设置好。例如,WiX 工具Bundle
集以标准方式设置它的托管引导程序应用程序:
<BootstrapperApplicationRef Id='ManagedBootstrapperApplicationHost'>
<Payload Name='BootstrapperCore.config' SourceFile='WixBA.BootstrapperCore.config' />
<Payload SourceFile='WixBA.dll' />
<Payload SourceFile='License.htm' />
</BootstrapperApplicationRef>
链中的第一件事是对 NETFX 4.0 web redist 的引用。看起来像:
<Chain>
<PackageGroupRef Id='NetFx40Web' />
WixNetfxExtension 满足此参考。WixNetfxExtension 中的重要代码是WixVariables
告诉ManagedBootstrapperApplicationHost
链中的哪个包是 NETFX:
<WixVariable Id="WixMbaPrereqPackageId" Value="NetFx40Web" />
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="$(var.NetFx40EulaLink)" />
如果ManagedBootstrapperApplicationHost
机器上尚未安装 NETFX 包,则(处理托管 BA 的加载)将负责安装它。
你可以看到所有这些是如何工作的src\ext\BalExtension\mba\host\host.cpp
,然后src\ext\BalExtension\wixstdba
是 pre-req BA。