Mondo UIを利用する
市販製品などの多くは、カスタムインストール以外にも必須のものだけをインストールするというオプションが用意されています。WiXでもこの構成を表すUIが用意されています。それが「Mondo UI」です。次は、これを使ったインストーラを作ってみましょう。
UIの変更は、WixUI_FeatureTreeの代わりに、WixUI_Mondoと変更するだけです。それだけを行なったものが「STEdit5.wxs」です(変更箇所は一行だけなのでソースは省略しています)。実行すると、Licence画面の次に画面1が出てくるようになります。

[Typical]は必須機能のみ、[Complete]は全部となっているのですが、実はSTEdit5では、[Typical]を選んでも全部インストールされてしまいます。これではせっかくの選択機能がまったく意味を成しません。あらかじめこの部分を設定できるようにするために、Mondo UIでは、[Typical]の場合はFeatureのLevel属性が3以下のものを、[Complete]の場合は 1000以下のものをインストールするように構成されています(デフォルトは[Typical]になるため、カスタムも最初の状態は[Typical]で始まります)。そのため、今までのように Levelを1のままにしておくと、全部必須機能として扱われてしまうため、この部分を変更する必要があります。変更したものが「STEdit6.wxs」です(下記には、Feature部分のみを抜粋します)。
<Feature Id="STEdit" Level="1" Title="$(var.ProductName)" Description= "$(var.ProductName) の実行ファイル" AllowAdvertise="no" Display="expand" ConfigurableDirectory="INSTALLLOCATION" Absent="disallow"> <Feature Id="Sample" Level="100" Title="サンプルファイル" Description= "$(var.ProductName) のサンプルファイル" AllowAdvertise="no"> <Feature Id="Sample1" Level="100" Title="サンプル1" Description= "$(var.ProductName) のサンプル1" AllowAdvertise="no"/> <Feature Id="Sample2" Level="100" Title="サンプル2" Description= "$(var.ProductName) のサンプル2" AllowAdvertise="no"/> </Feature> </Feature>
こちらでインストールしてみると、[Typical]と[Complete]で、インストールする構成が変わることが分かります。もちろん、今まで同様、カスタムも選択できるため、細かい指定をしたい場合も十分フォローできます。
それでは最後に今回新たに出てきたWiXのデータの説明です。
WiXのXML要素について
今回紹介するのは次の3つの要素です。
- ComponentRef 要素
- DirectoryRef 要素
- FeatureRef 要素
これら3つの要素の属性はすべて同じです(下表)。個々のIdは、それぞれ対になる要素のIdを指します。
| 属性名 | 説明 |
Id(必須) | 参照先のId名を指定します。 |
<?define ?>要素
<?define ?>要素は、C/C++の#defineとほぼ同義のプリプロセッサ変数として用意されています。<?define ProductName = "製品名" ?>のようにあらかじめ定義しておくことで、製品名を一種の変数化させることができ、任意の場所で利用することが可能になります。プロパティとは異なり、コンパイル時に解決してしまうため、プロパティが参照できないような場所に対しても利用することができます。製品名などのように、開発初期の時点では未確定のものであっても、定義箇所を一箇所にまとめておくことにより、名称変更に対応しやすいようにすることができます。また、属性の値とInnterTextはどこでも参照することができます。他にも条件分岐などさまざまなものがあります。詳細は、Preprocessorを参照してください。
終わりに
ようやくWiXの基本的な構成の解説が終わりました。次回は、UI解説のパート3として、独自ダイアログの作成に挑戦します。WiXの標準UIだけでも、管理の部分がまかなえますが、必要なUIとは必ずしも一致しているとは限りません。特に市販のソフトウェアや業務アプリケーションなどでは、製品特有の処理が必要になることもあります。次回は、WiX 2.0.4221.0では用意されていない、ユーザー名やシリアル番号の入力画面を実際に作成してみたいと思います。
