是否有可能在非Mac平台上构建.dmg文件(用于分发应用程序)?如果可以,如何实现?
是否有可能在非Mac平台上构建.dmg文件(用于分发应用程序)?如果可以,如何实现?
没错,mkfs.hfsplus 可以做到。
dd if=/dev/zero of=/tmp/foo.dmg bs=1M count=64
mkfs.hfsplus -v ThisIsFoo /tmp/foo.dmg
这将创建一个DMG文件(在此示例中为64M),可在Mac上挂载。它也可以在Linux上挂载,方法类似于:
mount -o loop /tmp/foo.dmg /mnt/foo
接下来你只需要将想要复制的内容复制到该位置(在/mnt/foo中)。卸载它,然后可以将dmg文件复制到Mac上并挂载。
genisoimage -D -V "$(PROJECT) $(VERSION)" -no-pad -r -apple -o project-$(VERSION)-uncompressed.dmg $(DARWIN_DIR)
这似乎是有效的。但我仍然需要验证生成的 .dmg 文件是否可用。现在没有我的 Mac。 - Max我参与的一个项目在Linux上使用genisoimage创建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
的卷和一个叫做progname.app
的应用包制作的DMG中窃取.DS_Store
文件(即与你想在Mac上创建的内容相匹配),在其中放置一个背景图像.background/background.png
和一个到根目录下的/Applications的符号链接,并将其与自己的指向/Applications
的符号链接一起放入dmgdir
。
最后,如果您想要创建压缩的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
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
未压缩版本直接使用,压缩可能会导致问题 - 至少在snow-leopard上,原始/主要版本会产生“校验和”错误
如果您要分发 Mac 应用程序,那么肯定有一台 Mac 用于编写和测试应用程序。为什么不直接使用同一台 Mac 来创建磁盘映像呢?
[编辑] 或者,如果您要分发便携式应用程序,例如 Java .jar 文件,为什么要费力地创建磁盘映像?Mac 理解 .zip 和 .tar.gz 归档文件很好。
我想我要表达的是,我不理解为什么一个人需要 DMG 磁盘映像,但没有用于创建它的 Mac。