2008-09-11 13 views
16

Estoy creando una aplicación que se dirige a Windows, Mac y Linux pronto. Me preguntaba dónde debería guardar datos de aplicaciones como configuraciones, etc.¿Dónde deben las aplicaciones multiplataforma mantener sus datos?

La carpeta de instalación de la aplicación es la opción más fácil, pero creo que podría ser un problema con el nuevo modelo de seguridad de Vista. Además, los usuarios pueden desear configuraciones diferentes.

¿Es C: \ Documents and Settings \ username \ MyApp bueno para Vista y XP? ¿Es /home/username/.MyApp bueno para Linux y Mac?

Todas las ideas y/o enlaces a las mejores prácticas son muy apreciadas.

Gracias!

Juan

+0

La respuesta de Kristopher es correcta desde el punto de vista técnico, pero la carpeta ~ de una Mac es/Users not/Home – username

Respuesta

12

Cada plataforma tiene su propia API para la búsqueda de la carpeta del usuario doméstico, o carpeta de documentos, o la carpeta de preferencias.

  • de Windows: SHGetFolderPath() o SHGetKnownFolderPath()
  • Mac OS X y iPhone OS: NSSearchPathForDirectoriesInDomains()
  • Unix: entorno HOME variable $

No codificar rutas específicas o simplemente inserte un prefijo y sufijo en el nombre del usuario. Además, intente seguir las convenciones que existan para que la plataforma nombre los archivos.

2

No estoy :)

estoy usando PERFIL_USUARIO en Windows y Mac en INICIO/Linux. Pero aun así, necesito saber que esos son los lugares correctos.

Gracias!

2

En Windows necesita ir a otro nivel más profundo que solo el perfil de usuario. Use la carpeta de Datos de Aplicación.

1

Nunca almacene datos de usuario en la carpeta de la aplicación. Es solo una mala idea.

La mayoría de los sistemas operativos tienen una variable de entorno $ HOME (o% HOME%). Ese sería el primer lugar para mirar.

Sin embargo, si quiere admitir con total seguridad varios sistemas operativos, tendrá que tener un código específico del sistema operativo para cada uno que averigüe exactamente a dónde deben ir las cosas. (~/Library para Mac OS, ~/.config para sistemas basados ​​en GNOME,% HOME%/Application Data para Windows, etc.).

2

En Windows uso APPDATA, y en Linux uso HOME.

5

En lo que respecta a las mejores prácticas, Jeff publicó un artículo en contaminar el espacio de usuario que le puede resultar útil: Don't Pollute User Space

+0

Muy buen enlace, gracias. Lo divertido es que estoy suscrito al blog de Jeff, simplemente no recuerdo esa publicación. ¡Gracias de nuevo! –

+2

el enlace está roto:/(supongo que Jeff no leyó [Cool URIs Do not Change] (http://www.w3.org/Provider/Style/URI.html)) –

4

De manera general, recomendaría la abstracción de la implementación de la configuración en una 'configuración del proveedor' y proporcionar diferentes proveedores para cada plataforma. De esta forma, puede implementar el almacenamiento de la configuración de la manera que mejor se adapte a las plataformas de destino (por ejemplo, un archivo en Linux o el Registro de Windows).

No solo adopte el "mínimo común denominador".Cuando tenga contenido que debe estar explícitamente almacenado en archivos, haga que su proveedor de configuración exponga la ubicación específica de la plataforma para esos archivos.

1

Qué idioma está planeando utilizar? Java, por ejemplo, tiene un Preference API dedicado.

Cuestiones relacionadas