我在我的 Bundle.wxs 中链接了多个 Msi/exec 包。在我的托管引导程序代码中,我想获取正在执行的当前包的参数(例如 DisplayName、Vital 等)。现在,我只找到了提供 packageID 的事件。我可以使用它以某种方式访问包的其他属性吗?
问问题
1770 次
1 回答
7
是的。一个名为的文件BootstrapperApplicationData.xml
在构建过程中创建并包含在您的引导程序应用程序中。BootstrapperApplicationData.xml
有很多关于包含在你的包和包中的信息,Bundle
Chain
包括DisplayName
尺寸和重要信息。
您会在BootstrapperApplicationData.xml
.dll 旁边找到右侧的。在托管代码中,您可以使用以下代码获取它:
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'
属性来扩展。
于 2013-05-07T12:57:39.850 回答