(Mac以外のプラットフォームで)dmg Mac OS Xファイルをビルドする方法は?
質問
非Macプラットフォームから.dmgファイル(アプリの配布用)を作成することはできますか? もしそうなら、どうやって?
他のヒント
はい、mkfs.hfsplusはそれを行います。
dd if=/dev/zero of=/tmp/foo.dmg bs=1M count=64
mkfs.hfsplus -v ThisIsFoo /tmp/foo.dmg
これにより、Macにマウントできるdmgファイル(この場合は64M)が作成されます。 Linuxにマウントすることもできます。次のようなものです
mount -o loop /tmp/foo.dmg /mnt/foo
必要なコンテンツを(/ mnt / fooに)コピーするだけです。マウントを解除すると、dmgをMacにコピーしてそこにマウントできます。
私が取り組んでいるプロジェクトは、genisoimageを使用してLinuxでDMGファイルを作成します:
mkdir -p dmgdir/progname.app/Contents/{MacOS,Resources}
...copy your PkgInfo, Info.plist to Contents...
...copy your .icns to Resources...
...copy your other things to where you expect them to go...
genisoimage -V progname -D -R -apple -no-pad -o progname.dmg dmgdir
本当に凝りたい場合は、ボリューム名が progname
でMacで作成されたDMGから .DS_Store
ファイルを盗むことができます。 > progname.app (つまり、Macで作成したいものと一致する)で、背景を .background / background.png
に配置し、/ Applicationsへのシンボリックリンクを配置します。ルートディレクトリを作成し、それを dmgdir
に / Applications
へのシンボリックリンクとともに配置します。
git clone https://github.com/hamstergene/libdmg-hfsplus
cd libdmg-hfsplus && cmake . && make && cd dmg
./dmg --help
Makefile:
dmg:
genisoimage -D -V "$(PROJECT) $(VERSION)" -no-pad -r -apple -o project-$(VERSION)-uncompressed.dmg $(DARWIN_DIR)
./dmg dmg project-$(VERSION)-uncompressed.dmg project-$(VERSION).dmg
uncompressedはそのまま使用できますが、圧縮すると問題が発生する可能性があります-オリジン/マスターは少なくともユキヒョウで「チェックサム」エラーを生成します
まだこのスレッドを見ている人がいるかどうかはわかりませんが、 Nik Reiman が推奨するように TransMac を試しました。
このツールを使用して、 Windows 7 で実行し、 OSX 10.8.3 にマウント可能な dmg ファイルを作成できました。
欠点
私たちにとって唯一の欠点は、このツールがコマンドラインフレンドリーではないように見えることです。ビルドサーバー(Windowsベース)を使用してdmgファイルをオンザフライでビルドできる自動化ツールを使用できるようにする必要があるため、私たちにとってはこれが契約違反となります。
mkfs.hfsplusを参照
Macアプリを配布する場合は、確実に作成してテストするMacがあります。同じMacを使用してディスクイメージを作成しないのはなぜですか?
[編集]あるいは、Java .jarファイルなどのポータブルアプリを配布している場合、なぜディスクイメージに煩わされるのでしょうか。 Macは.zipおよび.tar.gzアーカイブを問題なく理解します。
私が得ているのは、DMGディスクイメージがどのように必要なのか理解していないが、それを作成するMacがないということだと思います。