Windows Installer XML「Wix」は、インストール設定情報をXMLで記述し、コマンドでMSI形式のインストーラを作成します。ツール「WixEdit」は、設定情報のXMLファイルをGUIで編集します。

WiXは、標準ではC:\Program Files\WiX Toolset vxx にインストール(32ビットの場合)されます。インストール後、次のパスを環境変数PATHに追加しておきます。

C:\Program Files\WiX Toolset vxx\bin

環境変数PATHを設定した後、コマンドプロンプトからcandleコマンド、lightコマンドを実行できるか確認しておきます。インストールしたバージョンを次に示します。

  • wixedit-0.7.5
  • wix38

WixEditを起動してインストール設定を記述するXMLファイルを作成します。ここでは私のブログ「C#によるlog4netの実装 」で作成した実行ファイルをインストールします。

WixEdit起動後、[File]>[New]を選ぶと、「WixEdit wizard」ダイアログが表れます。[Next]を押すと、「Add files and folders to install」画面になります。

Add files and folders to install

これはWix設定ファイルのDirectory要素のツリーを表したもので、トップレベル要素の”SourceDir”は必須項目となっています。”PFiles”は、ディレクトリのプロパティ ProgramFilesFolder で、通常C:\Program Filesを指します。

今回、インストール先はC:\Program Files\log4demoとするので、真ん中のツリー表示パネル上で”PFiles”を選択し、「Import directory」ボタンを押すと、「Browse For Folder」ダイアログが表示されます。

Browse For Folder

インポートしたいディレクトリ「log4demo」を選択し[OK]ボタンを押します。

Add files and folders to installインポート結果

[Next]で次へ進むと、次は、「Select features to add」画面になります。インストーラに含める機能を指定することができます。一番使用するのは、インストール先ディレクトリを選択したり、インストールするコンポーネントを選択したりするGUIを追加する”Add Userinterface”にチェックをいれて、[Next]ボタンを押します。

Select features to add

次は、「Add a userinterface」画面になります。Select type of userinterfaceに「Minimal」を選択します。

Add

これで、ウイザードは終了します。終了すると、Product Propertiesが表示されるので、必要な設定情報を記述して、log4demoインストーラを完成させます。

WixEdit6

Product要素に関する属性の定義
属性 内容
Id デフォルトのままでよい
Language インストーラが表示する画面に表すテキストの言語を指定する。日本語にしたいので、「1041」に変更する
Codepage インストーラがテキストの表示に使用する文字コードを指定する。日本語Windows標準に合わせて「932」に変更する
Manufacture 製品の作成者。
Name 製品名。Windowsのアンインストールで一覧に表示される名前
UpgradeCode デフォルトのままでよい
Version バージョン番号を記載する。メジャー番号、マイナー番号、ビルド番号、ユーザー定義番号の数値4項目をピリオド区切りで示す。メジャー番号は 255以下の整数、マイナー番号は255以下の整数、ビルド番号は65535以下の整数。ユーザー定義番号は省略可能でインストーラは関知しない。

WixEditのウィザード生成直後はCodepage属性が表示されていないので、左側ペインで”Product”を選択状態にし、右側ペインの余白で右クリックする。表示されたポップアップメニューの[New]を選択し、「New Attribute Name」ダイアログが表示されるので、”Codepage”を選択する。

Codepage属性

続いて、真ん中のツリー表示パネル上で”Package”を選択すると、右側にPackage要素の属性が一覧表示されます。WixEditのウィザード生成直後は、SummaryCodepage属性が表示されていないので、”Package”を選択した状態で右側ペインの上で右クリックしポップアップメニューの[New]を選択します。「New Attribute Name」ダイアログが表示されるので、”SummaryCodepage”を選択する。

[custom_table style=”2″]

表2  Package要素に関する属性の定義
  属性 内容
Comments MSI形式ファイルのプロパティ-詳細で閲覧できるコメント情報を記載する。
Compressed デフォルトのままでよい
Description 製品の説明を記述する。
InstallVersion デフォルトのままでよい
SummaryCodepage MSIファイルのプロパティー詳細で表示される文字コードの指定。日本語Windows標準に合わせて「932」に変更する

[/custom_table]

ライセンス文面をRTF形式のファイルで用意します。RTF形式はWindowsに標準で搭載されているワードパッドで作成し、license-mit.rtfに保存します。

WixEditでライセンス文面の設定記述を追加するには、左側パネルで[Global]を選択、真ん中のツリー表示パネル上で”Product”を選択し、右クリックでポップアップメニューから[New] > [WixVariable]を選択します。Product要素の子要素WixVariableが作成されます。右側のId欄およびValue欄にそれぞれ”WixUILicenseRtf”、”license-mt.rtf”を記述します。

子要素WixVariable

コマンドラインの実行は不便なので、MSI形式ファイルの生成をビルドで行うために、実行するコマンド定義を修正します。Wix Editの[Build]メニュー > [Build Settings]を選択し、「Edit Settings」ダイアログを表示します。

Candle.exeおよびLight.exeのコマンド実行を定義できます。チェックを付けてコマンドライン定義を編集できるようにし、それぞれチェックを付けて変更します。実際には、ディフォルトのパラメータでインストーラは作成できるのでく、コマンドライン定義を編集する必要はありません。

ただし、WixEdit 0.7.5で、このウィザード上で追加したファイルのパス情報が、絶対パスからドライブレターが抜けた指定となってしまう問題があります。次のようにテキストエディタで、log4demo.wxsを編集しました。

つぎのドライブレターを
<File Id="LOG4DEMO.PDB" Name="Log4Demo.pdb" Source="install\log4demo\Log4Demo.pdb" />
から
<File Id="LOG4DEMO.PDB" Name="Log4Demo.pdb" Source="log4demo\Log4Demo.pdb" />
に変更します。

Wix Editの[Build]メニュー > [Build MSI setup pacakge]でMSI形式ファイルを生成します。

WixEdit8

なお、実際に実行されるコマンドを次に示します。

・Candle.exeのコマンドライン
 C:\Program Files\WiX Toolset v3.8\bin\candle.exe -nologo “C:\install\log4demo.wxs” -out “C:\install\log4demo.wixobj”  -ext WixUIExtension
・Light.exeのコマンドライン
 C:\Program Files\WiX Toolset v3.8\bin\light.exe -nologo “C:\install\log4demo.wixobj” -out “C:\install\log4demo.msi”  -ext WixUIExtension