Mac OS X標準のインストーラパッケージはNeXTstepの時代から続く、実によく見慣れたインストーラシステムだ。
NeXTstepの頃にはアンインストール機能も使えたような記憶(昔すぎてそれほど覚えていない)があるのだが、なぜかNeXTstep直系の子孫であるMac OS Xのインストーラパッケージにはアンインストール機能がない。
Mac OS X開闢(かいびゃく)以来すでに5年以上を経過したにもかかわらず、このアンインストールの機能が実装されていないというのは、「できない」のではなく「やるつもりがない」と見るのが妥当な見方だろうか。
インストーラスクリプトにAppleScriptを指定できないあたり、実はインストーラにはほとんど開発人員を割いておらず、その後の機能追加らしい機能追加も行われず(Mac OS X 10.4でインストーラプラグインの開発環境は提供されたが)、やるつもりがない(don't)のかやれない(can't)のかはひたすらに疑問である。
まあ、それはともかくとして……Gimp-Printの名称が変わって「Guten Print」という名前になったのだそうだが、これをダウンロードしてきて例によって惰性でインストーラパッケージをこじ開けてみた。
すると……そこには、見間違いようのない「Uninstaller」の文字が! インストーラの解析もそこそこに、すぐさまこのUninstallerの構造解析に着手した。
見た目には普通のインストーラと変わらない。容量もアンインストール用の単機能プログラムを提供するだけのシンプルなパッケージ……でもない。それなりに容量がある。
調べてみると、アンインストーラと銘打っていながら、前のバージョン(Gimp-Print 4.x)のインストーラを内部に含んだメタパッケージになっており、アンインストール動作の中でこれらの古いバージョンのパッケージをインストールするようになっているからのようだ。
とりあえず、Uninstallerの内容を調べてみよう。
■Gutenprint printer remover
・postflightステージ
/private/tmpのディレクトリを掃除しつつ、/Library/Receipts/の下にあるパッケージ(の残りもの?)を削除。
・postinstallステージ
既存のプリンタキューの情報を収集。ここで、「grepを使わずawkを使って名称一覧を収集。他はともかくMac OS X上では常にawkが使えるからだ」とコメントに書かれている。作者はawkマニアだったのだろうか?
gutenprintのプリンタキュー名称もここで取得。キューの削除を行っている。
・postupgradeステージ
内容はpostinstallと同じ。
■Gimp-Print printer remover
postflight、postinstall、postupgradeともにだいたい「Gutenprint printer remover」と同じ。特筆すべきポイントはない。
……「期待どおり」とは行かなかったが、Uninstallerの解析を行うことができた。本来の意味でのアンインストーラに求められるような、「初期設定ファイルの削除」については、とくにGimp-print/Guten-printが作成しないためか、ユーザーディレクトリ下のこの種のファイルに対する操作を行うものではなかった。ホームディレクトリ下のファイルをどのように料理するかを見たかったのだが、ちょっと残念だ。