WiX の入門の仕方 (v3.0/v3.5)


WiX(Windows Installer XML) について調べたこと つらつら。アトランダムに更新。

WiX 記事一覧

WiX って?

WiX ( http://wix.sourceforge.net/ ) はインストールパッケージを生成するためのツール群&ライブラリ。MS謹製オープンソース

  • インストーラの構成を記述した XML をビルドして msi (や msm など) を生成する。
    • msi はデータベースとして構成されている。WiX はそれを記述するための DSL
    • 標準的な UI(ウィザード) も用意されており、単純にファイルを設置するだけのインストーラであれば、簡単に記述が可能。
  • 現在の最新版は v3.0(stable、というか開発 fix ?)、v3.5(バリバリ開発中)
    • Visual StudioWiX やカスタムアクションを開発するためのアドイン "Votive" が WiX v3.0 から同梱。VS 2005 だと ProjectAggregator2.msi も入れとかなきゃ、とか、VS 2008 Express だといろいろ制限が、とかあるらしい*1
    • Visual Studio 2010 からは VS に WiX が統合されるらしい(Visual Studio Installer はどうなるんだろう? 下位互換のためだけに残る? WiX にコンバートされてなくなる?)。

WiX 入門(なにで勉強したらいい?)

日本語のドキュメントは無いに等しいので、チュートリアルレベルで足りないのなら、根性入れて英語読むしか。
慣れれば大丈夫!(つか、慣れるしかない)

書籍
リファレンス
  • WiX のドキュメント ( http://wix.sourceforge.net/manual-wix3/main.htm )。
    • WiX と一緒に同じ内容の HTML Help もインストールされる(インストール先の DOC ディレクトリ)のでそちらを見る方が便利だが、(ローンチに向けて?)ドキュメントの更新頻度も高いようなので、常に最新のものを取得しておきたい。
    • WiX v2.0 の頃と違ってかなり内容充実してきたが、そうは言ってもリファレンスなので、特に初心者はどこから読んだらいいかわからない……。
チュートリアル

WiX v2.0 から v3.x への移行

  • v2.0 用に書かれた WiX のソースファイル(wxs ファイル) を v3.x 用にコンバートするツールはない(はず)。
    • したがって v3.x に適応させるには、v3.x 用のコンパイラ(candle.exe)でひとまずコンパイルさせてみると、エラーメッセージが大量に出てくるので、それを一つ一つ対応していく、という形になる。
    • エラーメッセージはかなり親切なので、一つ一つ従っていけば最終的には v3.0 対応できるだろうが、変更箇所はそれなりに多いだろうことは要覚悟。また、WiX の知識がない状態でそのエラーメッセージを見ても意味がわからないと思われるので、v2.0 用のチュートリアルをいきなり v3.x で試すというのは、やはりおすすめしない。
    • v3.0 対応で ひっかかりやすいポイントは candle.exe & light.exe のコマンドラインオプションに -ext WixUIExtension などをつけることと、User Element などが別 namespace に移動したあたり(詳細は UtilExtension の reference 参照)。余力があれば v2.0 と v3.0/3.5 の違いもまとめるかも。
  • v3.0 と v3.5 の違い
    • リファレンスが共通になっているので、機能面ではきっと大きな違いはないと思われる(まだちゃんと調べてない)
    • v3.0 は Visual Studio 2005/2008 に対応。v3.5 は Visual Studio 2005/2008/2010 に対応。
  • v2.0 と v3.x どっち使った方がいい?
    • 今から新しく使うならもちろん v3.x を。
    • すでに v2.0 用の資産がある場合は、移行が大変。だが、VS での標準が WiX v3.x になるし、WiX の仕様や機能も改良&強化されている(ショートファイルネームをいちいち指定しなくて良い、など)ので、なるべく v3.x 系を使うようにした方がいいと思う。

WiXインストーラを作成するためのツール

ORCA は必須。

WiX 記事一覧

*1:手元は VS 2008 Professional ないし Team Edition なので未確認

*2:Vista以降でいろいろ変わってしまっているので……

*3:WiXmsi を記述するための DSL なので、むしろこちらの方が重要?