我在Bundle.wxs中链接了多个Msi / exec包。在我的托管Bootstrapper代码中,我想获取正在执行的当前包的参数(例如DisplayName,Vital等)。 现在,我只发现了提供packageID的事件。我可以用它来以某种方式访问包的其他属性吗?
答案 0 :(得分:7)
是。在构建过程中会创建一个名为BootstrapperApplicationData.xml
的文件,该文件包含在您的Bootstrapper应用程序中。 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'
。