はじめに
本連載は、MS初のオープンソースとしても知られる、Windows Install XML(WiX) toolsetを利用してインストーラを作成する方法を、チュートリアル形式で解説します。WiXの説明を交え、実践でも役立つ内容を数回に分けてお送りいたします。
対象読者
インストーラを必要とするすべての開発者。
必要な環境
WiXの動作には.NET Framework 1.1または2.0のランタイムが必要となります。本連載ではUnmanaged C++のDLL(通常のWin32形式のDLL)の作成も行ないますので、Visual C++ 2005 Express EditionまたはVisual Studio 2005 Standard Edition以上がインストールされている環境を想定しています。もちろん、Visual Studio .NET 2003でも利用できます。なお、すべてのエディションを扱っていると説明が冗長になってしまうため、Visual Studioについて言及する場合は、Visual C++ 2005 Express Editionを対象として解説することにします。
Windows Installer SDKのインストール
すべての開発の基本となる、Software Development Kit(SDK)をインストールします。Windows Installer SDKはPlatformSDKの一部として統合されています。
下記のリンク先からダウンロードしてください(リンク先は、すべてMarch 2006と呼ばれるWindows 2003 Server R2対応版です)。
環境などに合わせて、いずれかのものでインストールしてください。MSDNサブスクリプションに加入している場合はディスクメディアとして送付されてくるため、わざわざダウンロードする必要はありません。
インストールはフルインストールをお勧めします。環境変数の設定はオプションですが、インストーラ作成作業の大半はコマンドラインでの作業なので、設定しておくとよいでしょう。また、Visual Studio 2005(Expressを含む)を利用している場合は、必ず統合作業を行なってください(2003までの場合も統合をお勧めします)。Visual Studio 2005にはx86版の「msi.lib」が含まれていませんので、必ず行なう必要があります(これ自体は実装漏れのようですが……)。このライブラリがないと、Windows InstallerのAPIが利用できません。統合方法の詳細は、『Visual Studio 2005/Visual C++ 2005 Express EditionにPlatformSDKを統合する(改訂版) 』にありますので、参考にしてください。
SDKをインストールしたら、Orcaもインストールします。OrcaはSDKにインストーラとして含まれるのみとなっています。そのため、別途インストールする必要がありますので、インストール先の「Bin」ディレクトリにある「Orca.msi」を実行してインストールしてください。以上で統合作業は終了です。
これで基本的なWindows Installer用開発環境の構築は完了しました。
WiXのダウンロードとインストール
ポータルサイト「Windows Installer XML(WiX) toolset」の右側から2.0のリンクをたどり、最新版をダウンロードします(ダウンロードのページはこちら)。バージョンごとに、バイナリとソースのZIPファイルと「Votive.msi」が用意されているので(2.0の場合)、バイナリとソースの両方をダウンロードしておいてください(Votiveは今回、直接利用しません)。なお、執筆時点での最新版に当たる2.0.4103.0を利用して、解説を行います。
なお、本連載では、バイナリが「C:\WiX」に、ソースが「C:\WiX\2.0.4103.0\」に展開されていることを想定しています。コマンドラインツールのため、実行パスをきっておくと、より手軽に利用できるようになるでしょう。
マイクロソフト初のopen sourceプロジェクトとして、2004/04/05にSourceForge.netにて一般公開されました。当時日本の技術系ニュースサイトや、いろいろなBlogで触れられていたので知っている方も多いかと思います。英語版しかないという制限はありますが(ツール自身が英語版というだけで日本語版インストーラの作成は可能)、ライセンス形式が CPL(Common Public License Version 1.0) となっているため、利用時の制約事項がほとんどないことから、最近では著名な市販ソフトでも利用されるようになってきています。
WiXは、InstallShieldやVSセットアップ(VS 2002より同梱されたセットアップビルド機能)などと同様、Windows Installerデータベース作成のために用意された開発ツールではありますが、他のツールと違いコードベースによる開発スタイルをとっています。
InstallShieldに代表される市販ツールやVSセットアップは、開発作業をGUIで行っており、GUIの特性を生かすことで非常に簡単に新規インストーラを構築できるようになっています。その代わり、GUIであるがゆえに、検索や複数種類の情報の参照などはあまり効率よく行なうことができません。データ管理にしても一つのファイルで管理されているため(管理形式はツールによって異なります)、単一の製品で完結している分には問題点は出てきませんが、複数のバリエーション管理を行なうなどとなると、とたんに手間が増えるという欠点もあります。
これに対し、WiXでの開発はテキストベースのソースコードを記述していくというスタイルをとっているため、検索が容易というばかりではなく、Windows Installerが本来持つ論理的な構造に基づいて構成されていることにより、目で追える範囲にデータがまとまりやすいという、うれしい副作用もあります。また、ビルドスタイルも前史時代より連綿と続く伝統的なCompile&Linkという形式をとっていますので、C/C++ の開発者にとってはおなじみのスタイルとも言えるでしょう。
もちろん、このプログラミングモデルの特性を生かすために、プリプロセッサを搭載していたり、分割コンパイルができるようになっているなど、他のインストーラ作成ツールとは明らかに違う特性を持っています。この分割コンパイルやプリプロセッサ機能をうまく活用することで、体験版と通常版、機能限定版とフルセット版などのバリエーション管理をかなり強力、かつ容易に行なうことができます。また、リンク時にはライブラリも指定できるようになっているため、うまくライブラリ化を進めることで、既に使いまわされた枯れたコードを再利用できるなどのメリットもあります。特に、ユーザーインターフェイス部分はほとんどの場合、メーカーごとに固有のスタイルをとっていることが多く、その内容も製品ごとに変わることがほとんどないため、この部分は非常に強力に働かせることができると思います。
現在は安定版とされる2.0と、新バージョンの3.0が並行で開発されています。2.0は実質的にメンテナンスフェーズへと移行しており、今後大幅な変更(仕様変更)は入ることはないと思われます。
長くなってしまいましたが、前置きはこれくらいにして連載本編へと入りましょう。