SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

WiXではじめるWindows Installer作成入門

WiXではじめるWindows Installer作成入門 第1回

Windows Installer XML(WiX) toolsetを利用したmsiの作成


WiXのXML要素について

 今回出てきたXML要素の簡単な説明です。実用上必須となる部分以外は省略していますので、詳しくはWiXのマニュアルを参照してください。

 なお、オンラインマニュアルの内容は、バイナリの展開先の「doc」フォルダにある「wix.chm」の部分的な抜粋となっています。随時充実させていくと書かれていますので、将来的にはオンラインマニュアルが最新のものになるとは思いますが、執筆時点ではページが用意されていない部分もありました。

特殊要素

 msiデータベースとはリンクしていない特別な要素です。

Wix 要素

 WiXのソースファイルのルート要素です。XMLファイルとして、このファイルがWiXのものであることを宣言するものとなります。

Wix要素の属性
属性名説明
RequiredVersionコンパイラのバージョンを要求するための属性です。通常、この値を設定することはありませんが、複数マシンでの開発などでバージョン不整合を防止するなどで設定する場合もあります。

Product 要素

 実質的なルート要素です。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として格納されます。

Package 要素

 msi(msm)ファイルのサマリー(エクスプローラのプロパティで表示される詳細情報)を指定するための要素です。一部の情報は、インストーラの起動時時に参照されます。

Package要素の属性
属性名説明
Id(必須)ファイルの識別子となるGUIDを指定します。省略はできませんが、自動生成させることができます。その場合、ビルドするたびに情報が自動的に設定されるようになっています(通常は自動生成を指定します)。PackageCode と呼ばれる情報として格納されます。
Commentsオプションのコメント属性となります。省略しない場合、コメント表示される場所に表示されます。Vistaでは積極的に利用されていますので、記載しておくことをお勧めします。
Compressedデフォルトで圧縮するかどうかを指定します。省略した場合はnoとなりますが、実際は各ファイルレベルでの圧縮指定が優先されるため、省略しても問題ありません。
Descriptionファイルの説明です。Comments属性に似ていますが、利用形態が異なります。
InstallerVersionインストーラの実行に必要となるランタイムバージョンを指定します。9x系および、NT4をサポートするインストーラの場合は200を指定します。2000/XP以上を対象とする場合でも、通常は200を指定しておいても問題はありません。
InstallPrivilegesVistaで新たに導入されるインストーラ用の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 要素

Media要素の属性
属性名説明
Id(必須)メディアテーブルのDiskIdに相当するプライマリフィールドです。値は1以上の数値となります。
Cabinet圧縮する場合の圧縮ファイル名になります(圧縮ファイルは、常にCabinet形式)。圧縮しない場合は、省略できます。
CompressionLevel圧縮する場合の圧縮レベルの指定です。省略した場合は、デフォルト設定の"mszip"になります。
EmbedCab圧縮ファイルをmsiに埋め込むかどうかの指定です。埋め込みを指定する場合、以下の属性は設定する必要はなくなります(あっても動作に支障はありませんが参照もされません)。
DiskPromptCD/DVDで配布を行なう場合の、ディスクメディアの表示名となります。DiskPrompt プロパティに"[1]"を指定した場合、この内容がそのまま利用されます。
VolumeLabelCD/DVDで配布を行なう場合の、ディスクメディアのボリュームラベルになります。ディスクを確認するために、Windows Installer自身が参照するために用意されています。

Directory 要素

Directory要素の属性
属性名説明
Id(必須)ディレクトリエントリーの識別子です。
Name(必須)インストール先のフォルダ名です。ショートネームで収まらない場合は、この値がショートネーム名となります。
LongNameインストール先フォルダの長い名前です。ショートネームで収まらない場合に指定します。Package要素のShortNamesがyesの場合利用されません。
SourceNameソースメディア上のフォルダ名を指定します(圧縮しない場合)。ショートネームで収まらない場合は、この値がショートネーム名となります。
LongSourceソースメディア上の長い名前です。ショートネームで収まらない場合に指定します。Package要素のShortNamesがyesの場合利用されません。

Component 要素

Component要素の属性
属性名説明
Id(必須)コンポーネントの識別子です。プライマリキーと内部識別子としての役割があります。
Guid(必須)コンポーネントの外部識別子です。コンポーネントごとに必ずユニークな値を設定する必要があります。自動生成はできません。
KeyPathコンポーネントのキーパスをインストール先フォルダにする場合に指定します。通常は省略して、ファイルまたはレジストリをキーパスに指定します。
SharedDllRefCountコンポーネントのインストールするファイルを、共有ファイルとしてインストールします。

File 要素

File要素の属性
属性名説明
Id(必須)ファイルの内部識別子です。
Name(必須)ファイル名です。ショートネームで収まらない場合は、この値がショートネーム名となります。
LongName長いファイル名です。ショートネームで収まらない場合に指定します。Package要素のShortNamesがyesの場合利用されません。
DiskIdMediaのディスク番号です。ComponentDiskIdを指定した場合省略可能ですが通常は、細かい制御ができるファイルに指定します。
KeyPathコンポーネントのキーパスとするかどうかの指定です。コンポーネント内で一つだけyesとすることができます。省略した場合はnoと同じ扱いになります。
Compressed圧縮するかどうかの指定です。Mediaの状態にかかわりなく、省略した場合は、Package要素の指定に準じます。
Sourceビルド時に参照する、実際のインストール対象ファイルのパスを指定します。

Feature 要素

Feature要素の属性
属性名説明
Id(必須)Featureの内部識別子です。
Level(必須)デフォルトのインストールレベルを指定します。必ずインストールするような場合は1を指定します。0を指定するとインストール対象から除外されます。
DisplayFeatureの表示方法を指定します。collapse(展開せずに表示)/expand(展開して表示)/hidden(非表示)のいずれかを指定します。カスタムインストールや追加と削除から変更を行なった場合に効果を発揮します。
Titleカスタムインストールのツリーで表示する名称です。非表示またはカスタムインストールを行なわない場合は省略できます。
Description詳細説明文です。非表示またはカスタムインストールを行なわない場合は省略できます。
ConfigurableDirectoryインストール先のカスタマイズを行なう際のターゲットとなるインストール先のディレクトリエントリを指定します。
AllowAdvertiseアドバタイズインストールを行なえるかを指定します。
InstallDefaultデフォルトのインストール条件を指定します。

ComponentRef 要素

ComponentRed要素の属性
属性名説明
Id(必須)ComponentIdを指定します。
Primary複数のFeatureに所属する場合のプライマリかどうかを指定します。所属が一つの場合は、所属するFeatuereがプライマリになるため省略可能です。

終わりに

 今回は、インストーラの基本的な開発環境の構築と、Wixによるビルドの最初の一歩までを解説しました。次回は、ユーザーインターフェイスのある本格的なインストーラの作成とバッチファイルによるビルドプロセスの半自動化を予定しています。

修正履歴

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
WiXではじめるWindows Installer作成入門連載記事一覧

もっと読む

この記事の著者

とっちゃん(トッチャン)

Microsoft MVP for Development Tools Visual C++Windows Installer 系を中心にオンライン/オフラインで活動しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/428 2006/08/25 19:17

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー