6

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

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

[澄清]这是用于可变数据的。

4

3 回答 3

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/

有关更多信息,请参阅此 Apple 指南

于 2010-08-13T22:37:24.397 回答
2

文件系统层次标准建议/usr/share应该用于只读架构独立的数据文件,并且/var/lib应该用于与应用程序或系统有关的状态信息

您没有指定您是指只读状态还是可变状态,但是您的问题的措辞(特别是与 的比较%COMMONAPPDATA%)暗示了可变状态,在这种情况下/var/lib将是适当的。不要忘记有一个对您的子目录具有写入权限的用户组(或由软件包安装脚本创建),并让系统管理员将适当的用户添加到该组。

于 2010-08-13T21:11:16.120 回答
2

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

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

我的公司正是为此目的使用用户/共享,但我不知道它被认为是多么“整洁”。

于 2010-09-11T09:37:21.100 回答