はじめに
本連載の第3回までで、WiXの標準UIを使ったインストーラの基本的な作成方法を解説しました。今回と次回の2回に分けて、標準では提供されていないユーザー情報入力画面の作成と、独自のシリアル番号検証を行うモジュールの作成、組み込みを行います。
過去の回
- 第1回:Windows Installer XML(WiX) toolsetを利用したmsiの作成
- 第2回:簡易ユーザーインターフェイスを持つインストーラの作成
- 第3回:カスタムインストールに対応したインストーラの作成
対象読者
インストーラを必要とするすべての開発者。
必要な環境
連載では、WiX 2.0.4103.0以降を対象としていますが、原則として原稿執筆時点での最新版を利用しています。今回の最新ビルドは2.0.4415.0(2006年8月15日公開)となっています。
WiXの入手先とインストールについては第1回の「Windows Installer SDKのインストール」を参照してください。
インストーラのUI遷移の仕組み
これまでとは異なり、今回からは自分の意図する画面遷移を行えるようにしていきます。そのためにはWiXの画面遷移の管理方法を知る必要があります。まずはこの部分の解説から入りましょう。
Windows Installerの画面遷移ダイアログは既に見ているのでお分かりかと思いますが、一見するとあたかも通常のWizardダイアログのように動いています。しかし、実際には複数のダイアログ画面を切り替えながら表示する仕組みになっており、各ダイアログの移動ボタンで、次にどのダイアログを表示するかを指定しているのです。WiXでは、この移動先のダイアログ指定をプロパティで行えるようにして、同じダイアログでも構成によって違う動作ができる仕組みになっています。
では、実際にどうなっているかを見てみましょう。下記のソースは、WixUI_InstallDir
の画面遷移部分のソースを抜粋して、若干見やすいように組み替えたものです。
<!-- インストール時の画面 --> <!-- ようこそ --> <DialogRef Id="WelcomeDlg" /> <Property Id="WixUI_WelcomeDlg_Next" Value="LicenseAgreementDlg" /> <!-- 使用許諾 --> <DialogRef Id="LicenseAgreementDlg" /> <Property Id="WixUI_LicenseAgreementDlg_Back" Value="WelcomeDlg" /> <Property Id="WixUI_LicenseAgreementDlg_Next" Value="InstallDirDlg" /> <!-- インストール先確認 --> <DialogRef Id="InstallDirDlg" /> <Property Id="WixUI_InstallDirDlg_Back" Value="LicenseAgreementDlg" /> <Property Id="WixUI_InstallDirDlg_Next" Value="VerifyReadyDlg" /> <Property Id="WixUI_InstallDirDlg_Browse" Value="BrowseDlg" /> <!-- インストール先選択 --> <DialogRef Id="BrowseDlg" /> <!-- インストール確認 --> <DialogRef Id="VerifyReadyDlg" /> <Property Id="WixUI_VerifyReadyDlg_BackRepair" Value="MaintenanceTypeDlg" /> <Property Id="WixUI_VerifyReadyDlg_BackRemove" Value="MaintenanceTypeDlg" /> <Property Id="WixUI_VerifyReadyDlg_BackInstallDir" Value="InstallDirDlg" /> <!-- メンテナンスモードでの画面 (2000/XP ではこの画面は通常表示されない)--> <!-- メンテナンスモードのようこそ --> <DialogRef Id="MaintenanceWelcomeDlg" /> <Property Id="WixUI_MaintenanceWelcomeDlg_Next" Value="MaintenanceTypeDlg" /> <!-- メンテナンスタイプの指定 --> <DialogRef Id="MaintenanceTypeDlg" /> <Property Id="WixUI_MaintenanceTypeDlg_Repair" Value="VerifyReadyDlg" /> <Property Id="WixUI_MaintenanceTypeDlg_Remove" Value="VerifyReadyDlg" /> <Property Id="WixUI_MaintenanceTypeDlg_Back" Value="MaintenanceWelcomeDlg" />
このように、Next/Backでどのダイアログを表示するかを指定することにより、ダイアログの実装を変更することなく、画面遷移を自在にカスタマイズできるようになっています。最初に表示するダイアログ(WelcomeDlg
など)だけは、InstallUISequence
にダイアログを表示するための処理コードを持っていますが、これもダイアログ単位で用意しているため、全体構造そのものは、かなり自由にカスタマイズできるようになっています。
遷移を変更するには
新たにダイアログを組み込む前に、もう少し簡単なカスタマイズとして、使用許諾画面の表示を省いた画面遷移を構成してみることにしましょう。
前回の連載ではMondo形式で作成しましたが、今回は使用許諾画面だけを出さないように構成したUIを作ります。リソース定義が大半のため、紙面の都合上ソースは載せません。ソースはサンプルファイルの「STEdit7.wxs」を参照してください。
変更点はソースを統合するために除外したヘッダー部分を除けば、実に数箇所(ダイアログを取り除いただけ)しかありません。それだけ簡単に変更できるということがよく分かると思います。