WiXのXML要素について
今回出てきたXML要素の簡単な説明です。実用上必須となる部分以外は省略していますので、詳しくはWiXのマニュアルを参照してください。
なお、オンラインマニュアルの内容は、バイナリの展開先の「doc」フォルダにある「wix.chm」の部分的な抜粋となっています。随時充実させていくと書かれていますので、将来的にはオンラインマニュアルが最新のものになるとは思いますが、執筆時点ではページが用意されていない部分もありました。
特殊要素
msiデータベースとはリンクしていない特別な要素です。
WiXのソースファイルのルート要素です。XMLファイルとして、このファイルがWiXのものであることを宣言するものとなります。
Wix要素の属性
| 属性名 | 説明 |
RequiredVersion | コンパイラのバージョンを要求するための属性です。通常、この値を設定することはありませんが、複数マシンでの開発などでバージョン不整合を防止するなどで設定する場合もあります。 |
実質的なルート要素です。Cのプログラムで言えばmain関数に当たります。1つのインストーラにつき、1つだけこの要素を持つことができ、この要素がある場合は、作成するものがmsiファイルであるという識別情報としての役割も持っています。
Product要素の属性
| 属性名 | 説明 |
Id(必須) | 製品識別子となるGUIDを指定します。省略できません。Windowsはこの値を使って製品がインストールされているか、どんなものをインストールしているかなどの詳細情報を把握します。ProductCode として格納されています。 |
Codepage | インストーラの内部データのコードページを指定します。日本語の場合は、932を指定します。この属性のみ、コンパイラが文字コードの解釈に利用するようになっています。英語以外のLanaguage属性を指定する場合は必ず対になる値を指定する必要があります。 |
Language(必須) | インストーラの対応言語を指定します。日本語の場合は、1041を指定します。ProductLanguage として格納されます。 |
Manufacturer(必須) | 開発元を指定します。通常は開発会社名を記載します。個人での開発であれば個人名または、ブランド名などを指定します。Manufacturer として格納されます。 |
Name(必須) | インストーラの製品表示名を指定します。ユーザーが識別できる名前情報となります。ProductName として格納されます。 |
UpgradeCode | 一連の製品群を識別するためのグループコードになります。サンプル同様、省略することもできますが、省略した場合、製品グループとしての所属がなくなるため、Windows Installerによる更新ができなくなります。UpgradeCode として格納されます。 |
Version(必須) | インストーラの製品バージョンを指定します。省略できません。3つの数値(Major.Minor.Build)で構成されています。MajorおよびMinorは0~255まで、Buildは0~65535までの数値を指定することができます。複数の同一製品(ProductCodeの一致するもの)でどちらのバージョンがより新しいものかを判定する場合などに利用します。ただし、すべて0は指定してはいけません。ProductVersionとして格納されます。 |
msi(msm)ファイルのサマリー(エクスプローラのプロパティで表示される詳細情報)を指定するための要素です。一部の情報は、インストーラの起動時時に参照されます。
Package要素の属性
| 属性名 | 説明 |
Id(必須) | ファイルの識別子となるGUIDを指定します。省略はできませんが、自動生成させることができます。その場合、ビルドするたびに情報が自動的に設定されるようになっています(通常は自動生成を指定します)。PackageCode と呼ばれる情報として格納されます。 |
Comments | オプションのコメント属性となります。省略しない場合、コメント表示される場所に表示されます。Vistaでは積極的に利用されていますので、記載しておくことをお勧めします。 |
Compressed | デフォルトで圧縮するかどうかを指定します。省略した場合はnoとなりますが、実際は各ファイルレベルでの圧縮指定が優先されるため、省略しても問題ありません。 |
Description | ファイルの説明です。Comments属性に似ていますが、利用形態が異なります。 |
InstallerVersion | インストーラの実行に必要となるランタイムバージョンを指定します。9x系および、NT4をサポートするインストーラの場合は200を指定します。2000/XP以上を対象とする場合でも、通常は200を指定しておいても問題はありません。 |
InstallPrivileges | Vistaで新たに導入されるインストーラ用のUAC設定を指定します。Vista以外の場合は参照されません。省略した場合は、elevatedになります。InstallerVersionの値にかかわりなく参照されます。 |
Keywords | 検索キーワードを指定します。ほとんど意味はありませんので、おまじないみたいなものです。通常はサンプルソースと同様に、"Installer,MSI,Database"を指定しておけばよいかと思います。 |
Languages | サマリーの言語を指定します。通常はProduct要素の属性と同じ値を指定します。日本語版の場合は1041を指定します。 |
Manufacturer | サマリーに表示する開発元になります。こちらも通常はProduct要素の属性と同じ値を指定します。 |
Platforms | インストール対象のプラットフォーム種別を指定します。32bitアプリケーションの場合は、Intelを指定します。 |
ShortNames | 格納されているファイルのパスをショートパスで扱うかどうかを指定します。通常は省略します(LongNameを利用する)。 |
SummaryCodepage | サマリーのコードページを指定します。Lanaguages属性と対になる値を指定します。日本語版の場合は932を指定します。こちらの値もコンパイラが文字コードを判定する際に利用します。 |
MSIデータベース要素
MSIデータベースとほぼ直結する要素群です。属性の設定内容もほぼMSIの規約に準じた設定となります。これらを縦横無尽に組み合わせていくことで、インストーラを作り上げる形となります。今回利用されたものは、すべてのインストーラで必ず1つ以上存在する情報です。
Media要素の属性
| 属性名 | 説明 |
Id(必須) | メディアテーブルのDiskIdに相当するプライマリフィールドです。値は1以上の数値となります。 |
Cabinet | 圧縮する場合の圧縮ファイル名になります(圧縮ファイルは、常にCabinet形式)。圧縮しない場合は、省略できます。 |
CompressionLevel | 圧縮する場合の圧縮レベルの指定です。省略した場合は、デフォルト設定の"mszip"になります。 |
EmbedCab | 圧縮ファイルをmsiに埋め込むかどうかの指定です。埋め込みを指定する場合、以下の属性は設定する必要はなくなります(あっても動作に支障はありませんが参照もされません)。 |
DiskPrompt | CD/DVDで配布を行なう場合の、ディスクメディアの表示名となります。DiskPrompt プロパティに"[1]"を指定した場合、この内容がそのまま利用されます。 |
VolumeLabel | CD/DVDで配布を行なう場合の、ディスクメディアのボリュームラベルになります。ディスクを確認するために、Windows Installer自身が参照するために用意されています。 |
Directory要素の属性
| 属性名 | 説明 |
Id(必須) | ディレクトリエントリーの識別子です。 |
Name(必須) | インストール先のフォルダ名です。ショートネームで収まらない場合は、この値がショートネーム名となります。 |
LongName | インストール先フォルダの長い名前です。ショートネームで収まらない場合に指定します。Package要素のShortNamesがyesの場合利用されません。 |
SourceName | ソースメディア上のフォルダ名を指定します(圧縮しない場合)。ショートネームで収まらない場合は、この値がショートネーム名となります。 |
LongSource | ソースメディア上の長い名前です。ショートネームで収まらない場合に指定します。Package要素のShortNamesがyesの場合利用されません。 |
Component要素の属性
| 属性名 | 説明 |
Id(必須) | コンポーネントの識別子です。プライマリキーと内部識別子としての役割があります。 |
Guid(必須) | コンポーネントの外部識別子です。コンポーネントごとに必ずユニークな値を設定する必要があります。自動生成はできません。 |
KeyPath | コンポーネントのキーパスをインストール先フォルダにする場合に指定します。通常は省略して、ファイルまたはレジストリをキーパスに指定します。 |
SharedDllRefCount | コンポーネントのインストールするファイルを、共有ファイルとしてインストールします。 |
File要素の属性
| 属性名 | 説明 |
Id(必須) | ファイルの内部識別子です。 |
Name(必須) | ファイル名です。ショートネームで収まらない場合は、この値がショートネーム名となります。 |
LongName | 長いファイル名です。ショートネームで収まらない場合に指定します。Package要素のShortNamesがyesの場合利用されません。 |
DiskId | Mediaのディスク番号です。ComponentにDiskIdを指定した場合省略可能ですが通常は、細かい制御ができるファイルに指定します。 |
KeyPath | コンポーネントのキーパスとするかどうかの指定です。コンポーネント内で一つだけyesとすることができます。省略した場合はnoと同じ扱いになります。 |
Compressed | 圧縮するかどうかの指定です。Mediaの状態にかかわりなく、省略した場合は、Package要素の指定に準じます。 |
Source | ビルド時に参照する、実際のインストール対象ファイルのパスを指定します。 |
Feature要素の属性
| 属性名 | 説明 |
Id(必須) | Featureの内部識別子です。 |
Level(必須) | デフォルトのインストールレベルを指定します。必ずインストールするような場合は1を指定します。0を指定するとインストール対象から除外されます。 |
Display | Featureの表示方法を指定します。collapse(展開せずに表示)/expand(展開して表示)/hidden(非表示)のいずれかを指定します。カスタムインストールや追加と削除から変更を行なった場合に効果を発揮します。 |
Title | カスタムインストールのツリーで表示する名称です。非表示またはカスタムインストールを行なわない場合は省略できます。 |
Description | 詳細説明文です。非表示またはカスタムインストールを行なわない場合は省略できます。 |
ConfigurableDirectory | インストール先のカスタマイズを行なう際のターゲットとなるインストール先のディレクトリエントリを指定します。 |
AllowAdvertise | アドバタイズインストールを行なえるかを指定します。 |
InstallDefault | デフォルトのインストール条件を指定します。 |
ComponentRed要素の属性
| 属性名 | 説明 |
Id(必須) | ComponentのIdを指定します。 |
Primary | 複数のFeatureに所属する場合のプライマリかどうかを指定します。所属が一つの場合は、所属するFeatuereがプライマリになるため省略可能です。 |
終わりに
今回は、インストーラの基本的な開発環境の構築と、Wixによるビルドの最初の一歩までを解説しました。次回は、ユーザーインターフェイスのある本格的なインストーラの作成とバッチファイルによるビルドプロセスの半自動化を予定しています。