我正在使用Cocoa开发一个应用程序。我需要创建一个DMG文件来安装我的应用程序,如Adium(它提供了一个很好的UI来将应用程序文件拖到Application文件夹)。有这个工具吗?
答案 0 :(得分:19)
如果您有一个用户可能会复制到Applications目录的文件,那么“启用Internet”的磁盘映像是一个不错的选择。当你使用Safari下载一个(我知道,不是每个人都使用Safari)时,它会自动安装它,将内容复制到下载位置,然后卸载DMG并将其移动到垃圾箱。该应用程序不会自动转到应用程序,但它位于用户的HD上,他们不必担心摆弄磁盘映像。
使用单个终端命令可以启用互联网的磁盘映像:
hdiutil internet-enable -yes "MyDiskImage.dmg"
这适用于任何DMG文件。如果您希望用户看到漂亮的背景,您可能不想这样做。但是,对于简单的有效载荷,这是一个很好的方法。 (当然,有些人宁愿为这种部署创建一个ZIP文件。)
我发现手动创建DMG可能会很痛苦。实际上,您可以在Xcode项目中自动创建简单的DMG。只需创建一个Shell脚本目标(项目→新目标...)并在脚本中使用hdiutil
。该命令看起来像这样(替换正确的名称和目录):
hdiutil create -fs HFS+ -volname "MyApp 1.0" -srcfolder \
"/directory/with/contents/to/package/" "~/Desktop/MyApp-1.0.dmg"`
您需要将要包含在磁盘映像中的所有内容放在一个目录中,但如果您不担心在终端中使用cp
,这很容易做到。
如果你想看一个例子,我自己在CHDataStructures.framework中使用这种方法。如果您签出代码并在Xcode中打开,则部署目标中的第二个脚本将创建DMG。
答案 1 :(得分:17)
磁盘工具(它位于Applications \ Utilities中)
转到File
> New
> Disk Image From Folder
,然后选择要创建图像的文件夹。生成的.dmg将复制用于制作图像的文件夹,直至图标的位置。
答案 2 :(得分:8)
博士。 Nic组合了一个漂亮的红宝石宝石,为你完成大部分工作,你只需要提供xcode项目和一些图形。链接在这里:
http://drnicwilliams.com/2009/02/03/choctop-packaging-and-deployment-of-cocoa-applications/
这是一个很棒的包,负责处理其他方面的痛苦......
- 埃文
答案 3 :(得分:3)
因为还没有足够的答案......
我创建了一个具有我想要的布局的读写DMG - 背景图像,大小,应用程序图标的快捷方式,以及一个代表我的应用程序的空文件夹。我写了一个简单的bash
脚本来制作这个DMG的副本,挂载它,将我的应用程序复制到空文件夹,卸载DMG,然后将其转换为只读。
但是DMG Canvas可以为您完成整个过程,并且还提供了一个命令行工具,您可以使用该工具从Xcode构建中自动执行此过程,因此我建议通过我的解决方案。
答案 4 :(得分:2)
Mozilla build scripts是一个很好的来源。使用pkg-dmg,您可以自定义背景图像,卷名称,添加许可证,图标等。示例:
pkg-dmg \
--verbosity 2 \
--volname "MegaFinder" \
--source MegaFinder.app \
--sourcefile \
--target MegaFinder.dmg \
--license Licence.txt \
--icon MegaFinderVolumenIcon.icns \
--copy MegaFinderCustomizedDS_Store:.DS_Store \
--mkdir .background \
--copy MegaFinderBackgroundImage.jpg:.background/backgroundImage.jpg \
--symlink /Applications:Applications \
--attribute V:.background \
2>&1 > /dev/null
问题在于创造完美的.DS_Store
。对于简单的情况,您可以在Finder(显示视图选项)中创建.DS_Store
自定义已安装的dmg卷。您需要创建可写图像,自定义它,卸载(提交更改),然后再次安装以将生成的.DS_Store
复制为MegaFinderCustomizedDS_Store
(如上例所示)
如果您的应用支持Leopard,我建议DMG Canvas管理整个过程,或者至少获取.DS_Store
。它也有一个命令行工具。
答案 5 :(得分:1)
作为自动构建步骤执行此操作的最佳方法是创建一个template.dmg,它看起来完全符合您的要求(使用finder / diskutility等但不执行压缩它的最后一步),然后在您的构建脚本中:
https://github.com/remko/fancy-dmg/处有一个包含这些步骤的makefile。
答案 6 :(得分:0)
MacBreak Dev做了一个关于使用Automator工作流创建DMG文件的精彩小视频。使事情变得非常简单,非常快速,您可以为DMG提供自定义背景。您可以在以下位置查看: http://www.pixelcorps.tv/mbkd_010
答案 7 :(得分:0)
您可以使用DropDMG设置带有背景图片的布局,应用程序文件夹的符号链接,图标位置等。然后,当您需要制作.dmg文件时,您可以直接拖动将应用程序放到DropDMG上(或通过AppleScript或dropdmg命令行工具编写脚本)并让它一步构建磁盘映像。