在Windows上,应用程序数据的标准位置与计算机上的所有用户共享(即在Vista / 7中,(root):\ProgramData
)。我正在寻找一种方法来使用Qt在其他平台上获得这样的文件夹。
/usr/share
是正确的地方吗?是否有标准?[澄清] 这是针对可变数据的。
答案 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目录,因为它对所有用户都是可读/写的,因此对每个人都是可变的。必须确保你在那里创建的任何文件都可以为每个人读/写。
或者您可以按照其他人的建议使用应用程序支持,并为所有人创建您需要的可读/可写文件,但这意味着管理员需要首先通过安装程序或首次运行创建它们,这是有点难看。
我的公司正在使用用户/共享用于此目的,但我不知道它是如何“整洁”的。