WiX @ wiki

条件分岐させる

最終更新:

wixwiki

- view
管理者のみ編集可

何を分岐できるか


Conditionタグを使用すると、Windowsインストーラのいくつかの挙動を実行時に変更することができる。WiXのヘルプをみていただくことで、Conditionタグで何ができるかわかるはずだ。Conditionタグで分岐できる内容は主に以下の3つである。

  • インストーラの起動
  • Component/Featureのインストール
  • ダイアログ上オブジェクトの表示・振る舞い

インストーラ起動の制御


Productの子要素としてConditionを書く場合、インストーラそのものを起動するか否かを制御することができる。

<Product .....>
    <Condition Message="条件を満たしていない">
        <![CDATA[ HOGE = 1 ]]>
    </Condition>
</Product>

この例の場合、変数「HOGE」が1であれば、インストーラは正常に起動する。「HOGE」が1以外の場合、Message属性に記述した「条件を満たしていない」というメッセージを表示してインストーラが中断する。

最もよくある例としては、OSのバージョンや事前に存在しているアプリケーション・レジストリ値などの条件を元に、インストール作業を継続できるか否かを決定する、といったものである。

Component/Featureのインストール制御


FeatureタグにはLevel属性が存在するが、このLevel属性を動的に変更する方法として、Featureの子要素にConditionを指定する方法がある。(FeatureタグのLevel属性については「Featureの概念」を参照)

<Feature Id="FEATURE1" Level="1">
    <Condition Level="1">
        <![CDATA[ HOGE = 0 ]]>
    </Condition>
    <Condition Level="0">
        <![CDATA[ HOGE <> 0 ]]>
    </Condition>
</Feature>

Featureタグの子要素としてConditionタグを使用する場合、必ずLevel属性が必要になる。この場合、変数「HOGE」が0になるとIdが「FEATURE1」の機能のインストールLevelは1に、変数「HOGE」が0以外になるとIdが「FEATURE1」の機能はLevel0となる。


Componentをインストールするか否かを動的に変更するには、Componentの子要素としてConditionを定義すればよい。

<Component .....>
    <Condition>
        <![CDATA[ HOGE = 0 ]]>
    </Condition>
</Component>


これらの方法は複雑な制御を必要とする場合に使用するものだと思われるが、私自身Component/FeatureをConditionで制御する方法を使ったことが今のところ無い。(そのためあまり理解できていないため、誤った内容を記載していたらご指摘願いたい)
機能ごとにインストールするか否かをインストールするユーザが選択する、という制御であれば、Wixで用意されている「機能選択できるUI」を使って制御するのが簡単だろう。


ダイアログ上オブジェクトの表示・振る舞い制御


何か条件を満たすまでボタンを無効にしておく、といった制御はインストーラのインターフェースとして比較的よく見るものだ。これを実現するためには、制御したいコントロール(ダイアログの子要素)の下にConditionタグを記述すればよい。

<Dialog ...>
    <Control Id="CONTROL1" ...>
        <Condition Action="enable">
            <![CDATA[ HOGE = 1 ]]>
        </Condition>
        <Condition Action="disable">
            <![CDATA[ HOGE <> 1 ]]>
        </Condition>
    </Control>
</Dialog>

この例では、変数「HOGE」が1になると、IdがCONTROL1のオブジェクトが有効になり、変数「HOGE」が1以外になると、IdがCONTROL1のオブジェクトが無効となる。


visitor: - (today: - )  Author : nagatyo

コメント (注:コメントは管理人が適宜消去する場合があります)
名前
コメント

すべてのコメントを見る

記事メニュー
目安箱バナー