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

标签 macos path installation configuration-files

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

以下是我在 Windows 上的设置方法:

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

这是我为 Mac OS 所做的事情:

我成功创建了 DMG,但我不知道将数据文件夹放在哪里。对另一个文件夹(例如 HOMEDesktop)进行硬编码是可行的,但感觉不太对劲。我想过有一个按钮可以打开一个对话框来指定文件夹,但随后我需要保存路径以供用户下次打开应用程序。为了保存此路径,我需要一个配置文件或工作区。因此,我再次需要一个可以找到配置文件的路径。

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

最佳答案

我想说,在 macOS 中将数据文件夹与可执行 python 脚本并排放置并没有什么问题。

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

不过,我认为适用于 Windows 和 macOS 的最佳解决方案是允许将数据目录的路径指定为命令行参数。如果没有指定,可以默认为./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

如果未设置任何内容(例如,第一次使用),您将收到错误(并且该命令返回非零返回代码:

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

关于macos - 在哪里读取 .DMG Mac OS 文件中的数据文件夹和配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49919999/

相关文章:

c++ - Clang++ 不理解 mac 终端中的 c++11

iphone - 新的现代 Objective-C 枚举类型检查

python - 无法在 macos 上使用 pyenv 安装 python 版本

c - 给定两个绝对路径,如何找到相对路径?

excel - 搜索文件并返回路径

macos - Virtualbox 返回 errorID=BLKCACHE_IOERR

string - - 检查字符串是否包含路径时匹配失败

custom-controls - 通过命令行添加自定义快捷方式 - Ubuntu 12.10

delphi - 尝试为 Delphi XE2 安装 Virtual Treeview

python - 从源文件构建 OpenCV 库