Расположение общих данных для Linux и Mac OS X - PullRequest
6 голосов
/ 14 августа 2010

В Windows существует стандартное расположение данных приложения, которое совместно используется всеми пользователями на машине (т. Е. В Vista / 7, (root):\ProgramData).Я ищу способ получить такую ​​папку на других платформах, используя Qt.

  • Предоставляет ли Qt встроенный метод для этого?( QDesktopServices выглядело многообещающе, но, похоже, не предоставляет эту опцию.)
  • Если нет, каковы стандартные местоположения в системах Linux и Mac OS X для данных общих приложений?/usr/share правильное место?Есть ли вообще стандарт?

[УТОЧНЕНИЕ] Это для изменяемых данных.

Ответы [ 3 ]

7 голосов
/ 14 августа 2010

Я не знаю, предоставляет ли 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

. Графический интерфейс пользователя представляет каталог YourApp.app как само приложение, так что вы можете без проблем копировать / перемещать его.Если это невозможно, рекомендуется использовать подкаталог

/Library/Application Support/name_of_your_app/

для обмена данными между пользователями.

Плохая идея иметь изменяемые, совместно используемые данные среди пользователей на машине;вообще это невозможно из-за ограничений доступа.Обратите внимание, что обычный пользователь может не иметь и фактически не имеет административного права на запись в общее местоположение.

Для изменяемых данных, характерных для пользователя, используйте

~/Library/Application Support/name_of_your_app/

См. это руководство Apple для получения дополнительной информации.

2 голосов
/ 11 сентября 2010

В Mac OS одним из решений является использование каталога / Users / Shared, поскольку он доступен для чтения / записи для всех пользователей и поэтому может изменяться для всех. Убедитесь, что все файлы, которые вы там создаете, предназначены для чтения и записи для всех.

Или вы можете использовать поддержку приложений, как это было предложено другими, и делать любые файлы, которые вам нужны, для изменяемого чтения / записи для всех, но это означает, что администратор должен сначала создать их, либо с помощью установщика, либо при первом запуске, который немного некрасиво.

Моя компания использует Users / Shared именно для этой цели, но я не знаю, насколько "опрятным" это считается.

2 голосов
/ 14 августа 2010

Стандарт Иерархия файловых систем предполагает, что /usr/share следует использовать для файлов данных, независимых только для чтения, для архитектуры , а /var/lib следует использовать для информации о состоянии относящиеся к приложению или системе .

Вы не указали, имеете ли вы в виду только чтение или изменяемое состояние, но формулировка вашего вопроса (в частности, сравнение с %COMMONAPPDATA%) предполагает изменяемое состояние, в этом случае /var/lib будет подходящим. Не забудьте, что там есть группа пользователей с правами записи для вашего подкаталога (или созданная сценарием установки пакета), и пусть системный администратор добавит соответствующих пользователей в эту группу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...