Linux和Mac OS X的共享数据位置

时间:2010-08-13 20:20:37

标签: linux macos qt application-data

在Windows上,应用程序数据的标准位置与计算机上的所有用户共享(即在Vista / 7中,(root):\ProgramData)。我正在寻找一种方法来使用Qt在其他平台上获得这样的文件夹。

  • Qt是否提供了内置的方法来执行此操作? (QDesktopServices看起来很有希望,但似乎没有提供这个选项。)
  • 如果没有,Linux和Mac OS X系统上共享应用程序数据的标准位置是什么? /usr/share是正确的地方吗?是否有标准?

[澄清] 这是针对可变数据的。

3 个答案:

答案 0 :(得分:7)

我不知道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/

有关详细信息,请参阅this Apple guideline

答案 1 :(得分:2)

File System Hierarchy Standard建议将/usr/share用于read-only architecture independent data files/var/lib应用于state information pertaining to an application or the system

您没有说明您是指可读状态还是可变状态,但您的问题的措辞(特别是与%COMMONAPPDATA%的比较)表明可变状态,在这种情况下/var/lib会是合适的。不要忘记让一个用户组对您的子目录具有写权限(或由程序包安装脚本创建),并让sysadmin将适当的用户添加到该组。

答案 2 :(得分:2)

在Mac OS上,一种解决方案是使用/ Users / Shared目录,因为它对所有用户都是可读/写的,因此对每个人都是可变的。必须确保你在那里创建的任何文件都可以为每个人读/写。

或者您可以按照其他人的建议使用应用程序支持,并为所有人创建您需要的可读/可写文件,但这意味着管理员需要首先通过安装程序或首次运行创建它们,这是有点难看。

我的公司正在使用用户/共享用于此目的,但我不知道它是如何“整洁”的。