如何构建 dmg Mac OS X 文件(在非 Mac 平台上)?

问题描述 投票:0回答:7

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

macos installation dmg
7个回答
39
投票

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


36
投票

我从事的一个项目使用 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 

如果你想要真正的花哨,你可以从 Mac 上制作的 DMG 中窃取

.DS_Store
文件,其卷名称为
progname
和名为
progname.app
的应用程序包(即,与你想要在 Mac 上创建的内容相匹配) ),您在
.background/background.png
中放置了背景,并在根目录中放置了指向 /Applications 的符号链接,然后将其与您自己的
dmgdir
的符号链接一起放入
/Applications
中。

最后,如果你想创建压缩的DMG,请从libdmg-hfsplus获取dmg工具:

dmg uncompressed.dmg compressed.dmg

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

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


8
投票

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

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

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


4
投票

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

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


缺点

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


2
投票

参见 mkfs.hfsplus


-39
投票

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

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

我想我的意思是,我不明白为什么人们可能需要 DMG 磁盘映像,但却没有用来创建它的 Mac。

© www.soinside.com 2019 - 2024. All rights reserved.