为Mac OS X创建不错的dmg“安装程序”


83

我已经制作了第一个用于Mac OS X的Qt应用程序。现在,我想创建一个漂亮的.dmg文件,该文件使用户可以轻松地安装它。我正在考虑类似Firefox的东西(见图): 在此处输入图片说明

我完全陌生,所以我什至不知道从哪里开始。



我真的不需要自动化,我希望可以更容易地入门;)
xx77aBs 2011年

3
这可能有用:el-tramo.be/guides/fancy-dmg
Mike K

@MikeK:您应该将此作为答案发布,我会接受的,这正是我所要的;)
xx77aBs 2011年

您可以查看本教程。它逐步介绍了如何仅通过使用iDMG(这是一个免费软件),Finder和终端来创建精美的DMG。这很容易。
伊戈尔·奥古斯托

Answers:


90

通过提供此答案使这个问题最新。

appdmg是一个简单易用的开源命令行程序,可从一个简单的json规范创建dmg文件。看看官方网站上的自述文件:

https://github.com/LinusU/node-appdmg

快速示例:

  1. 安装appdmg

    npm install -g appdmg
    
  2. 写一个json文件(spec.json

    {
      "title": "Test Title",
      "background": "background.png",
      "icon-size": 80,
      "contents": [
        { "x": 192, "y": 344, "type": "file", "path": "TestApp.app" },
        { "x": 448, "y": 344, "type": "link", "path": "/Applications" }
      ]
    }
    
  3. 运行程序

    appdmg spec.json test.dmg
    

(免责声明。我是appdmg的创建者)


与其他解决方案相比,这非常简单。
风神2014年

1
是的,Linus的路要走。Uppskattar det。
Falken教授2014年

有机会获得OSX 10.6.8的已编译二进制文件吗?我不知道该如何编译您的资源...(这里不是苹果的家伙...)
Mark Miles

4
@MarkMiles大多数代码都是用Javascript编写的,因此没有被遵守。Npm将负责编译所有必要的源文件(C,Objective-C)。使一切正常运行的最简单方法是1)安装brew(brew.sh)2)安装Node.js(brew install node),它也捆绑了npm。3)按照答案中的“快速示例”
LinusUnnebäck2015年

@Lothar我认为最好将appdmg打包为二进制文件以便于分发,但是用例中我已经包含了一个nodejs环境。但是,如果您认为可以在“简单的shell脚本”中完成此操作,那么我不敢尝试。看一下代码,它不是太琐碎。除了shell脚本之外,还有其他编程语言是有原因的。
LinusUnnebäck'15

20

这很容易-基本思想是使用“磁盘工具”创建一个空白图像(使其足够大以至少容纳您的东西-大小无关紧要),使用Finder打开该图像,将您的东西放进去并整理它所需的方式(使用右键单击并显示视图选项来设置图标大小或背景图片之类的内容)。这几乎是它-剩下的工作就是使R转换/ w的图像压缩成压缩图像:弹出并使用转换磁盘工具将其转换成压缩图像。


9

现有的答案中没有一个对我真正有用。一个答案是手动的,另外两个选项-iDMG和node-appdmg-都涉及对查找程序添加小程序,这并不理想。

作为自动构建步骤执行此操作的最佳方法是创建一个看起来完全像您想要的样板的template.dmg(遵循正常说明,例如Simon Urbanek的回答,但不执行最后的压缩步骤),然后在构建中脚本:

  1. 使用hdiutil附加图像
  2. 使用cp etc将应用程序复制到安装的映像中
  3. hdiutil分离
  4. 压缩图像:hdiutil convert“ in.dmg”-安静-format UDZO -imagekey zlib-level = 9 -o“ MyApp-0.3.dmg”

https://github.com/remko/fancy-dmg/上有一个makefile,其中包含这些步骤。


2
我们正在努力删除AppleScript并带来node-appdmg跨平台。如果您想继续工作,请看这里:github.com/LinusU/node-appdmg/issues?milestone=1&state=open
LinusUnnebäck2013年

1
@LinusUnnebäck太棒了;感谢您的分享!即使只是删除applescript依赖关系也将是极好的。
JosephH 2013年

没问题:)我们真的只需要能够编写我们自己的.DS_Store,就可以解决所有问题,我只需要花些时间来实现它。(github.com/LinusU/node-appdmg/issues/14
莱纳斯Unnebäck

.DS_Store没有记录,我敢肯定它永远不会,所以这不是一个出路。该模板似乎是唯一可靠的解决方案。
Lothar's


1

您可以使用Finder来做到这一点:

  1. 下载并解压缩此空DMG文件(我是创建并上传该文件的人)
  2. 将DMG文件调整为适当的大小(适当的大小通常是其当前大小加上.app文件的大小)。为此,请打开磁盘实用程序(如果您不知道如何执行此操作,请disk utility在启动板中搜索)。然后在菜单栏中单击“图像”,然后选择“调整大小...”。您将看到一个打开文件的窗口,打开空的DMG文件。
  3. 双击DMG文件将其挂载。桌面上将Untitled出现一个名为的设备。将其重命名为您想要的名称(您可能希望为其提供与程序相同的名称)。
  4. 打开该设备。您应该会看到以下内容:

    在此处输入图片说明

    如果除“应用程序”文件夹的快捷方式之外的所有内容均为白色,请按Cmd+ ,然后J将打开一个窗口。在该窗口的底部,有一个带有标签“在此处拖动图像”的正方形。单击该正方形,将打开一个“打开”对话框。在该对话框中,按Cmd+ Shift+G并键入并选择image.png。/Volumes/(whatever you called the device in step 3)/.image

    除了“应用程序”文件夹的快捷方式之外,此处的所有内容仅是背景图像。您可能要更改背景图像(其中包含背景颜色和箭头)。为此,请在图像编辑器中打开文件,然后将其编辑为所需的内容。完成此操作后,您可能需要卸载设备并通过打开DMG文件以查看更改来重新安装它。根据放置在图像中的内容,您可能还需要将快捷方式移动到Applications文件夹,以适应新的背景图像。/Volumes/(whatever you called the device in step 3)/.image/image.png

  5. 将您的.app文件拖到打开DMG文件中的设备的窗口中箭头的开头,如下所示:

    在此处输入图片说明

    您可能会收到一条错误消息,指出可用空间不足。如果是这种情况,请返回步骤2并将DMG文件调整为更大的大小。

  6. 通过在Finder中单击设备名称旁边的箭头来卸载设备:

    在此处输入图片说明

  7. 将DMG文件转换为只读。为此,请打开终端并键入以下内容(/path/to/dmg/file由DMG文件的路径和DMG文件nameOfDmgFile.dmg的名称代替):

    cd /path/to/dmg/file
    hdiutil convert -format UDZO -o newNameOfDmgFile.dmg nameOfDmgFile.dmg
    

    这将创建一个新的DMG文件,称为newNameOfDmgFile.dmg(或您在上面使用的其他名称),这是您想要的文件。


我们为什么需要调整DMG的大小(如您在第2点中所述)
克里希纳·马鲁

@KrishnaMaru我写了这个答案已经很长时间了,但是如果我没记错的话,如果尝试将大文件复制到太小的DMG中,将会出错。
唐老鸭

0

您可以为此使用“磁盘工具”,但是如果要在后台显示图片,则需要一些高级指导。

首先,打开“磁盘工具”,
然后单击“文件”>“新图像”>“空白图像”。
它将询问您的大小和名称。
之后,您可以将文件放入其中,然后就可以了!

注意:这已在Mac OS Mojave上进行了测试。我不知道以前的版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.