我是Burn的新手并且学习开发Managed Bootstrapper Application(MBA)以及Bundle包。由于MBA需要Dot Net Framework 4.x,我们需要在执行Managed Interface之前将其安装在目标操作系统上。
问题:在从一个软件包中启动Bootstrapper的托管接口之前,是否可以启动.Net framework 4.x安装?
想法:不是将dotnet框架4.x打包到一个软件包中,我们为dotnet框架4.xx创建单独的软件包并添加我们的主软件包(包含MBA),这是一个好主意吗?进入那个,所以首先它将启动dotnet框架4.xx安装(如果需要)然后将启动我们的主包(作为一个单独的exe)?
我的意思是,之前有没有人尝试过这样的事情并得到一些反馈指导?
由于 法鲁克。
答案 0 :(得分: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)" />
如果机器上尚未安装NETFX软件包,ManagedBootstrapperApplicationHost
(处理托管BA的加载)将负责安装NETFX软件包。
您可以在src\ext\BalExtension\mba\host\host.cpp
然后src\ext\BalExtension\wixstdba
查看所有相关内容,以了解前需求BA。