【WiX】インストール先を制御するインストーラーを作る方法

Windows Installer XML

WiX(Windows Installer XML)でインストール先を制御するインストーラーを作成する方法を紹介します。

サンプルの説明

本記事ではここで紹介するサンプルのソースコードやビルド方法を紹介していきます。

インストール処理の流れ

インストール時の画面遷移を紹介します。

1.インストーラーを起動すると下記のようなスタートページが開くので、Nextボタンをクリックします。

2.利用規約ページが表示されるので、”I accept the terms in the Agreement”にチェックをつけてNextページをクリックします。

3.インストール先を設定する画面が表示されますので、適宜設定のうえでNextボタンをクリックします。

(補足)上記の画面のChangeボタンをクリックするとフォルダー選択ダイアログが表示されます。

4.準備完了画面が表示されるので、Installボタンをクリックします。

5.インストール処理が始まります。

6.インストール完了画面が表示されます。Finishボタンを押せばインストーラーは閉じられます。

7.指定したインストール場所にプログラムがインストールされます。

アンインストールの流れ

アンインストール時の画面遷移を紹介します。

1.既に上記の手順でインストールがされている状態で、再びインストーラーを起動します。

2.スタート画面が表示されるので、Nextボタンをクリックします。

3.メニュー画面が表示されるので、Removeボタンをクリックします。

4.準備完了画面が表示されるので、Removeボタンをクリックします。

5.アンインストール処理が始まります。

6.アンインストール完了画面が表示されるので、Finishボタンを押せばインストーラーは閉じられます。

ソースコードの要点

インストール先を設定する画面を実装するにあたり、ソースコードに記述するうえでの要点を説明します。下記2点を実装すれば良いです。

①Productタグの直下にUIRefタグを記述し、Id属性の値を”WixUI_InstallDir”にする。

イメージ

②Productタグの直下にPropertyタグを追加する。 Idは’WIXUI_INSTALLDIR’とする。Valueはインストール先のDirectoryタグのIdと紐着くようにする。

サンプルを動かす方法

サンプルの説明項で紹介したソースコードを確認しつつ、実際にビルドして動かしてみたい場合は下記の手順に沿って動かしてみてください。

1.紹介する方法をそのまま実行するためには下準備として環境変数に値を設定してください。

C:\Program Files (x86)\WiX Toolset v3.11\bin

2.下記からソースコード一式をダウンロードしてください。

3.WiX_Sample_InstallDir.wxsをテキストエディタで起動してください。※WiX_Sample_InstallDir.wxsがインストーラーのソースコードとなります。

4.ソースコードの中のYOUR-GUIDの値をご自身で生成したGUIDに置換してください。それぞれに異なるGUIDを設定する必要があります。YOUR-GUIDは3行目に2か所、18行目、22行目にそれぞれ1か所ずつあります。

置換前
置換後

GUIDの生成は下記のツールを使えば便利だと思いますので必要に応じてダウンロードして使ってみてください。Windows10で動作確認済みです。

CreateGUIDの詳細情報 : Vector ソフトを探す!
GUIDを簡単に生成

インストールしてスタートメニューからCreateGUID.exeを起動すると、コンソール画面にGUIDを100件表示します。これらをコピペして使ってください。

5.コマンドプロンプトを起動し、ダウンロードして解凍したWiXソースコードがあるフォルダーをカレントフォルダーに設定してください。

6.下記コマンドを入力してEnterキーを押してください。

candle.exe WiX_Sample_InstallDir.wxs
コマンドの実行例

7.下記コマンドを入力してEnterキーを押してください。

light.exe -ext WixUIExtension WiX_Sample_InstallDir.wixobj
コマンドの実行例

8.WiX_Sample_InstallDir.msiが生成されたかと思うので、ダブルクリックして起動してみてください。サンプルの説明項で紹介したようなインストーラーが起動します。

以上です。参考になれば幸いです。

タイトルとURLをコピーしました