【问题标题】:How do I package a Mac OS application for install?如何打包 Mac OS 应用程序以进行安装?
【发布时间】:2011-10-24 06:39:28
【问题描述】:

我知道在 Windows 上可以使用大量安装程序工具来创建安装程序,但在 Mac OS 上我看到了两种安装应用程序的方法:

  1. 您下载的 DMG 文件,双击,然后在其中运行应用程序 - 该应用程序通常让您将图标拖到另一个图标(代表 Applications 文件夹)以安装应用程序

    李>
  2. 另一种类型的文件会启动明显的标准安装程序,有时会显示警告,例如“此安装程序可能会运行程序以确定您是否可以继续安装”

打包应用以安装在 Mac OS 上的“标准”方式是什么?以上是苹果推荐的方式之一吗?

谢谢。

【问题讨论】:

  • 新手问题,但是为什么我们不能自己分发 .app 文件并让用户将其复制到 Applications 文件夹中,而不是创建 DMG 文件?
  • 因为 .app 不是文件。在用户看来,它只是一个“文件”,但它实际上是一个“捆绑包”。一个特殊结构的目录,标记以便用户看到它,并将其拖动,就好像它只是一个文件一样。 “捆绑包”是非常“Mac”的东西,不能通过电子邮件或下载很好地传播,尤其是在 Windows 格式的磁盘上。但是,DMG(磁盘映像)文件只是磁盘上的“字节流”——可以轻松传输。
  • @MottiShneor,这不是 .zip 文件的用途吗? ;)
  • @MKatz .zip 文件也可以使用(您有时会看到它们被使用)。但是,光盘映像 (.dmg) 可以做其他事情:例如,点击许可证和显示已安装映像的 Finder 窗口的背景图像通常用于分布式软件映像。

标签: macos installation


【解决方案1】:

效果很好。如果您的部署过程必须保持简单,那就太好了。

Quick build 包括将您的.app 拖到Package 上,然后就完成了。

对于高级封装,也可以提供证书。

http://s.sudre.free.fr/Software/Packages/about.html

【讨论】:

    【解决方案2】:

    我们正在讨论两件事:

    • 首先也是最重要的是,可执行文件的位以系统可访问和正确注册的方式放置在磁盘上的标准方法
    • 其次,苹果推荐的.app准备机制

    Apple's site 上的旧营销页面说,建议使用 PackageMaker 应用程序创建包(以便安装程序应用程序可以将位移动到位)。 此处描述了它的用法:mactech.com/articles/mactech/Vol.25/25.03/2503MacEnterprise-PackagingforSystemAdministrators/index.html。

    但正如其他人所提到的,房间里的大象是 MacAppStore(简称 MAS)。在它首次亮相之前,大公司的标准是他们自己的自定义脚本被卷入旧式“捆绑”包或使用像 VISE 安装程序这样的可执行文件。较小的开发人员通常会尝试通过拖放来安装他们的应用程序,以 zip 存档或磁盘映像的形式分发(为简单起见)。 MAS 有所不同:从 10.7 开始,它使用称为平面包的包格式(在 10.5 中首次亮相)(实际上是 xar 存档,解释 here) 通过http传输到隐藏文件夹,直接安装到应用程序(之后下载到的临时文件夹被删除)。它将收据和账单或材料文件放入 /private/var/db,因此可以通过内置命令行 pkgutil 工具进行审计,如下所述:mactech.com/articles/mactech/Vol.25/25.12 /2512MacEnterprise-PackagesReceiptsandSnow/index.html

    使用平面包格式的一个好处是您可以更安全、更高效地通过网络提取内容,但如果您定期测试和修改包,或者迭代到确保执行操作或检查的脚本运行良好。即使是扁平的,建议将 pkg 放在存档或磁盘映像中以提高灵活性。与 zip 相比,更多的分发工具需要 DMG,所以也有。

    除了 Apple 推荐的内容和标准的常见做法之外,还有这篇文章:https://www.afp548.com/2010/06/03/the-commandments-of-packaging-in-os-x/,其中讨论了打包以进行更广泛分发的原因和方法(尽管主要针对系统管理员)。强烈建议您更多地了解出现问题的方式和原因,以及要避免什么。

    【讨论】:

    • packagemaker 已被弃用很长一段时间 - 相反,您应该使用 pkgbuild 命令行工具创建包。
    【解决方案3】:

    试试Iceberg! 另一个包创建者。

    【讨论】:

      【解决方案4】:

      在 OS X 中,许多应用程序只是作为 Relocatable 创建的 用户只需复制到 /Application 文件夹(或任何其他位置)。在其他情况下,当您 需要对机器进行一些操作(比如添加用户 或更改权限)您可以使用 PKG 安装程序(例如使用 PackageMaker 构建),它允许 执行一些安装前和安装后脚本并支持一些基本的 安装配置,比如选择安装驱动。

      有时,与复杂的服务器软件一样,您需要更大的灵活性,例如显示自定义页面以 最终用户请求安装您的信息所需的信息 应用程序,例如 MySQL 端口和密码或代理信息 即时下载要求(或者只是让它看起来更漂亮 :))。对于这种情况,还有其他安装程序解决方案,例如我们的BitRock InstallBuilder(免责声明,我是开发人员之一)。 InstallBuilder还具有生成多平台的优势 安装程序使用相同的项目,每次定制很少 平台。

      【讨论】:

        【解决方案5】:

        Apple 非常明确地制定了从 App Store 下载程序的“标准”。这具有使应用程序安装对普通用户透明的好处。而且,信不信由你,普通人在安装程序的概念上会遇到很多麻烦。当然,这种好处伴随着一些成本,但这不是辩论的地方——还有很多其他地方可以讨论。

        假设您不想或不能走 App Store 路线,PKG 和 DMG 都是分发程序的常用方法。如果您需要安装应用程序包之外的文件(这不应该是常见的用例),请使用 PKG。在所有其他情况下,使用提示用户将应用程序复制到 Applications 文件夹的 DMG。但是您的许多用户不会明白他们需要这样做(除非您的目标受众完全是知识渊博的计算机用户)。他们将从磁盘映像运行您的应用程序。在这种情况下,理想情况下,您的程序会检测到它正在从磁盘映像运行,并提供将自身复制到 Applications 文件夹中。

        【讨论】:

        • Apple 所做的就是让事情保持一致。这对最终用户来说非常好。
        • 很好的答案。一些指向 3 种主要方法介绍的链接将不胜感激。从developer.apple.com/osx/distribution开始
        • 您能否详细说明一下程序如何判断它是从 DMG 运行的? (使用哪个 Cocoa/Other API?)另外,程序如何将自身复制到 Applications 文件夹?这需要身份验证/授权,不是吗?有这种技术的示例代码吗?
        • @MottiShneor 我知道有些应用程序会这样做,但我不知道机制,抱歉。
        • @MottiShneor 我想你可以检查一下程序的工作目录,它应该是 /Volumes/NameOfYourDMG/... 或 /Applications/YourApp.app/...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-17
        • 1970-01-01
        • 2021-08-09
        • 2017-05-28
        • 1970-01-01
        • 2019-05-02
        相关资源
        最近更新 更多