Подтвердить что ты не робот

Где кросс-платформенные приложения хранят свои данные?

Я создаю приложение, ориентированное на Windows, Mac и Linux. Мне было интересно, где я должен хранить данные приложения, такие как настройки и т.д.

Папка установки приложений - самый простой выбор, но я думаю, что это может быть проблемой с новой моделью безопасности Vista. Кроме того, пользователям могут потребоваться разные настройки.

Это C:\Documents and Settings\имя_пользователя\MyApp хорошо для Vista и XP? Это /home/username/.MyApp хорошо для Linux и Mac?

Любые идеи и/или ссылки на лучшие практики, которые очень ценятся.

Спасибо!

Хуан

4b9b3361

Ответ 1

Каждая платформа имеет свой собственный API для поиска домашней папки пользователя, папки документов или папки настроек.

  • Windows: SHGetFolderPath() или SHGetKnownFolderPath()
  • ОС Mac OS X и iPhone: NSSearchPathForDirectoriesInDomains()
  • Unix: переменная среды $HOME

Не указывайте конкретные пути или просто привяжите префикс и суффикс к имени пользователя. Кроме того, попробуйте выполнить любые соглашения, которые существуют для платформы для именования файлов.

Ответ 3

В общем, я бы рекомендовал абстрагировать реализацию ваших настроек в "Поставщик настроек" и предоставить разные провайдеры для каждой платформы. Таким образом, вы можете реализовать хранение настроек таким образом, который наилучшим образом подходит для целевых платформ (например, файл в Linux или в реестре Windows).

Не просто принять "самый низкий общий знаменатель". Если у вас есть контент, который должен быть эксплицитно сохранен в файлах, поставщик поставщика настроек выставляет место для определенных файлов для этих файлов.

Ответ 4

Я не:)

Я использую USERPROFILE в Windows и HOME в Mac/Linux. Но даже в этом случае мне нужно знать, что это правильные места.

Спасибо!

Ответ 5

В окнах вам нужно идти еще на один уровень выше, чем только профиль пользователя. Используйте папку "Данные приложения".

Ответ 6

В Windows я использую APPDATA, а в Linux я использую HOME.

Ответ 8

Никогда, никогда не храните пользовательские данные в папке приложения. Это просто плохая идея.

В большинстве операционных систем есть переменная среды $HOME (или% HOME%). Это будет первое место.

Если вы хотите иметь чистую поддержку нескольких операционных систем, вам придется иметь для каждой версии код, специфичный для ОС, для каждого, который точно определяет, куда нужно идти. (~/Библиотека для Mac OS, ~/.config для систем на базе GNOME,% HOME%/Данные приложения для Windows и т.д.).

Ответ 9

На каком языке вы планируете использовать? Java, например, имеет выделенный Preference API.