OS Xのアプリは、最近はアプリケーションフォルダにドラッグ&ドロップでコピーしてインストール完了というものが増えてきましたが、インストーラを使った方が良い場合もあります。例えば、アプリをインストールするときに、必要なOSのバージョンのチェックを行いたいときや、インストールと同時に実行しておきたい処理があるとき、READMEを表示したいとき、使用許諾契約書を表示させたいときなど、少し考えてみて、色々なことが浮かんできます。
OS Xでインストーラを作るには、長い間「Package Maker」というアプリが使われてきました。このアプリは、開発者用のSDKに入っていました。現在はこのアプリは廃止されてしまい、「productbuild」というコマンドラインから実行するプログラムを使うように変更になっています。
Xcode 4.6のリリースノートにも書かれています。
詳しい使い方は、man productbuildで参照するようになっていますが、これを読んでみても少しわかりにくいですね。整理してみると、次のような使い方が良いようです。
productbuildコマンドに「–synthesize」オプションを指定して、インストーラの設定を行うXMLのひな形を出力する(最低限の設定が書かれたファイルが出力される)
出力されたファイルをベースに必要な設定を追加する。このXMLファイルの構文については「Distribution Definition XML Schema Reference」pkgbuildを使ってproductbuildで出力するインストーラの中に含めるpkgを作成する。(pkgbuildは指定したフォルダ内のファイルを指定した場所にインストールするpkgを作れる)
productbuildでXMLとpkgbuildの出力pkgを使って最終インストーラを出力する
Gatekeeperのコードサイニングはproductbuildの「–sign」オプションを使うか、productsignコマンドを使う
決まった定型作業なので、シェルスクリプトを作っておくと便利そうです。これに加えて、必要なフォルダの作成とdmgファイルの作成も、そのスクリプト内で行えば、全自動にできるので、効率的に作業できます。
目次