Lesson 6 COM、式の構文、その他

10. XML

今日では、古い .ini 形式でなく、XML ベースの設定ファイルを使用するプログラムがますます増えています。 WiX は、インストールやアンインストールの際にそういう設定ファイルを修正するための、作成済みカスタム・アクションを持っています。 ここで、アプリケーションと一緒に Settings.xml というファイルをインストールすると仮定しましょう。 最初は、ファイルの中身は一番外側のタグだけです。

<settings>
</settings>

インストーラに新しいノードをいくつか追加させることにします。そして、ノードの一つには属性値を持たせます。

<settings>
  <add key="a_key" value="a_value">key_item
    <inside>inside_item</inside>
  </add>
</settings>

これを実現するためには、XmlFile タグを使うことが出来ます。 IdFile のような通常の属性とは別の、Action, Name および Value 属性が XML ファイルの中で何をするかを決定し、ElementPath 属性がどこでそれをするかを決定します。 この最後の属性は、標準的な [XPath 仕様言語[(http://www.w3.org/TR/xpath) を使って、実際の操作が適用される XML ノードを記述します。

  • Action = createElement : ElementPath で指定されたノードの中に、Name の名前の新しいノードが作成されます。
  • Action = setValue : Name が省略された場合は、ElementPath で指定されたノードの内部テキストに Value の値がセットされます。 NameValue の両方が指定された場合は、ElementPath で指定されたノードに Name の名前で Value の値を持った属性が入ります。
  • Action = deleteValue : NameValue の両方が省略された場合は、ElementPath で指定されたノードの内部テキストが削除されます。 Name が指定された場合は、ElementPath で指定されたノードから、Name の名前の属性が削除されます。

という訳で、計画した修正を実行するために、下記の項目を記述します (自分自身で操作の順序 (Sequence) を指定しなければならないことに注意して下さい。 このことは、アンインストールの時に、正しい逆順で変更が削除されることを保証するために、重要なことです)。

<Component Id='Settings' Guid='YOURGUID-574D-4A9A-A266-5B5EC2C022A4'>
  <File Id='XmlSettings' Name='settings.xml' DiskId='1'
      Source='settings.xml' Vital='yes' />
  <util:XmlFile Id='XmlSettings1' File='[INSTALLDIR]settings.xml'
      Action='createElement' Name='add'
      ElementPath='//settings'
      Sequence='1' />
  <util:XmlFile Id='XmlSettings2' File='[INSTALLDIR]settings.xml'
      Action='setValue' Name='key' Value='a_key' 
      ElementPath='//settings/add'
      Sequence='2' />
  <util:XmlFile Id='XmlSettings3' File='[INSTALLDIR]settings.xml'
      Action='setValue' Name='value' Value='a_value' 
      ElementPath='//settings/add'
      Sequence='3' />
  <util:XmlFile Id='XmlSettings4' File='[INSTALLDIR]settings.xml'
      Action='setValue' Value='key_item' 
      ElementPath='//settings/add'
      Sequence='4' />
  <util:XmlFile Id='XmlSettings5' File='[INSTALLDIR]settings.xml'
      Action='createElement' Name='inside' 
      ElementPath='//settings/add'
      Sequence='5' />
  <util:XmlFile Id='XmlSettings6' File='[INSTALLDIR]settings.xml'
      Action='setValue' Value='inside_item' 
      ElementPath='//settings/add/inside'
      Sequence='6' />
</Component>

XML ファイルの中に同じ名前を持った複数のノードが有る場合は、どのノードを参照しているのかを特定するために、 よくある 'node[@attr="value"]' という XPath の形式を使うことが出来ます。 ElementPath は書式指定文字列を受け入れますので、角括弧を使う時は、プロパティとして評価されないように、 バックスラッシュでエスケープしなければいけません ([\[] および [\]])。

この機能は標準のユーティリティー・モジュールに入っていますので、それをリンクしなければなりません。

light.exe -ext WixUtilExtension -out Sample.msi Sample.wixobj

↑ 先頭  |  • 目次  |  « 前へ  |  次へ »  |  ∗ 原文

Table of Contents

1 始めよう

  1. ソフトウェア・パッケージ
  2. 中に入るファイル
  3. 使用に供する
  4. 便利な追加機能
  5. どこにインストールするか
  6. 条件付きインストール
  7. ファイルだけでなく
  8. 削除時の孤児化

2 ユーザー・インタフェイス

  1. 最初のステップ
  2. カスタムの設定
  3. UI の魔法
  4. 英語はわかりますか
  5. チェーンの新しい環
  6. 地域化を考える

3 イベントとアクション

  1. 列に並んで
  2. 追加のアクション
  3. 本に書かれていないこと
  4. コントロールをコントロールせよ
  5. マネージする方法
  6. 後の段階で

4 アップグレードとモジュラー化

  1. 古いのを探す
  2. 自分自身を置き換える
  3. パッチワーク
  4. 断片
  5. 融合するもの

5 Net と .NET

  1. .NET の枠組み
  2. ブートストラップ
  3. インターネットを起動する
  4. ウェブ・ディレクトリ
  5. サービスの提供

6 COM、式の構文、その他

  1. 違う色のコンポーネント
  2. 式の構文
  3. 書式指定文字列
  4. DDE 接続
  5. ディレクトリの作成
  6. 複数メディアのインストーラ
  7. プログラムの追加と削除の項目
  8. 新顔のユーザー
  9. 環境に優しく
  10. XML
  11. COM+ アプリケーション
  12. バージョンごとに

7 SQL

  1. データベースを作成する

8 ユーザー・インタフェイス再び

  1. 一つだけのダイアログ
  2. チューニング・アップ
  3. 相互作用
  4. カスタマイズがいっぱい
  5. これが進捗ですか
  6. よく出来ました
  7. 法律用語
  8. 順番外
  9. 英語はわかりませんか

9 トランスフォーム

  1. インストーラを変形する

10 標準ライブラリ

  1. カスタム・アクションとユーザー・インタフェイス
  2. お静かに願います