托管WiX Bootstrapper软件包

时间:2013-05-07 06:00:49

标签: wix

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

1 个答案:

答案 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'