2013-05-07 23 views
5

私はBundle.wxsに複数のMsi/execパッケージをチェーンしています。私が管理しているBootstrapperコードでは、現在実行中のパッケージのパラメータ(DisplayName、Vitalなど)を取得したいと考えています。 今、packageIDを提供するイベントしか見つかりませんでした。これを使ってパッケージの他のプロパティに何とかアクセスできますか?管理されたWiXブートストラップパッケージ

答えて

7

はい。 BootstrapperApplicationData.xmlというファイルがビルドプロセス中に作成され、ブートストラップアプリケーションに含まれています。 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にコードが表示されます。

最後に、BootstrapperApplicationData.xmlは、CustomTableの要素を使用し、BootstrapperAppplicationData='yes'属性を設定することで拡張できます。

+0

これはまさに私が探していたものでした。もう一度ありがとうございます。 – microsoftprogrammer

+3

私は[この回答](http://stackoverflow.com/a/17548224/628981)でXMLを解析するためにC#コードを与えました。 –