きりかノート 3冊め

おあそびプログラミング

RubyCocoa 今日のコミット 2013-10-13

  • configで--sdkrootしないときextconf.rbでエラーになるのを修正。 (r2435)
  • インストーラ(.pkg)の作成にproductbuildコマンドも使えるように。 (r2436, r2437, r2438)

テストは流してたんだけど、そろそろ10.9でもパッケージつくってみるかなとGMで作業しようとしたところ、Xcodeのリリースノートに

DEPRECATED: Package Maker app.
Use the productbuild command to create installer packages

と書いてあることに気付いてしまった。ちょっと前から別インストールする必要あったりと、そういう予感はあったけれど、とうとう新しいツールに移行しなくちゃなのか。

productbuild(1)のmanを見てもいまいち。この手のApple独自ツールはmanのEXAMPLESに詳しい例が書いてあって、これもそうなんだけど読んでてもぴんとこない。

検索してみたら、「pkgbuildとproductbuildでMacのインストーラーを作ろう」というページが見つかった。

  1. pkgbuildで.pkgを生成
  2. productbuildでxmlを生成、調整
  3. productbuildで最終的な.pkgを生成

という手順らしい。助かります。

参考にいろいろ試してみた感じ、こんなとこ。

  • Appleのbundle(アプリなど)を単体でパッケージングするならproductbuildだけで作れる。(今回は.framework以外のファイルもあるのでダメ)
  • productbuildに--productで渡すplistでインストール環境の制約を指定できる。
    • OSのバージョン
    • 必要なライブラリ・アプリ?(bundle形式で提供されているものに限る)
  • ReadMe・ライセンス表示、インストール先の変更の可否などは--distributionで渡すxml(productbuild --synthesizeで生成)で指示する。詳しくはAppleDistribution XML Referenceを参照のこと。

インストールするファイルの権限調整がいらなくなったのが地味にないす。PackageMakerのときはファイル用意してからchownかけたりしてた。

Snow Leopard (Xcode 3.2.6)でもproductbuildやpkgbuildは使えるので、次のリリースしたらPackageMakerのコードは消しちゃっていいかな。