2008-09-11 7 views
16

Je construis une application qui cible bientôt Windows, Mac et Linux. Je me demandais où conserver les données d'application telles que les paramètres, etc.Où les applications multiplates-formes doivent-elles conserver leurs données?

Le dossier d'installation de l'application est le choix le plus simple, mais je pense que cela pourrait poser un problème avec le nouveau modèle de sécurité Vista. En outre, les utilisateurs peuvent vouloir des paramètres différents.

Est-ce que C: \ Documents and Settings \ nom d'utilisateur \ MyApp est bon pour Vista et XP? Est-ce /home/username/.MyApp bon pour Linux et Mac?

Toutes les idées et/ou les liens vers les meilleures pratiques sont très appréciés.

Merci!

Juan

+0

La réponse de Kristopher est techniquement correcte mais fwiw, le ~ dossier sur un Mac est/Utilisateurs non/Accueil – username

Répondre

12

Chaque plate-forme a sa propre API pour trouver le dossier de l'utilisateur, ou un dossier de documents ou d'un dossier de préférences.

  • Fenêtres: SHGetFolderPath() ou SHGetKnownFolderPath()
  • Mac OS X et iPhone OS: NSSearchPathForDirectoriesInDomains()
  • Unix: $ variable d'environnement HOME

Ne pas hardcode chemins d'accès spécifiques ou il suffit d'ajouter un préfixe et un suffixe sur le nom de l'utilisateur. Essayez également de suivre les conventions de la plate-forme pour nommer les fichiers.

2

Je ne suis pas :)

J'utilise USERPROFILE dans Windows et HOME Mac/Linux. Mais même ainsi, j'ai besoin de savoir que ce sont les bons endroits.

Merci!

2

Dans Windows, vous devez aller au-delà du profil utilisateur. Utilisez le dossier Application Data.

1

Jamais, jamais stocker des données utilisateur dans le dossier de l'application. C'est juste une mauvaise idée.

La plupart des systèmes d'exploitation ont une variable d'environnement $ HOME (ou% HOME%). Ce serait le premier endroit à regarder.

Si vous souhaitez prendre en charge proprement plusieurs systèmes d'exploitation, vous devrez cependant avoir du code spécifique au système d'exploitation pour chacun d'entre eux qui détermine exactement où les choses doivent se passer. (~/Bibliothèque pour Mac OS, ~/.config pour les systèmes basés sur GNOME,% HOME/Application Data pour Windows, etc.).

2

Sous Windows, j'utilise APPDATA et sous Linux j'utilise HOME.

5

En ce qui concerne les meilleures pratiques, Jeff a publié un article sur l'espace utilisateur polluant que vous pourriez trouver utiles: Don't Pollute User Space

+0

Très joli lien, merci. Chose amusante est que je suis abonné au blog de Jeff, je ne me souviens tout simplement pas de ce post. Merci encore! –

+2

le lien est cassé:/(supposons que Jeff n'a pas lu [Cool URIs Do not Change] (http://www.w3.org/Provider/Style/URI.html)) –

4

De manière générale, je recommande abstraire la mise en œuvre de vos paramètres dans un « fournisseur Paramètres » et fournir différents fournisseurs pour chaque plate-forme. De cette façon, vous pouvez implémenter le stockage des paramètres de la manière qui convient le mieux aux plates-formes cibles (par exemple, un fichier sur Linux ou le registre Windows). Ne pas simplement adopter le «plus petit dénominateur commun».Lorsque vous avez du contenu qui doit être explicitement stocké dans des fichiers, demandez à votre fournisseur de paramètres d'exposer l'emplacement spécifique à la plate-forme pour ces fichiers.

1

Quelle langue que vous prévoyez d'utiliser? Java, par exemple, a un Preference API dédié.

Questions connexes