よし出来た、公開しよう。では公開用にインストーラでも作ろう。
「インストーラ」 「作り方」 でググる。有名な InstallShield が引っかかったぞ!
なんと、Visual StudioにはInstallShieldがバンドルされているらしいぞ!やったね!
ちょうどVisual Studioで開発していたところなんだ。
…あれ、インストーラ作成の項目どこだよ?
なんと、無料版のVisual Studio ExpressにはInstallShield が付いていないらしいぞ。困った…
そんなユーザは山のようにいるのではなかろうか。
そんなこんなで私はWiX (Windows Installer XML) を使用してMSI形式のインストーラを作成することにした。
WiXのポイントはここだ。
- 無料(InstallShieldは購入すると非常に高価だし、使いこなせるか分からないものを買うのも…)
- 商用製品での使用実績がある(Microsoft Office 2007のインストーラはWiXで作成されているとのこと)
という時もあるだろう。
日本語ドキュメントは少ないが、とはいえ既に他のサイトで紹介されている方法を使えば十分なものが作成できるだろう。
WiXチュートリアル(日本語訳)
http://wix.softark.net/
WiXの使用方法が詳しく書かれているが、ちょっと気軽に作ってみたいんだ。って人には重すぎるかもしれない。
WiXではじめるWindows Installer作成入門(CodeZine)
http://codezine.jp/article/detail/428
大手サイトの記事で分かり易いが多少内容が古く、サンプルコードをそのまま使用することはできない。
もちろん十分参考にはなる。
Windows上でWixおよびWixEditを使ったインストーラ作成
http://www.02.246.ne.jp/~torutk/windows/wixandwixedit.html
WiXのXMLコード作成を補助してくれるWixEditを使用した方法を紹介している。
上記3サイトの中では一番取っ付きやすかったので、私はこれを参考にした。
さてWiX+WixEditでインストーラを作ったぞ。というところまでは来たが、不満もあった。
ちょっとしたツールを公開したいだけなのに、インストール時に堅苦しい使用許諾契約書を表示しなければならない。
誰も読まないのに形だけあるアレだ。邪魔なので消してしまいたいが、WiXのデフォルトでは表示されるようになっている。
ググったら使用許諾契約書の画面をスキップさせる方法が見つかった。
WiX のライセンス確認を削除する方法(だんさん の かたち)
http://dansan.air-nifty.com/blog/2011/03/wix-70e1.html
作成した.wxsファイル内に <UIRef Id='WixUI_InstallDir' /> という記述があるが、これを消して代わりに
WiXのソースを手に入れWixUI_InstallDir.wxs から <UI Id="WixUI_InstallDir"> ... </UI> の箇所をコピペしろというのだ。
その後上記サイトの方法の通り使用許諾契約書画面をスキップさせるよう.wxsファイルを編集する。
と、ここまでやったところでハマった。
MSIファイルを作成しようとlightコマンドを実行するとエラーが発生してしまうのだ。
やっとここからが本題。
解決策は以下の方法だ。
- .wxsファイル内に <UI /> という記述がある。(WixEditを使用した場合)無駄なので消そう
- WixUI_InstallDir.wxsからコピペした<UI Id="WixUI_InstallDir"> ... </UI> の後に、
<UIRef Id="WixUI_Common" /> を追加しよう。