私はBundle.wxsに複数のMsi/execパッケージをチェーンしています。私が管理しているBootstrapperコードでは、現在実行中のパッケージのパラメータ(DisplayName、Vitalなど)を取得したいと考えています。 今、packageIDを提供するイベントしか見つかりませんでした。これを使ってパッケージの他のプロパティに何とかアクセスできますか?管理されたWiXブートストラップパッケージ
5
A
答えて
7
はい。 BootstrapperApplicationData.xml
というファイルがビルドプロセス中に作成され、ブートストラップアプリケーションに含まれています。 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'
属性を設定することで拡張できます。
これはまさに私が探していたものでした。もう一度ありがとうございます。 – microsoftprogrammer
私は[この回答](http://stackoverflow.com/a/17548224/628981)でXMLを解析するためにC#コードを与えました。 –