WiXを使って無料でインストーラーを作る！

※この記事は[ブログからの転載記事](http://minimum-opus.blog.jp/archives/11285380.html)です。

はじめに
=======
今回は[WiX Toolset](http://wixtoolset.org/)というインストーラー作成ツールを利用して、インストーラーを作ってみたいと思います！

インストーラといえば[InstallShield](https://ja.wikipedia.org/wiki/InstallShield)という印象がありますが、**InstallShieldはなにせ高い**のです。
あれ、正規代理店からかうとざっくり11万強しますからね...

一方、**WiXの場合では無料**でインストーラを作ることができるみたいです。

WiXの環境を構築する！
====================
まずはWiXと、WiXEditというWiXを簡単にするツールをダウンロードします。

1. WiXのダウンロード
-------------------
[WiXのサイト](http://wixtoolset.org/)へ移動して、右上のDownloadsをクリックします。
そして遷移後のページ中、Recommended Build項目のところにやたら目立つボタンがあるので、クリックします。
するとGitHubのページに飛ぶので、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/88d04f6d-221b-31a2-741f-b78d15528142.png)
画像中の赤枠のように末尾が「.exe」で終わるリンクをクリックして、WiXのインストーラをダウンロードします。

2. WiXEditのダウンロード
-----------------------
WiXEditも[WiXEditのサイト](https://wixedit.github.io/)へアクセスしてDownloadボタンをクリックします。
するとなにか3つほど更に選べるようなダイアログが出てくるので、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/5a1cb49d-c3d4-a9b5-1870-e58d1bb0bbfb.png)
赤枠の「MSI download」を選択します。するとダウンロードが開始されます。

3. WiXのインストール
-------------------
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/1e5a874a-be31-65ee-c271-66133ae50547.png)
WiXのインストーラを開くと、こんなふうにオシャンな感じになっています。
(画像ではすでにインストールしてしまったので、「Complete」になっています。)
真ん中の一番でっかいボタンを押すとインストールが始まるので、そこをクリックして完了を待ちます。(下記画像の緑色の場所です。編集で緑にしたので、実際は赤色です。)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/b766ebf1-395a-94d5-4139-70acb8da807f.png)

4. WiXEditのインストール
-----------------------
...は割愛しますが、普通のインストーラです。例によって利用規約には同意して何も変更せず進めれば問題ないです。

5. WiXへPATHを通す
-----------------
次にインストールしたWiXにPATHを通します。(Qiitaでは大体の方がPathの通し方は抑えてると思いますので省略します。)
このとき、PATHの先はインストールディレクトリではなく、`bin`ディレクトリを対象としてください。

WiXを使ってみる！
================
～WiXEditでの操作～
------------------
インストールしたWiX Editをスタートメニューから起動すると、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/b649f94e-248a-3dc3-2f6c-cae9ba25c8b0.png)
こんなすごくそっけない画面が出てくると思います。
その画面の左上、「File」をクリックし、出てきたメニューの一番上の「New」を選択します。すると
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/588d765d-3be0-643b-4756-ed832fd503e0.png)
こういうウィザード画面が出てくるので、このウィザードに沿ってインストーラを構築していくようです。思ったより簡単そう...
とりあえず、「Next」を押して次へ。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/b43cb8d3-0c2d-1239-13bf-4667c0a7a57c.png)
こんな画面が出てきますが、それぞれの意味は以下の図のとおりになります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/17299f6f-ccb5-022a-814d-69ef68733213.png)
今回は作成したアプリケーションのディレクトリをインストール対象にしたいので、「Import directory」をクリックして、出てきたウィンドウでアプリケーションが置かれているディレクトリを選択してOKを押します。
**※ WiXEdit0.7.5ではOSがインストールされたパーティション内やシンボリックリンクが正常に取り扱えないっぽいので、(よくあるCドライブがメインの場合)DドライブなどOSが動いていないドライブ上にインストール対象のファイルを設置してください。**
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/224f10f4-a4c9-98fd-5f1a-182a72929e86.png)
そしてもとのウィンドウを見てみると選択したディレクトリがPFiles以下に追加されていることがわかります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/dc0713c3-532e-5a67-7ecc-47d0a3af96eb.png)
これ以上追加するファイルがなければ「Next」を押して次に進みます。
次の画面では以下のようなウィンドウが表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/7a290e5c-23af-bf4c-0e6a-e2bfda7ccbf6.png)
いろいろチェックボックスがあります。意味は上から...

 - **Add Userinterface**: インストーラにウィザードなどのUIを追加します。
 - **Check for .NET Framework Version**: .NET Frameworkのバージョンの依存関係のチェックを追加します。
 - **Desktop application shortcut**: デスクトップにアプリケーションのショートカットを追加します。
 - **Modify a XML file**: インストーラーを構成するためのXMLファイルの記述の書き換えをサポートします。(詳しくはまだわからない。)
 - **NGen Managed Assemblies**: ネイティブ イメージ ジェネレーター (Ngen.exe)を使用する…らしいです。
 - **Startmenu application shortcut**: スタートメニューにアプリケーションのショートカットを追加します。
 - **Startmenu uninstall shortcut**: スタートメニューにアンインストーラのショートカットを追加します。
 - **Startmenu website shortcut**: スタートメニューに製品のウェブサイトへのショートカットを追加します。
 - **Virtual directory in IIS**: IIS(Windowsのサーバー機能)の仮想ディレクトリを追加します。

必要な項目にチェックを入れてから「Next」をクリックして先に進みます。
(今回は「Add Userinterface」にのみチェックを入れます。)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/61581802-f44a-fe31-65f3-47a1b1c1f8ec.png)
この画面ではインストーラのUIの種類を選択します。とりあえず今回は「Minimal」で次へ進みます。
そして最後に「Finish」をクリックしてウィザードを終了します。

するとすぐに次の画面が出てきて、製品の情報を変更できます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/ad30e047-5e8d-5823-69cb-5694e5ef314d.png)
ここの情報はあとから編集したほうがやりやすいので、「Done」を押してとっとと閉じてしまいます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/f11a024a-8d72-928d-41c6-fe15ffe8c012.png)
メインのウィンドウに戻ってくると、いろいろ表示されているので、「Global」の「Product」を選択して、右側のリストを操作します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/c5bb12af-3567-9dff-3e74-aac76b5f4152.png)
右側リストの空白を右クリックして、「New」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/5151ca72-d0bb-2670-ed7c-2364ae852c63.png)
そして出てきたウィンドウの「Codepage」をダブルクリックします。
もとのウィンドウに戻るので、リストの各要素を以下の要領で変更します。
(斜体の文字は数値の表す意味です。入力しないでください。)

 - **Codepage**:  932 *(日本語)*
 - **Id**: *(変更しない)*
 - **Language**: 1041 *(日本語)*
 - **Manufacturer**: *(作者名)*
 - **Name**: *(製品名)*
 - **UpgradeCode**: *(変更しない)*
 - **Version**: *(メジャーVer).(マイナーVer).(ビルド番号).(任意の数字)、Verは255まで、ビルド番号は65535まで*

次に、「Global」の「Package」を選択して、右側のリストを操作します。
右側リストの空白を右クリックして、「New」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/cd6f1096-1797-720d-4608-fb5bcbaa505a.png)
そして出てきたウィンドウの「SummaryCodepage」をダブルクリックします。
もとのウィンドウに戻るので、リストの各要素を以下の要領で変更します。
(斜体の文字は数値の表す意味です。入力しないでください。)

 - **Comments**: *ファイルの右クリック→プロパティ→詳細にて表示されるコメントの編集ができる。*
 - **Compressed**: *(変更しない)*
 - **Description**: *ソフトウェアの説明*
 - **InstallVersion**: *(変更しない)*
 - **SummaryCodepage**: 932 *(日本語)*

次に中央パネルの「Product」を右クリックし、「New」→「WixVariable」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/09c249cd-08e6-25bb-f342-e3a9ec7e284e.png)
そして、「Global」の「WixVariable」を選択して、右側のリストを操作します。

 - **Id**: WixUILicenseRtf
 - **Value**: license.rtf

ここまでできれば一旦**WiXEditは閉じずに**Windows標準のワードパッドを起動し、利用規約の文章を書いたら、「license.rtf」として保存します。

次に、WiXEditに戻り、「Resources」→「Binaries」を選択し、空白を右クリック→「Add File」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/758ff24c-8900-5ac4-319a-05bc5280c7b3.png)

出てきたファイル選択で、保存したrtfファイルを選びます。
すると、WiX内でのファイル名を決められるのですが、そのまま、「license.rtf」として「OK」を押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/fe0dbf42-1bda-4b63-c552-d1403bce1212.png)
そして最後に左上の「File」→「Save」をクリックし、適当に名前を付けて保存します。

～メモ帳での操作～(Cドライブで作業しちゃった人向け)
----------------
保存したWiXのファイルをメモ帳で開き、例えば、
`<File Id="APP.JS" Name="app.js" Source="mailToKindle\app.js" >`
のようにFileセクションのSource要素の中の「"」の直後に「`C:\`」のようなドライブレターをそれぞれ付けます。(複数Fileセクションがあるはずです。)
例: `<File Id="APP.JS" Name="app.js" Source="C:\mailToKindle\app.js" >`
すべて書き換え終えたら保存してメモ帳を閉じてください。

**※これはWiXEdit 0.7.5のバグによるものらしいです。**

～コマンドプロンプトでの操作～
---------------------------
コマンドプロンプトを開き、WiXのファイルを保存したディレクトリへ移動します。
そして以下のコマンドを入力します。
```
candle -nologo {WiXのファイル名} -out {WiXのファイル名}.obj -ext WixUIExtension
light -nologo {WiXのファイル名}.obj -out {WiXのファイル名}.msi -ext WixUIExtension
```
すると...
![image.png](https://qiita-image-store.s3.amazonaws.com/0/278909/a7eacc35-e385-88ae-2666-fd7f43eccd63.png)

To be continued...?
===================
**...あぁ...長かった..._(꒪ཀ꒪」∠)**

というわけで無事、インストーラ化ができました！
**...が、**ぶっちゃけこのレベルのインストーラだとUIを持っている意味がほぼありません！(ﾅﾝﾃｺｯﾀｲ!

次はこのインストーラーに機能を追加してそれっぽくしていきたいと思います！
(推敲中のものは[先行してブログの方で紹介](http://minimum-opus.blog.jp/archives/11395098.html)しています。)

次回:

 - スタートメニューにプログラムグループを登録する・デスクトップにアイコンを作る
 - インストール先を変更するダイアログを設ける
 - 「～へ送る」にショートカットを追加する←メイン

~~乞うご期待！~~
→[続編！](https://qiita.com/Minimum-Opus/items/4529ee6520a47d3b6479)