インストーラ作成

4月からTrac 0.10ベースのソフトを0.11ベースに書き換えるという作業をやっていてだいたいめどがついたので、今週はインストーラ作成作業をしていました。
いままではいくつもの手順をふんでやっとインストールできるというものだったのでこれでだいぶ楽になった気がします。

やり方は例によって?TracLightningを参考にさせてもらいました。この件にかぎらずものすごく他人のふんどし開発してます。Shibuya.tracコミュニティには足を向けて寝られません。

ポイントは

Heretic Programmer(2007-01-06)

に書かれている通りですw

インストーラ作成ツールとしてはInno Setupを使いました。issファイルというテキストベースの設定ファイルをベースとし、コマンドラインでもビルドできるので自動化もしやすいです。
実際Hudsonで自動化してみました。isscにissファイルを食わせればOKです。Hudsonコミュニティにも足を向けて寝られません。
以前InstallShieldを使ったことあるのですが、あれは高度なことできるけどコマンドラインのやり方がわからずひたすら手作業だったので面倒でしたね。
単純に使い方わからなかっただけな気もしますが。。。
InstallAnywareも試したことありますが忘れましたw Javaを同梱できるのがよかったですね。

Inno SetupのフロントエンドソフトであるInnoEditXも使いました。OSの動作に失敗しましたのようなエラーダイアログがでたりして動作が怪しい気もしましたが、issファイルの[Files]セクションに1つ1つファイルを書かなくてすむので重宝します。ディレクトリをドラックアンドドロップすればOKです。

TracLightningissファイルはバージョンが古そうですが、http://git.sourceforge.jp/view?p=traclight/traclightning.git;a=blob;f=trac.iss;h=99186aae7dc3f3435ffdc1bccd11023e25a3e3ed;hb=HEADです。

インストーラのなかでバッチを呼び出してeggをインストールしたりしてますね。http://sourceforge.jp/projects/traclight/wiki/HackingGuide 参考

今回はファイルコピーだけでなくmsiのサイレントインストールも行いました。msi形式のファイルはmsiexecでサイレントインストールすることができます。

Python, Apache, PHP, PostgreSQLが今回はその対象でした。やり方は下記にあります。Pythonの場合はALLUSERS=1を指定しないとmos_wsgiがうまく動きませんでしたね。

http://www.python.org/download/releases/2.5/msi/
http://php.net/manual/ja/install.windows.installer.msi.php
http://pginstaller.projects.postgresql.org/silent.html

野良ビルドはしないというのが基本ポリシーだったのでmsiじゃなくてexeのpythonライブラリはインストーラからキックするようにしました。なので途中でダイアログが出てしまうので完全なサイレントインストールはできませんでした。

インストーラ作成というのは地味な作業でニッチなスキルを要求される気がしますが奥深そうですね。ネックなのはインストーラのビルドが時間かかるのと動作確認にはクリーンなマシンが必要ってことでしょうか。なので今回はVirtualPC大活躍です。インストール、アンインストールを何回もやりましたが、1回1回意外と時間かかるので忍耐力がちょっと必要かも。

こういったパッケージング作業というのは重要だと思うのですが、OSSのコミュニティとかならいざしらず仕事だとあんまり評価されない雪かき仕事です。というかそういう作業が必要だということすら認識されていないことも多い。実はほんとに必要ないのかな。ソースだけあってもしょうがないと思うんだけど。

つまり何が言いたいかというと最近は雪かき仕事してますよというアピールですw

7月からはやばそうなプロジェクトに行くかもしれないので今のうちに雪かきしておきます。