WiX Toolset V4 Sample
2023/09/04, last updated 2023/09/08 - ~3 Minutes
Windows アプリのインストーラで、フリーなツールとして WiX Toolset がある。このツールを使ってインストーラを作ってみたいと思う。
WiX toolset のバージョン 3 用のチュートリアルとして、 WiX Toolset Tutorial 、 WiXチュートリアル日本語訳 などがある。
WiX Toolset の最新バージョンは 4 であるが、公式のドキュメントから読み取りづらく、v4 のチュートリアルもまだ無さそうだ。WiX Toolset v4 では、v3 からの変換コマンドがあるので、このコマンドを使って変換してみることとした。
WiX Toolset の概要
上記チュートリアルを見ると、要は、インストーラのソースコードを XML で書き、msi または、exe などのインストーラを作るツールである。
ダイアログなども、ある程度は XML で記述でき、独自のものが必要な場合は C 言語や C# などで拡張可能といった感じだろうか。
Java で XML からコード生成することがあるが、その方法に似ている。
WiX Toolset のインストール
私はコマンドライン派なので、Command-line .NET tool をインストールする。
- .NET をインストールする。私は .NET 7.0 をインストールした。
- コマンドプロンプトを開いて 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 宣言は削除する必要があった。また、ライセンスの表示を追加してみた。
- YOUR-GUID-1 〜 YOUR-GUID-6 を、自分で取得した GUID に変える。(powershell を起動して new-guid | set-clipboard すると、クリップボードに GUID がコピーされので、ペーストすれば良いだろう。
- wix extension add -g WixToolset.Util.wixext
- wix build SampleWixUI.wxs -ext WixToolset.Util.wixext
wix extension add で extension を読み込んでおく必要があり、build 時にも extension を指定する必要がある。
UI ダイアログの設定方法については、 WixUI dialog library で説明されている。ドキュメントで不足している場合は、 WiX UI ソースコード を参照する必要があるかもしれない。