【问题标题】:Recommended way of deploying cross-platform mac application推荐的跨平台mac应用部署方式
【发布时间】:2010-09-16 22:21:21
【问题描述】:

我正在从事一项工作,我们正在使用 C++、Qt 和 CMake(以及其他东西)开发一组跨平台应用程序。在 Mac 上,我们遇到了需要将所有共享库打包到每个 .app 中的问题(目前有 4 个),这导致下载和安装的大小很快变大。

我们希望对 Mac 的处理方式保持友好,这意味着我们希望支持拖放应用程序的能力。有人对如何在减小总大小的同时做到这一点有任何想法吗?

该项目目前是一组四个可执行文件或应用程序,每个都使用一组公共共享库(qt 和内部)。还有一组依赖于内部库的 ruby​​ 绑定。我意识到您可能可以创建一个框架并将其安装在系统/库/框架中,但我还没有读到那么多。这样做似乎会破坏在机器之间拖放应用程序的能力。

有人知道在 Mac 上做类似事情的应用程序示例吗?欢迎任何有创意的想法。

【问题讨论】:

  • 一般来说,你不应该在 /System/Library/Frameworks 中插入或修改东西。这是 OS X 的一部分,由 Apple 管理。如果需要,请考虑将常见的东西放入 /Library/Frameworks 中。但这通常意味着使用安装程序而不是独立的拖放应用程序将它们打包。保持应用程序自包含有很多话要说。当然,要权衡的是磁盘空间和潜在的下载速度,尽管两者都越来越便宜。
  • 我不会在 /System/Library/Frameworks 中安装东西。我认为我们倾向于使用独立的应用程序,但争论仍在继续。

标签: macos project-management cross-platform


【解决方案1】:

制作安装程序,最好使用 XCode 工具附带的标准软件包制作工具。 拥有一套应用程序的安装程序并不少见。苹果自己的 iWork 有一个安装程序并共享库。 如果您想将应用程序分发给企业客户,则制定标准 .pkg 很重要:IT 管理员希望远程自动化安装过程,这对于标准 .pkg 是可能的,但如果您自己编写自定义安装程序则不会.

至于文件放置,您应该了解 Apple 所描述的File System Domains。基本上所有的目录结构都重复了三遍:

/System/    : system domain
/           : local domain
/Users/name : user's domain

第一个由 Apple 保留。第二个是机器上用户共享的东西。第三个是针对特定用户的。

共享对象被放入名为Library 的目录中。所以我们有

/System/Library 
/Library
/Users/name/Library

您通常会在最后两个中安装东西。在Library 中,目录应该按照here 的描述进行组织。通常你把框架放在

Library/Frameworks/

Library/Application Support/your_app/Frameworks/ 

【讨论】:

  • 感谢您的提示。 Apple 的哪些开发人员文档与特定任务相关并不总是很清楚。我们肯定有一些东西要安装在 /Users/name/Library/Application Support 中。我们有一个谷歌 Sketchup 插件,需要进去。
猜你喜欢
  • 2011-01-22
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 2011-01-22
  • 1970-01-01
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多