在哪里读取.DMG Mac OS 文件中的数据文件夹和配置文件?

Where to read a data folder and configuration file in .DMG Mac OS file?

我正在为 Windows 和 Mac 开发一个应用程序,我需要一些关于 我应该如何组织输入数据的文件结构(例如配置文件)的帮助,这样我就可以让它更容易用于 Mac。

以下是我为 Windows 设置的方式:

我有一个非常简单的程序,可以从目录 data 中读取一些数据。 在 Windows 中,我创建了一个 example.exedata 文件夹位于它旁边 。如果用户需要处理更多数据(通过电子邮件接收),她只需将文件放入文件夹并双击 example.exe

这是我为 Mac Os:

所做的

我设法创建了 DMG,但我不知道将数据文件夹放在哪里。硬编码另一个文件夹(例如 HOMEDesktop)可行,但感觉不对。我想有一个 Button 打开一个 Dialog 来指定文件夹,但是我需要 保存路径以供用户下次打开应用程序 。为了保存这个路径,我需要一个配置文件或工作空间。所以,我再次需要一个可以找到配置文件的路径。

Mac可用性角度预期行为是什么,以及我将如何处理它目录位置和配置文件?

我会说让数据文件夹与 macOS.

中的可执行 python 脚本并存并没有错

我假设这是一个没有 GUI 的脚本。如果有 GUI,我说应该鼓励用户将应用程序复制到 /Applications(或 ~/Applications),然后为用户提供一种使用对话框 select 到 "data" 文件夹的方法盒子。

不过,我认为对 Windows 和 macOS 都适用的最佳解决方案是允许将数据目录的路径指定为命令行参数.如果指定了none,可以默认为./data

如果要将用户指定的路径设置保存到数据目录,一个很好的类似 mac 的技术是使用 defaults 系统。您可以使用 defaults readdefaults write 命令轻松地在脚本中读取和写入默认值。默认值使用 reverse domain name notation 工作,以帮助确保它们在所有应用程序中都是唯一的。

假设您的组织名为 ttwidgets,如果您有一个名为 ttwidgets.com 的网站并且此脚本名为 pywidget,您将使用域 com.ttwidgets.pywidget.

设置默认值的语法是:

% defaults write com.ttwidgets.pywidget datapath /user/specified/path

然后由 macOS 管理并永久存储。如果稍后再次存在该设置,您可以使用:

读回该设置
% defaults read com.ttwidgets.pywidget datapath
/user/specified/path

如果未设置任何内容(例如,首次使用),您将收到错误消息(并且命令 return 是一个非零 return 代码:

% defaults read com.ttwidgets.pywidget an_unset_variable
2018-04-21 12:08:40.179 defaults[12409:1472790]
The domain/default pair of (com.ttwidgets.pywidget, an_unset_variable) does not exist
% echo $?
1

这应该提供使用 macOS 的内置首选方法永久存储应用程序 key/value 设置所需的所有工具。