Quiero que mi aplicación de escritorio java sepa si el usuario la está ejecutando por primera vez en esa PC. Como el archivo jar puede compartirse entre usuarios, no quiero escribir en un archivo dentro del archivo jar. Obviamente hay muchas formas de hacerlo, pero ¿qué recomendarías? (Tiene que ser multiplataforma). graciasDetectar usuario por primera vez en la aplicación Java
Respuesta
Intente utilizar Preferences y sus métodos systemRoot() o userRoot() para obtener preferencias de todo el sistema o específicas del usuario.
Recomendaría utilizar el directorio de inicio de los usuarios donde puede colocar un archivo de configuración específico del usuario. Esto le permitirá detectar usuarios nuevos y recordar las preferencias que puedan elegir.
System.getProperty("user.home"); // returns the home directory cross platform
Esta es una solución efectiva, por supuesto, aunque no muy bonita en este caso, ya que no se necesitan configuraciones específicas del usuario. Seguro que la aplicación podría colocar un archivo vacío en el directorio de inicio (si el archivo existe, no es un usuario nuevo), pero el usuario podría molestarse con ese archivo en la carpeta de inicio y eliminarlo. –
Cada sistema operativo tiene algunos directorios específicos en los que se almacenan los datos de usuario (/home
, C:\Users
, C:\Documents and settings
). Este valor generalmente está disponible en la JVM con la propiedad del sistema "user.home".
Almacene allí algún archivo para almacenar su configuración de usuario. Por supuesto, cada sistema operativo tiene su forma de hacerlo (carpeta "Datos de la aplicación", carpeta con un nombre que comienza con un punto), debe asegurarse de cumplirla.
- 1. Creación de una API en Java por primera vez
- 2. ¿Cómo determinar que el usuario ejecuta la aplicación por primera vez?
- 3. aplicación ASP.Net corre lento en la primera vez
- 4. ¿Cómo configurar postgresql por primera vez?
- 5. ¿Cómo iniciar actividad solo una vez cuando la aplicación se abre por primera vez?
- 6. Creando un instalador MSI por primera vez
- 7. Mongo Map Reducir por primera vez
- 8. cache.manifest funciona por primera vez, luego falla
- 9. Instalación de Django por primera vez
- 10. Aprendizaje de Oracle por primera vez
- 11. ¿La clase de Java se inicializa por el hilo que lo usa por primera vez?
- 12. ¿ApplicationDidFinishLaunching: recibe una llamada cuando la aplicación se actualiza y se inicia por primera vez?
- 13. Problema al usar PDO por primera vez
- 14. Detectando la primera ejecución de una aplicación
- 15. ¿Detecta cuándo se inicia una aplicación de iOS por primera vez?
- 16. Android denegación de permisos si otra aplicación en la que no instala por primera vez
- 17. ¿Por qué se crea un "USO GRANT" la primera vez que concedo privilegios de usuario?
- 18. La aplicación se bloquea al actualizar la base de datos sqlite por primera vez
- 19. ¿Puedo ejecutar una actividad de Android solo la primera vez que se abre una aplicación?
- 20. WebView no puede iniciar sesión cuando la aplicación se inicia por primera vez
- 21. La mejor manera de verificar si una aplicación de iPhone se está ejecutando por primera vez
- 22. Jinja2 artículos X por primera vez en bucle para ... si
- 23. ¿Puedo utilizar un usuario existente como administrador de Django al habilitar el administrador por primera vez?
- 24. Dividir por primera cuerda encontró en Java
- 25. Preferencias compartidas solo guardadas la primera vez
- 26. Detectar usuario conectado en una computadora usando la aplicación web Java
- 27. clientaccesspolicy.xml no solicitará la primera vez en algunos navegadores
- 28. error al ejecutar cpan la primera vez
- 29. Detectar usuario conectado en una computadora usando Java
- 30. ¿Cuándo aparece por primera vez una capa adornada de WPF?
Esto parece realmente limpio, ¿pero quizás un poco peligroso? las preferencias del sistema/usuario pueden ser fácilmente borradas por otra aplicación o manualmente por el usuario, ¿verdad? (tal vez eso es muy poco común ...?) –
Como con cualquier otra solución, las preferencias pueden ser cambiadas por el usuario/aplicación que tiene permisos para hacerlo. Si tiene que evitar conflictos entre las preferencias de diferentes aplicaciones, considere usar [systemNodeForPackage (Class)] (http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html#systemNodeForPackage % 28java.lang.Class% 29) o [userNodeForPackage (Class)] (http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html#userNodeForPackage%28java.lang .Class% 29) métodos. – szhem
[Aquí] (http://mindprod.com/jgloss/preferences.html#LOCATION) también se proporciona información sobre dónde se almacenan las preferencias en diferentes sistemas. Y [aquí] (http://java.sun.com/developer/technicalArticles/releases/preferences/) es un artículo técnico bastante viejo pero útil sobre 'Preferences'. – szhem