コマンドラインから dmg ファイルを作成する

以前は、 Makefile で公開するパッケージを作っていたので、 自然と tarball 形式で作っていた。

でも Mac のアプリケーションなら dmg の方が使う側としては嬉しいよね。

ちょっと調べてみたところ hdiutil という標準コマンドで作成可能みたいだ。

$ hdiutil create -ov -srcfolder path/to/folder -fs HFS+ -format UDZO \
               -imagekey zlib-level=9 -volname "Package name" output.dmg

-srcfolder で指定したフォルダの内容を使って output.dmg を作る。 dmg をマウントした時のボリューム名は -volname で指定した名称になる。

-format で指定するのは dmg のフォーマット。 UDZO は zlib 圧縮した dmg を作成する。 圧縮率は -imagekey zlib-level=n (n は 1 〜 9) で指定できて、 1 は高速圧縮、 9 が一番圧縮率が高い。

ただそれでも -format UDBZ で bzip2 圧縮を指定した方が圧縮率は高いけどね (そして、 その場合 -imagekey オプションは使えない。) だから実際に使う時は UDBZ を使うようにしている。

この例以外にもいろいろ柔軟な dmg ファイルを作成できるようだ。