インストーラパッケージを作る時がきた

アプリケーションのインストーラパッケージを作る機会は少ない。一般ユーザーは当然としても、開発者にとってもそれは同じだろう。

 「じゃあ、明日インストーラを作ってください」

と言われても困る。めちゃめちゃ困る。資料が少ないうえに、凝ったことをやろうとするとshell scriptの知識が要求されるうえに、何をやったらよいのかよく分からない。

インストーラで一度泣きを見たので、それ以来、同じ失敗を繰り返さないよう、インストーラと見るやすべてパッケージの中をこじ開け、各種後処理スクリプトや前処理スクリプトを収集しまくった。

Mac OS Xのインストーラでは、前処理や後処理を行えるようになっている。逆をいえば、前処理や後処理がいらなければインストーラを作る必要などない。ただアプリケーションフォルダにアイコンをドラッグ&ドロップしさえすればいい。

自分がやりたい処理をどのステージで行えばよいのか、そうしたことを知るのもノウハウであるし、他のソフトが何を行っているのかを知っておくのもノウハウである。

集めたインストーラスクリプトは数十に上り、それらをつぶさに解析することで、さまざまなノウハウが存在していることを学習できた。インストール後にアイコンをDockに登録するノウハウや、インストール前にOSのバージョンやHDDの空き容量を確認するものなど、さまざまなノウハウを吸収した。

ちなみに、Mac OS Xが実行するインストーラスクリプトの名称、および実行の順番は以下のようになっている。

・Instllation Check
OSのバージョン確認を行う。

・Volume Check
実行中のシステムはインストール対象となるボリュームを持っているか、実行中のシステムはインストーラが想定している言語環境で動いているか、実行中のシステムはサーバー(Mac OS X Server)ではないか、OSのバージョンは正しいか、β版のOSにインストールしようとしていないか……などなど、確認を行う。日本語環境でしかインストールを許さないといった制限を設けることも可能なわけだ。

・preflight
古いバージョンのソフトウェアの削除、キャッシュの削除、初期設定の削除などを行う。ものによるが、一番泥臭い作業を行うステージであり、他の開発者がどのような点に気を付けているのか、どういう点を見られては困るのかといったことが伺えるようで、分析していて楽しいところだ。

・preinstall(すでにパッケージがインストールされている場合にはpreupgrade)
PowerMateのドライバとUSB Overdriveで見かけただけで、あとはこの段階のスクリプトが用意されているを見たことはない。インストール対象のアプリケーションがヘルパー用のバックグラウンド実行アプリを伴っているような場合には、この時点でプロセスを停止させたりしているようだ。

(★★ ここでインストールを実行 ★★)

・postinstall(すでにパッケージがインストールされている場合にはpostupgrade)
インストールしたファイルの実行権限を書き換えたり、起動項目に追加したりする。Mac OS XのインストーラはHomeディレクトリの下にファイルをインストールできないので、このステージでホーム下にファイルを移動させてもよいだろう。

・postflight
ひたすらインストール後の後片付けステージである。OSのアップデータであれば、カーネルのキャッシュをすべて削除するとか、不要になったファイルを削除したりする。また、ファイルの変更日時をそろえたりもする。インストールしたファイルに対して、念のためにtouchコマンドを発行しておくか、というインストーラが非常に多い。実は、syncの代わりにtouchを実行していたりするのだろうか。

Apple純正のソフトウェアが、Dockにアプリケーションのアイコンを登録するのもこのステージである。plistbuddyという支援用アプリケーションを用いて、Dockのplistに目的のアプリケーションを登録する。

インストールしたアプリケーションを勝手にDockに登録するとユーザーから嫌がられる場合が多いが、自社製品ならOKというところなのだろうか。場合によっては、Dockへの登録を必須要件として仕様を出してくるクライアントもあるので、Dockへのアプリ登録は知っておいて損のないノウハウだ。

Copyright By Piyomaru Software. All Rights Reserved