Où les applications multiplateformes doivent-elles conserver leurs données ?

StackOverflow https://stackoverflow.com/questions/57019

  •  09-06-2019
  •  | 
  •  

Question

Je construis bientôt une application qui cible Windows, Mac et Linux.Je me demandais où dois-je conserver les données d'application telles que les paramètres, etc.

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é de Vista.En outre, les utilisateurs peuvent souhaiter des paramètres différents.

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

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

Merci!

Juan

Était-ce utile?

La solution

Chaque plate-forme possède sa propre API pour rechercher le dossier de départ, le dossier de documents ou le dossier de préférences de l'utilisateur.

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

Ne codez pas en dur des chemins spécifiques ou n'ajoutez pas simplement un préfixe et un suffixe au nom de l'utilisateur.Essayez également de suivre les conventions en vigueur pour la plate-forme pour nommer les fichiers.

Autres conseils

En ce qui concerne les bonnes pratiques, Jeff a publié un article sur la pollution de l'espace utilisateur qui pourrait vous être utile : Ne polluez pas l'espace utilisateur

De manière générale, je recommanderais de résumer la mise en œuvre de vos paramètres dans un « fournisseur de paramètres » et de 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 la mieux adaptée aux plates-formes cibles (par exemple, un fichier sous Linux ou le registre Windows).

N'adoptez pas simplement 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.

Je ne suis pas :)

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

Merci!

Dans Windows, vous devez aller à un autre niveau que le simple profil utilisateur.Utilisez le dossier Application Data.

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

Ne stockez jamais les 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 où chercher.

Cependant, si vous souhaitez prendre en charge proprement plusieurs systèmes d'exploitation, vous devrez disposer d'un code spécifique au système d'exploitation pour chacun qui détermine exactement où les choses doivent aller.(~/Bibliothèque pour Mac OS, ~/.config pour les systèmes basés sur GNOME, %HOME%/Application Data pour Windows, etc.).

Quelle langue comptez-vous utiliser ?Java, par exemple, dispose d'un API de préférence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top