如何分配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".
长答案:
这是一种方法的概述:
- 在 Xcode 中创建一个 组 ,比如
Logos
,它与文件夹关联(在 Xcode 9 New Group
生成文件夹,在此之前您可以创建无文件夹 Group 然后使用 File Inspector 添加一个)。
- 将您的徽标添加到该组。 不要将这些图像标记为目标的一部分(否则Xcode将复制并展平您的文件夹结构)
- 添加复制文件或运行脚本构建阶段进行复制图像到
Resources
的子文件夹,比如 Logos
.
由于图像是您应用程序包的一部分,您可以使用标准包和文件例程直接从那里访问它们。无需将它们复制到任何地方。
最后你设法用以下语句引起了一些混淆:
Because the app is sandboxed, all logos are stored in a folder in Library > Applikation Support
.
这里不清楚你指的是哪个文件夹,有三个明显的候选者:
- 系统:
/Library/Application Support
- 用户:
~/Library/Application Support
- 沙盒应用:
~/Library/Containers/<bundle id>/Data/Library/Application Support
如果您正在使用 API(URLsForDirectory:inDomains:
、URLForDirectory:inDomain:appropriateForURL:create:error:
、NSSearchPathForDirectoriesInDomains
),请求用户域,并且在沙盒应用程序中,则返回 (3) 而不是(2) 并且您的沙盒应用程序可以在征得用户许可的情况下访问它。
Application Support
的子文件夹(无论您使用哪个,但推荐使用 (3)),通常根据您的应用程序的捆绑 ID 命名,是您应该存储应用程序下载徽标的地方 – 有无需将应用程序包中包含的图像复制到同一位置。
HTH
我有一个沙盒 osx 应用程序,其中包含大量 png 文件形式的徽标。
如果缺少任何徽标,应用程序会自动从网络上下载丢失的徽标。
因为该应用程序是沙盒化的,所以所有徽标都存储在 Library > Applikation Support
.
我现在的问题是,如何使用应用程序包分发现有徽标?
最好的方法是,如果应用程序是第一次启动,则会创建应用程序支持中的徽标文件夹,并从新文件夹中的包中复制所有徽标。
这是否可以通过应用程序包实现,还是我必须创建安装程序? 任何帮助将非常感激。
让我们看看是否可以完善您目前收到的评论。
My question is now, how I could distribute the already existing logos with an app bundle?
简短回答: 只需将它们作为资源包含在捆绑包中。许多应用程序都包含在其 GUI 中使用的图像,唯一的区别可能是它是 "huge number".
长答案:
这是一种方法的概述:
- 在 Xcode 中创建一个 组 ,比如
Logos
,它与文件夹关联(在 Xcode 9New Group
生成文件夹,在此之前您可以创建无文件夹 Group 然后使用 File Inspector 添加一个)。 - 将您的徽标添加到该组。 不要将这些图像标记为目标的一部分(否则Xcode将复制并展平您的文件夹结构)
- 添加复制文件或运行脚本构建阶段进行复制图像到
Resources
的子文件夹,比如Logos
.
由于图像是您应用程序包的一部分,您可以使用标准包和文件例程直接从那里访问它们。无需将它们复制到任何地方。
最后你设法用以下语句引起了一些混淆:
Because the app is sandboxed, all logos are stored in a folder in
Library > Applikation Support
.
这里不清楚你指的是哪个文件夹,有三个明显的候选者:
- 系统:
/Library/Application Support
- 用户:
~/Library/Application Support
- 沙盒应用:
~/Library/Containers/<bundle id>/Data/Library/Application Support
如果您正在使用 API(URLsForDirectory:inDomains:
、URLForDirectory:inDomain:appropriateForURL:create:error:
、NSSearchPathForDirectoriesInDomains
),请求用户域,并且在沙盒应用程序中,则返回 (3) 而不是(2) 并且您的沙盒应用程序可以在征得用户许可的情况下访问它。
Application Support
的子文件夹(无论您使用哪个,但推荐使用 (3)),通常根据您的应用程序的捆绑 ID 命名,是您应该存储应用程序下载徽标的地方 – 有无需将应用程序包中包含的图像复制到同一位置。
HTH