2

我是 Burn 的新手,正在学习开发 Managed Bootstrapper Application (MBA) 以及 Bundle 包。由于 MBA 需要 Dot Net Framework 4.x,我们需要在执行托管接口之前将其安装在目标操作系统上。

问题:这是否可以在从一个包中启动 Bootstrapper 的托管接口之前启动 .Net framework 4.x 安装?

想法:我们不是将 dotnet framework 4.x 打包到一个包中,而是为 dotnet framework 4.xx 创建单独的包并将我们的主包(包含 MBA)也添加到其中,这样首先它会是一个好主意吗?启动 dotnet framework 4.xx 安装(如果需要),然后启动我们的主包(作为单独的 exe)?

我的意思是,以前有没有人尝试过这样的事情并得到了一些反馈指导?

谢谢法鲁克。

4

1 回答 1

4

您在“创意”部分中描述的内容已经实现。您需要做的就是包含适当的 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。

于 2013-05-09T14:30:43.553 回答