0

我有一组可以协同工作的应用程序。应该可以由用户单独启动这些应用程序中的每一个(即一个应用程序提供监视功能,另一个应用程序提供配置功能等),因此我希望它们在 Applications 文件夹中显示为不同的应用程序(可能在一个目录中)。

这些应用程序基于 Qt5,因此我想将 Qt 与应用程序私下打包,以确保 Qt 存在且可用。另一方面,我想确保我只包含一个 Qt 副本以避免系统膨胀。

由于还包含 LaunchDaemon,我正在使用包安装程序。

如何放置所需的 Qt 框架以避免拥有多个副本?

这是天真的方法:

/Applications/
    MyCompany/
        Foo.app/
            Contents/
                Info.plist (must use its own plist to specify some properties)
                MacOS/
                    foo
                Frameworks/
                    Qt-Goes-Here??
        Bar.app/
            Contents/
                Info.plist
                MacOS/
                    bar
                Frameworks/
                    Qt-Goes-Here?? - Or can this be a link to the other location?

由于我不是 Mac 专家,因此非常欢迎任何输入(包括告诉我我正在尝试一些愚蠢的事情)!

4

1 回答 1

2

这里有两种可能,第一种是

/Library

第二个

/Library/Application Support

如果您查看那里,您会发现包含各种应用程序内容的文件夹。您应该能够在那里创建一个文件夹并添加 Qt 框架,然后使用install_name_tool更新您的应用程序以指向该文件夹

文档为 /Library 声明了以下内容:-

Library 目录是用于存储私有应用程序相关数据和首选项的顶级目录。有几个库目录分散在整个系统中,但您应该始终使用位于当前主目录中的一个。不要将文件直接存储在库目录的顶层。相反,将它们存储在此表中描述的特定子目录之一中。在 OS X v10.7 及更高版本中,Finder 默认隐藏用户主文件夹中的库目录。因此,您永远不应将希望用户访问的文件存储在此目录中。要获取此目录的路径,请使用带有 NSUserDomainMask 域的 NSLibraryDirectory 搜索路径键。

对于/库/应用程序支持:-

应用程序支持目录是您的应用程序存储支持该应用程序但不是应用程序运行所必需的任何类型文件的位置,例如文档模板或配置文件。这些文件应该是特定于应用程序的,但绝不应该存储用户数据。该目录位于 Library 目录中。切勿将文件存储在此目录的顶层:始终将它们放在以您的应用程序或公司命名的子目录中。如果资源适用于系统上的所有用户,例如文档模板,请将它们放在 /Library/Application Support 中。要获取此目录的路径,请使用带有 NSLocalDomainMask 域的 NSApplicationSupportDirectory 搜索路径键。如果资源是特定于用户的,例如工作区配置文件,请将它们放在当前用户的 ~/Library/Application Support 目录中。

完整的文档可以在这里找到。

于 2013-10-17T13:27:07.307 回答