2013-05-07 120 views
5

我在我的Bundle.wxs中鏈接了多個Msi/exec包。在我的託管Bootstrapper代碼中,我想獲取正在執行的當前包的參數(如DisplayName,Vital等)。 現在,我只發現了提供packageID的事件。我可以用它來以某種方式訪問​​軟件包的其他屬性嗎?託管的WiX引導程序包

回答

7

是的。在構建過程中會創建一個名爲BootstrapperApplicationData.xml的文件,並將其包含在Bootstrapper應用程序中。 BootstrapperApplicationData.xml有大量關於BundleChain中包含的包和包的信息,其中包括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中看到代碼。

最後,可以使用CustomTable元素並設置BootstrapperAppplicationData='yes'屬性來擴展BootstrapperApplicationData.xml

+0

這正是我所期待的。再一次感謝你。 – microsoftprogrammer 2013-05-14 04:49:43

+3

我給了C#代碼來解析[這個答案]中的XML(http://stackoverflow.com/a/17548224/628981)。 – 2013-07-09 12:38:52

相關問題