Расположение общих данных для Linux и Mac OS X
В Windows есть стандартное расположение данных приложения, которое совместно используется всеми пользователями на компьютере (т. Е. В Vista / 7, (root):\ProgramData
). Я ищу способ получить такую папку на других платформах, используя Qt.
- Предоставляет ли Qt встроенный метод для этого? ( QDesktopServices выглядел многообещающе, но, похоже, не предоставляет эту опцию.)
- Если нет, каковы стандартные местоположения в системах Linux и Mac OS X для общих данных приложений? Является
/usr/share
правильное место? Есть ли вообще стандарт?
[Уточнение] Это для изменяемых данных.
3 ответа
Я не знаю, предоставляет ли Qt API для этого. Вот специфическая информация для OS X
На OS X это зависит от того, является ли это приложение с графическим интерфейсом или библиотеки поддержки уровня Unix. Для приложения с графическим интерфейсом это общепринятая практика, когда все данные только для чтения используются всеми пользователями внутри самого пакета приложения. Обычно у вас есть
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 для получения дополнительной информации.
В Mac OS одним из решений является использование каталога /Users/Shared, так как он доступен для чтения и записи для всех пользователей и поэтому может изменяться для всех. Необходимо убедиться, что все файлы, которые вы создаете, доступны для чтения и записи для всех.
Или вы можете использовать поддержку приложений, как это было предложено другими, и делать любые файлы, которые вам нужны, чтобы их можно было читать и записывать для всех, но это означает, что администратор должен сначала создать их, либо с помощью установщика, либо при первом запуске, что немного уродливо.,
Моя компания использует Users / Shared именно для этой цели, но я не знаю, насколько это "аккуратно".
Стандарт иерархии файловой системы предполагает, что /usr/share
должны использоваться для файлов данных, не зависящих только от архитектуры, и /var/lib
должен использоваться для информации о состоянии, относящейся к приложению или системе.
Вы не указали, имеете ли вы в виду только чтение или изменяемое состояние, но формулировку вашего вопроса (в частности, сравнение с %COMMONAPPDATA%
) предлагает изменяемое состояние, в этом случае /var/lib
было бы уместно. Не забудьте, что там есть группа пользователей с правами записи в ваш подкаталог (или созданная сценарием установки пакета), и пусть системный администратор добавит соответствующих пользователей в эту группу.