CodeZine(コードジン)

特集ページ一覧

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

簡易ユーザーインターフェイスを持つインストーラの作成

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/08/11 00:00

本連載は、WiXを利用してインストーラを作成するチュートリアル形式の入門記事です。第2回は、ユーザーインターフェイスつきインストーラ作成のパート1として、簡単なUIつきのインストーラを作成します。

目次

はじめに

 前回は、主にインストーラ作成環境の構築にページを費やしてしまいましたが、今回からいよいよ本格的なインストーラの作成へと移ります。

対象読者

 インストーラを必要とするすべての開発者。

必要な環境

 前回の記事の公開直前にWiXの新しいビルド(2.0.4221.0)が公開されました。おおむね1ヶ月~2ヶ月に一度くらいのペースで更新が続いていますので、今後も連載中に更新が入ることになると思います。この連載ではUIも扱う都合上、原則的に執筆時点での最新版を利用するつもりでいます。これはUIリソースがまだstable(安定版)扱いにはなっておらず、Technical Preview状態(要するにβ)のためでもあります。そのため、実運用を図る場合においては連載での記述点のみならず、きちんと自身のインストーラに合わせて検証する必要があることも付け加えておきます。また、実際の業務などで利用する場合には、必ずWiXのリリースノートなども参照するようにしてください。

WiXの更新

 最新版をダウンロード・展開します。ダウンロード場所などは、前回の記事を参照してください。同じフォルダに展開する場合は、一度以前のファイルを削除してから、展開することをお勧めします(バージョンによってファイルの増減などがあるため)。パスを通している場合は、パスのフォルダを変更するか、同様に以前のものを削除してから新しいものへと更新してください。また、Visual Studioに組み込んでいる場合は、手作業でコピーしたファイルを改めてコピーしてください(無条件コピーでも問題はないと思います)。

インストーラにUIを用意する

 前回の記事では、「Readme.txt」をインストールする、ごく小さなインストーラを作成しました。たった1つのファイルをインストールするだけだったとはいえ、Windows Installerの主要機能はほぼすべて網羅していました。とはいえ、味も素っ気もないどころか、何を行っているかの表示すらないインストーラだったため、利用者にとっては不気味以外の何者でもありません。まずは、このインストーラにUIを付けるところからはじめましょう。

インストーラのUIについて

 早速、追加したいところですが、その前にWiX 2.0.4221.0で用意されている標準UIを紹介しておきたいと思います。WiX 2.0では「Mondo」「FeatureTree」「Minimal」「InstallDir」という4種類の標準UIシーケンスを用意しています。まだこなれていない部分もあるとは思いますが、軽く紹介しておきます。

WiXのUI種別
UI名略称説明
WixUI_MondoMondo市販ソフトなどでよく見受けられる、標準、カスタム、すべてのインストール形式を選択できるUIシーケンスです。WiXが標準で用意しているUIとしては最も大がかかりな物となります。
WixUI_FeatureTreeFeatureTreeMondoからインストール形式の選択部分を除外し、常にカスタムインストールが行なわれるようになっている形式です。あまり見かけることはありませんが、インストール時に常に何らかの選択肢を必要とするインストーラなどで使われています。
WixUI_MinimalMinimal使用許諾だけが出る、最も少ないUIのインストーラです。カスタムインストールはおろかインストール先の変更もできないため、アドオンなどのようにインストール先の選択が行えないインストーラなどでよく見かけます。
WixUI_InstallDirInstallDirMinimalにインストール先の変更を行えるようにした形のインストーラです。多くのオンラインソフトや、カスタムインストールを必要としないインストーラで利用されている形式です。Visual Studioのセットアッププロジェクトもこの形式と類似した構成になっています。

UIつきインストーラのビルド環境を整える

 では、早速インストーラにUIを追加してみましょう。まずは前回のソースコードに、利用するUIを指定します。

MinSrc3.wxs
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
  <Product ...省略...>
    <...省略...>
    </Feature>
    <!-- ここから追加 -->
    <UIRef Id="WixUI_ErrorProgressText" />
    <UIRef Id="WixUI_Minimal" />
    <!-- ここまで追加 -->
  </Product>
</Wix>

 前回用意した「MinSrc2.wxs」に追記する形で作られています(ソースの全文は、サンプルを参照してください)。今回はインストーラ自身も単純なものですので、Minimalを利用しています。続いてビルドを行います。

 こちらは、前回のように単にファイル名を指定しただけではリンクができません。インストーラでUIを参照するように指定しているため、そのUIを持つライブラリを指定する必要があります。少し面倒ですが、ソースのフォルダに移動し、次のようにコマンドを入力してビルドを実行してください。

コマンドライン
C:\WiX\candle.exe MinSrc3.wxs
C:\WiX\light.exe MinSrc3.wixobj -out MinSrc3.msi
 C:\WiX\wixui.wixlib -loc C:\WiX\WixUI_en-us.wxl

 実際にインストーラを実行すると、画面1が表示されます。

画面1
画面1

 ようやくインストーラとしての雰囲気が出てきました。とはいえ、ビルドのたびにこのように長いコマンドを入力していたのでは、開発効率が著しく低下してしまいます。これが年に一度あるかどうかならまだしも、開発中でのビルド行為はいわば定型業務のようなものですので、できるだけ効率よくかつ手間のかからない方法を用意しておきたいところです。単一ファイルでのビルドであればプロジェクト管理なども必要ありませんので、上記のコマンドラインをバッチ処理できるようにバッチファイルも用意しておくことにしましょう。

BldMsi.cmd
@ECHO OFF
REM パラメータチェック
IF "%1" == "" GOTO ARG_ERR
IF NOT EXIST "%1" GOTO ARG_ERR
REM バッチファイル内で作られた環境変数をバッチファイル内に
限定する(ローカル変数と同じ扱いにする)
SETLOCAL

REM WiX のインストール先を環境変数にして自由に配置できる
ようにする(ただし、空白を含むパスには対応していない)
IF "%WIXDIR%" == "" SET WIXDIR=C:\WIX

REM 出力先フォルダを作成
IF NOT EXIST Obj\. MD Obj
IF NOT EXIST Bin\. MD Bin

REM 受け取ったファイル名を分解してファイル名だけにする
SET FNAME=%~n1

REM コンパイル
%WIXDIR%\CANDLE.EXE %FNAME%.wxs -out Obj\
IF ERRORLEVEL 1 GOTO BLD_ERR

REM リンク
%WIXDIR%\LIGHT.EXE Obj\%FNAME%.wixobj -out Bin\%FNAME%.msi
 %WIXDIR%\wixui.wixlib -loc %WIXDIR%\WixUI_en-us.wxl
IF ERRORLEVEL 1 GOTO BLD_ERR

ECHO ビルドが完了しました
GOTO END

REM 終了処理
:ARG_ERR
ECHO ファイルが指定されていないか、ファイルが見つかりません。
GOTO END
:BLD_ERR
ECHO ビルド中にエラーが発生しました。
:END

 先ほどのコマンドラインの代わりにこのバッチファイルを実行すると(「MinSrc3.wxs」以外のファイルを全部削除しておいてもOKです)、同様の処理を一行で行うことができます。また、今までとは異なり、出力ファイルが別フォルダに出力されるようになっているため、管理しやすくなっていると思います。

Visual Studioを開発環境として利用する
 Visual Studioの持つ強力な編集サポート機能を使って、WiXでの開発効率をアップさせるオプションのパッケージとして、Votiveというものが用意されています。こちらは、Visual Studio 2003または2005 Standard Edition以上の環境にインストールすることができるのですが、残念ながら英語版以外ではほとんどの機能を使うことができません。とはいえ、主な編集環境としてVisual Studioを使う分には、まずもって困らないだけの機能が使えるようになりますのでインストールしておくことをお薦めします。
 Express Editionをお使いの方は、少し古いですが『VC++ 2005 Express EditionをWiX用エディタに変身させよう』という記事を公開していますので、こちらを参照してください。また、上記のバッチファイルとは若干異なりますが、サンプルソースに「BuildMSI.cmd」というVisual Studio 2005の外部コマンド対応版のバッチファイルを用意してあります。こちらをツールに登録し、引数を$(ItemPath)としておけば、アクティブなファイルをwxsとみなしてビルドすることができます。併せてうまく活用していただければと思います。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

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

著者プロフィール

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5