托管的 WiX 引导程序包

Posted

技术标签:

【中文标题】托管的 WiX 引导程序包【英文标题】:Managed WiX Bootstrapper packages 【发布时间】:2013-05-07 06:00:48 【问题描述】:

我在我的 Bundle.wxs 中链接了多个 Msi/exec 包。在我的托管引导程序代码中,我想获取正在执行的当前包的参数(例如 DisplayName、Vital 等)。 现在,我只找到了提供 packageID 的事件。我可以使用它以某种方式访问​​包的其他属性吗?

【问题讨论】:

【参考方案1】:

是的。在构建过程中会创建一个名为 BootstrapperApplicationData.xml 的文件,并包含在您的引导程序应用程序中。 BootstrapperApplicationData.xml 包含大量关于包含在您的 Bundle Chain 中的捆绑包和软件包的信息,包括 DisplayName 以及尺寸和重要信息。

您会在 .dll 旁边找到 BootstrapperApplicationData.xml。在托管代码中,您可以使用以下代码获取它:

 string folder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
 string dataXmlPath = Path.Combine(folder, "BootstrapperApplicationData.xml");

在本机代码中,更容易使用balutil.lib 中提供的辅助函数。即BalManifestLoad() 然后BalInfoParseFromXml() 将XML 文件解析成一堆方便的结构。可以在 src\ext\BalExtension\balutil\balinfo.cpp 中看到代码。

最后,BootstrapperApplicationData.xml 可以通过使用CustomTable 元素并设置BootstrapperAppplicationData='yes' 属性来扩展。

【讨论】:

这正是我想要的。再次感谢您。 我给了 C# 代码来解析 this answer 中的 XML。

以上是关于托管的 WiX 引导程序包的主要内容,如果未能解决你的问题,请参考以下文章

wix 托管引导程序:回滚失败

Wix 托管引导程序应用程序:通过捆绑将变量传递给 msi

[Wix Bundle Managed Bootstrapper]错误 0x80070002:无法创建托管引导程序应用程序

如何从Wix托管引导程序或自定义操作中读取某些注册表项?

如何强制 WiX 引导程序下载 MSI 包?

WiX - 如何防止引导程序自行安装;只安装链式包