是否可以从非 Mac 平台构建 .dmg 文件(用于分发应用程序)?如果是,如何?
7 回答
是的,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
如果您想真正花哨,您可以.DS_Store
从 Mac 上制作的 DMG 中窃取文件,该文件的卷名progname
和应用程序包名为progname.app
(即,与您想在 Mac 上创建的内容相匹配),您在其中放置了背景.background/background.png
和根目录中 /Applications 的符号链接,并将其dmgdir
与您自己的符号链接一起放入/Applications
.
最后,如果要创建压缩 DMG,请从libdmg-hfsplus获取 dmg 工具:
dmg uncompressed.dmg compressed.dmg
git clone https://github.com/hamstergene/libdmg-hfsplus
cd libdmg-hfsplus && cmake . && make && cd dmg
./dmg --help
生成文件:
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
开箱即用的未压缩作品,压缩可能会导致问题 - 源/主至少会在雪豹上产生“校验和”错误
我不确定是否有人还在看这个帖子,但我按照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。