在.DMG Mac OS文件中何处读取数据文件夹和配置文件?

时间:2018-04-19 11:30:32

标签: macos path installation configuration-files

我正在开发适用于Windows和Mac的应用程序,我需要一些关于我应该如何组织输入数据的文件结构(例如配置文件)的帮助,以便我可以轻松实现用于Mac。

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

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

以下是我为Mac Os所做的事情:

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

Mac可用性视角中的预期行为,以及如何根据目录位置和配置文件进行操作?

1 个答案:

答案 0 :(得分:1)

我想说将数据文件夹与macOS中的可执行python脚本并存是没有错的。

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

我认为最适合Windows和macOS的解决方案是允许将数据目录的路径指定为命令行参数。如果未指定,则默认为./data

如果要保存用户指定的数据目录路径设置,那么使用defaults系统就是一种类似mac的技巧。您可以使用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

如果没有设置(例如,第一次使用),您将收到错误(并且该命令返回非零返回码:

% 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的内置首选方法来持久存储应用程序的键/值设置所需的所有工具。