2010-08-13 20 views
6

En Windows, hay una ubicación estándar para datos de aplicaciones que se comparte con todos los usuarios de la máquina (es decir, en Vista/7, (root):\ProgramData). Estoy buscando una forma de obtener una carpeta en otras plataformas usando Qt.Ubicación de datos compartidos para Linux y Mac OS X

  • ¿Qt proporciona un método incorporado para hacer esto? (QDesktopServices parecía prometedor, pero no parece proporcionar esta opción.)
  • En caso negativo, ¿cuáles son las ubicaciones estándar en sistemas Linux y Mac OS X para datos de aplicaciones compartidas? ¿Es /usr/share el lugar correcto? ¿Hay algún estándar?

[ACLARACIÓN] Esto es para datos variables.

+0

Excelente pregunta: este es el tipo de pequeño detalle que muchos desarrolladores multiplataformas no consideran o desean simplemente eliminar. – JulesLt

Respuesta

7

No sé si Qt proporciona una API para eso. Aquí está la información específica de OS X.

En OS X, depende de si es una aplicación GUI o bibliotecas de soporte de nivel de Unix. Para una aplicación GUI, es una práctica estándar tener todos los datos de solo lectura compartidos por todos los usuarios dentro del mismo paquete de aplicaciones. Por lo general usted tiene

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 

La interfaz gráfica de usuario presenta el directorio YourApp.app como la propia aplicación, por lo que se puede copiar/mover alrededor sin ningún problema. Si eso no es posible, se recomienda utilizar el subdirectorio de

/Library/Application Support/name_of_your_app/ 

para los datos compartidos entre los usuarios.

Es una mala idea tener datos compartidos y mutables entre los usuarios de una máquina; en general, es imposible debido a las restricciones de acceso. Tenga en cuenta que un usuario estándar puede no tener, y de hecho generalmente no tiene un derecho administrativo para escribir en una ubicación compartida.

Para los datos mutables específicos de un usuario, el uso

~/Library/Application Support/name_of_your_app/ 

Ver this Apple guideline para obtener más información.

2

El File System Hierarchy Standard sugieren que /usr/share se debe utilizar para read-only architecture independent data files, y /var/lib se debe utilizar para state information pertaining to an application or the system.

No especificó si se refiere al estado de solo lectura o mutable, pero la redacción de su pregunta (específicamente la comparación con %COMMONAPPDATA%) sugiere un estado mutable, en cuyo caso sería apropiado /var/lib. No olvide tener un grupo de usuarios con derechos de escritura en su subdirectorio que esté disponible (o creado por el script de instalación del paquete) y pida a sysadmin que agregue los usuarios adecuados a ese grupo.

+0

Varios directorios en/var pueden ser lo que estás buscando. El resultado de man hier describe la jerarquía de archivos con cierto detalle. – BillThor

2

En Mac OS, una solución es usar el directorio/Users/Shared, ya que es de lectura/escritura para todos los usuarios y, por lo tanto, es mutable para todos. Asegúrate de que todos los archivos que crees sean de lectura/escritura para todos.

O puede utilizar el soporte de aplicaciones sugerido por otros y hacer que cualquier archivo sea mutable de lectura/escritura para todos, pero eso significa que un administrador necesita crearlos primero, ya sea a través de un instalador o primera ejecución, es un poco feo

Mi empresa está utilizando Users/Shared para exactamente este propósito, pero no sé qué tan "ordenado" se considera.