60

是否可以从非 Mac 平台构建 .dmg 文件(用于分发应用程序)?如果是,如何?

4

7 回答 7

38

是的,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 并安装在那里。

于 2010-09-23T08:14:24.353 回答
34

我从事的一个项目使用 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
于 2011-09-26T10:42:21.093 回答
10
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

开箱即用的未压缩作品,压缩可能会导致问题 - 源/主至少会在雪豹上产生“校验和”错误

于 2013-07-18T22:25:13.633 回答
8

似乎可以使用一些第三方工具创建 DMG 文件。快速的谷歌搜索显示至少一些商业工具:

不确定是否有任何 OSS/免费软件选项,但如果您愿意的话,至少看起来是可能的。

编辑:我也忘记了MacDrive,这是另一个在 Windows 下使用 HFS+ 文件系统的好工具。由于 DMG 基本上只是 HFS+ 文件系统快照,因此 MacDrive 也可以创建 DMG。

于 2008-11-13T10:15:22.630 回答
4

我不确定是否有人还在看这个帖子,但我按照Nik Reiman的推荐尝试了 TransMac

使用这个工具,我能够在Windows 7上运行,创建可安装在OSX 10.8.3上的dmg文件。


缺点

对我们来说唯一的缺点是这个工具似乎不是命令行友好的。对我们来说,这是一个大问题,因为我们需要能够拥有一个自动化工具,我们的构建服务器(基于 Windows)可以使用它来即时构建 dmg 文件。

于 2013-06-03T17:27:38.183 回答
2

参见 mkfs.hfsplus

于 2010-09-10T18:18:11.270 回答
-36

如果您正在分发 Mac 应用程序,那么您肯定有一台 Mac 可以编写和测试它们。为什么不简单地使用同一台 Mac 来创建磁盘映像?

[编辑] 或者,如果您正在分发便携式应用程序,例如 Java .jar 文件,为什么还要使用磁盘映像?Mac 可以很好地理解 .zip 和 .tar.gz 档案。

我想我的意思是,我不明白一个人可能需要 DMG 磁盘映像,但没有可以用来创建它的 Mac。

于 2008-11-13T07:27:18.460 回答