在 Windows 上,应用程序数据有一个标准位置,该位置与机器上的所有用户共享(即在 Vista/7 中(root):\ProgramData
)。我正在寻找一种使用 Qt 在其他平台上获取此类文件夹的方法。
- Qt 是否提供了内置方法来执行此操作?(QDesktopServices看起来很有希望,但似乎没有提供这个选项。)
- 如果不是,Linux 和 Mac OS X 系统上共享应用程序数据的标准位置是什么?是
/usr/share
正确的地方吗?有标准吗?
[澄清]这是用于可变数据的。
在 Windows 上,应用程序数据有一个标准位置,该位置与机器上的所有用户共享(即在 Vista/7 中(root):\ProgramData
)。我正在寻找一种使用 Qt 在其他平台上获取此类文件夹的方法。
/usr/share
正确的地方吗?有标准吗?[澄清]这是用于可变数据的。
我不知道 Qt 是否为此提供了 API。这是 OS X 的特定信息。
在 OS X 上,这取决于它是 GUI 应用程序还是 unix 级别的支持库。对于 GUI 应用程序,标准做法是让所有用户在应用程序包本身中共享所有只读数据。通常你有
YourApp.app/
YourApp.app/Contents
YourApp.app/Contents/MacOS
YourApp.app/Contents/MacOS/YouApp .... this is the binary
YourApp.app/Contents/Resources/ .... here are all the shared data
GUI 将目录显示YourApp.app
为应用程序本身,因此您可以毫无问题地复制/移动它。如果这不可能,建议使用的子目录
/Library/Application Support/name_of_your_app/
用于用户之间共享的数据。
在机器上的用户之间拥有可变的共享数据是一个坏主意。一般来说,由于访问限制,这是不可能的。请注意,标准用户可能没有,实际上通常没有写入共享位置的管理权限。
对于特定于用户的可变数据,使用
~/Library/Application Support/name_of_your_app/
有关更多信息,请参阅此 Apple 指南。
文件系统层次标准建议/usr/share
应该用于只读架构独立的数据文件,并且/var/lib
应该用于与应用程序或系统有关的状态信息。
您没有指定您是指只读状态还是可变状态,但是您的问题的措辞(特别是与 的比较%COMMONAPPDATA%
)暗示了可变状态,在这种情况下/var/lib
将是适当的。不要忘记有一个对您的子目录具有写入权限的用户组(或由软件包安装脚本创建),并让系统管理员将适当的用户添加到该组。
在 Mac OS 上,一种解决方案是使用 /Users/Shared 目录,因为它对所有用户都是读/写的,因此对每个人都是可变的。必须确保您在其中创建的任何文件也对每个人都是读/写的。
或者您可以按照其他人的建议使用应用程序支持,并使您需要的任何文件对每个人都是可变的读/写,但这意味着管理员需要首先通过安装程序或首次运行来创建它们,这有点难看.
我的公司正是为此目的使用用户/共享,但我不知道它被认为是多么“整洁”。