2013-05-07 4 views
5

Я связал несколько пакетов Msi/exec в моем Bundle.wxs. В моем управляемом коде Bootstrapper я хотел бы получить параметры (такие как DisplayName, Vital и т. Д.) Текущего исполняемого пакета. Прямо сейчас, я только нашел события, которые предоставляют packageID. Могу ли я использовать это, чтобы каким-то образом получить доступ к другим свойствам пакета?Управляемые пакеты BootStrapper для WiX

ответ

7

Да. Во время процесса сборки создается файл с именем BootstrapperApplicationData.xml и включен в приложение Bootstrapper. В BootstrapperApplicationData.xml есть много информации о пакете и пакетах, включенных в ваш BundleChain, включая 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'.

+0

Это именно то, что я искал. Еще раз, спасибо. – microsoftprogrammer

+3

Я дал код C# для анализа XML в [этом ответе] (http://stackoverflow.com/a/17548224/628981). –

Смежные вопросы