Расположение общих данных для 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 было бы уместно. Не забудьте, что там есть группа пользователей с правами записи в ваш подкаталог (или созданная сценарием установки пакета), и пусть системный администратор добавит соответствующих пользователей в эту группу.

Другие вопросы по тегам