如何分配Image文件夹?

How to distribute Image folder?

我有一个沙盒 osx 应用程序,其中包含大量 png 文件形式的徽标。 如果缺少任何徽标,应用程序会自动从网络上下载丢失的徽标。 因为该应用程序是沙盒化的,所以所有徽标都存储在 Library > Applikation Support.

中的一个文件夹中

我现在的问题是,如何使用应用程序包分发现有徽标?

最好的方法是,如果应用程序是第一次启动,则会创建应用程序支持中的徽标文件夹,并从新文件夹中的包中复制所有徽标。

这是否可以通过应用程序包实现,还是我必须创建安装程序? 任何帮助将非常感激。

让我们看看是否可以完善您目前收到的评论。

My question is now, how I could distribute the already existing logos with an app bundle?

简短回答: 只需将它们作为资源包含在捆绑包中。许多应用程序都包含在其 GUI 中使用的图像,唯一的区别可能是它是 "huge number".

长答案:

这是一种方法的概述:

  1. 在 Xcode 中创建一个 ,比如 Logos,它与文件夹关联(在 Xcode 9 New Group 生成文件夹,在此之前您可以创建无文件夹 Group 然后使用 File Inspector 添加一个)。
  2. 将您的徽标添加到该组。 不要将这些图像标记为目标的一部分(否则Xcode将复制并展平您的文件夹结构)
  3. 添加复制文件运行脚本构建阶段进行复制图像到 Resources 的子文件夹,比如 Logos.

由于图像是您应用程序包的一部分,您可以使用标准包和文件例程直接从那里访问它们。无需将它们复制到任何地方。

最后你设法用以下语句引起了一些混淆:

Because the app is sandboxed, all logos are stored in a folder in Library > Applikation Support.

这里不清楚你指的是哪个文件夹,有三个明显的候选者:

  1. 系统:/Library/Application Support
  2. 用户:~/Library/Application Support
  3. 沙盒应用:~/Library/Containers/<bundle id>/Data/Library/Application Support

如果您正在使用 API(URLsForDirectory:inDomains:URLForDirectory:inDomain:appropriateForURL:create:error:NSSearchPathForDirectoriesInDomains),请求用户域,并且在沙盒应用程序中,则返回 (3) 而不是(2) 并且您的沙盒应用程序可以在征得用户许可的情况下访问它。

Application Support 的子文件夹(无论您使用哪个,但推荐使用 (3)),通常根据您的应用程序的捆绑 ID 命名,是您应该存储应用程序下载徽标的地方 – 有无需将应用程序包中包含的图像复制到同一位置。

HTH