Windows アプリのインストーラで、フリーなツールとして WiX Toolset がある。このツールを使ってインストーラを作ってみたいと思う。

WiX toolset のバージョン 3 用のチュートリアルとして、WiX Toolset TutorialWiXチュートリアル日本語訳 などがある。

WiX Toolset の最新バージョンは 4 であるが、公式のドキュメントから読み取りづらく、v4 のチュートリアルもまだ無さそうだ。WiX Toolset v4 では、v3 からの変換コマンドがあるので、このコマンドを使って変換してみることとした。

WiX Toolset の概要

上記チュートリアルを見ると、要は、インストーラのソースコードを XML で書き、msi または、exe などのインストーラを作るツールである。

ダイアログなども、ある程度は XML で記述でき、独自のものが必要な場合は C 言語や C# などで拡張可能といった感じだろうか。

Java で XML からコード生成することがあるが、その方法に似ている。

WiX Toolset のインストール

私はコマンドライン派なので、Command-line .NET tool をインストールする。

  1. .NET をインストールする。私は .NET 7.0 をインストールした。
  2. コマンドプロンプトを開いて dotnet tool install –global wix を実行する。

これで wix コマンドが使えるようになる。

Tutorial の Getting Started を変換してみる (WiX Toolset v3 から v4 への変換)

変換したコードを SampleFirst.zip として置いておく。

このコード内の YOUR_GUID には、自分で取った GUID をセットする必要がある。(全部違う GUID をセット)

GUID は powershell を起動して以下のコマンドで取得することができる。

New-Guid

このサンプルだと 4 個取得して、それぞれセットする。

exe ファイルとして、delphi で作った “Delphi Application” を表示するだけのプログラムを添付した。アイコンを取得できるのかも確認したかったためである。

SampleFirst.wxs.v3 は変換元のサンプルコードで、参考として添付した。wix convert コマンドで変換したが、冒頭の xml 宣言を削除する必要があった。また、何点か、エラーになったり不要そうな箇所があったので、手修正した。

以下のコマンドを実行することで、msi パッケージができる。

wix build SampleFirst.wxs

msi パッケージはダブルクリックすると、プログラムをインストールする。何も設定していないので、インストールの進捗ぐらいしか表示されない。

インストールが終わるとスタートメニューから起動することができる。

設定 / アプリ / インストールされているアプリ、に登録されており、アンインストールもできる。

User Interface

SampleWixUI を WiX Toolset v4 で変換してみた。 やはり convert のために、冒頭の xml 宣言は削除する必要があった。また、ライセンスの表示を追加してみた。

SampleWixUI_v4.zip

  1. YOUR-GUID-1 〜 YOUR-GUID-6 を、自分で取得した GUID に変える。(powershell を起動して new-guid | set-clipboard すると、クリップボードに GUID がコピーされので、ペーストすれば良いだろう。
  2. wix extension add -g WixToolset.Util.wixext
  3. wix build SampleWixUI.wxs -ext WixToolset.Util.wixext

wix extension add で extension を読み込んでおく必要があり、build 時にも extension を指定する必要がある。

UI ダイアログの設定方法については、WixUI dialog libraryで説明されている。ドキュメントで不足している場合は、WiX UI ソースコード を参照する必要があるかもしれない。