2011-05-27 30 views
6

He terminado de escribir una aplicación Java Desktop con una base de datos mySQL. Quiero que la aplicación se ejecute fuera de netbeans y que se instale en otras computadoras. Sé sobre la construcción del proyecto y la creación del archivo jar ejecutable, sin embargo, esto requiere que exporte la base de datos a la otra computadora en la que quiero que se ejecute la aplicación. Mi pregunta es en dos partes:¿Cómo crear el instalador una vez finalizado con Java Desktop Application con MySQL DB?

1) ¿Hay alguna manera de que pueda crear un archivo de instalación que también instale la base de datos y la aplicación juntas?

2) También la ruta de mi base de datos está codificada, ¿eso significa que tengo que cambiar el código cada vez que instale mi aplicación para alguien, cuál es la mejor manera de hacerlo?

Gracias

Respuesta

7
  1. Sí. Puede usar algún constructor de configuración, como InnoSetup, por ejemplo. Personalmente, sin embargo, me gusta darles a mis clientes un archivo zip, que extraen donde quieran. El archivo ejecutable debería ser capaz de manejar todo por sí mismo (me gusta donde no hay necesidad de instalar el software, solo desempaquetar y ejecutar).
  2. Si está codificado, entonces sí (pero, ¿qué quiere decir con codificado? Ruta al archivo? Dirección IP?). Debe usar propiedades o archivos de configuración para rutas y otras cosas externas de las que depende su software. El software debe leer de esos archivos. Al momento de la puesta en marcha, compruebe la presencia de dichos archivos: si falta, se debe mostrar al usuario una ventana en la que se puede ingresar la configuración.

En cuanto a la implementación de MySQL con su código, considere utilizar un servidor para que sus usuarios no se vean obligados a instalar MySQL, sino que se conectan a través de la red. Si necesita la base de datos solo para almacenar datos localmente, ¿por qué no usar SQLite o un motor de base de datos basado en archivos similar?

Las respuestas anteriores son sólo sugerencias y más, menos reflejan la forma en que estoy pensando. Estaría feliz de escuchar a alguien con más experiencia. No obstante, espero que las respuestas ayuden un poco :)

+0

lo que quiero decir con hardcoded es la cadena de conexión en realidad. –

+0

es la url, está en localhost 3306 ¿debería mantenerlo así e instalar mySQL para mi cliente para una instalación rápida? –

+2

Esto se debe a * almacenar los datos localmente *, es posible que desee considerar [SQLite] (http://www.sqlite.org) que, para mí, es una mejor idea. Sin embargo, si realmente desea seguir con MySQL, entonces la url, el puerto, el nombre de usuario y la contraseña deben mantenerse en algún archivo de configuración (contraseña, obviamente codificada de alguna manera, por lo que no se almacena en forma simple). Eso, por supuesto, significa que cada uno de sus clientes debe tener instalado MySQL. Eventualmente, si está en una red local, configure el servidor MySQL en una máquina y permita que otros se conecten a ella. De esta forma, no tendrá que instalar clientes para todos sus usuarios, sino solo uno. – Sorrow

3

Estoy de acuerdo con Sorrow.

Si tengo que usar MySQL, normalmente está en la red ya que no quiero permitir que mis clientes pasen por la instalación de MySQL. Sin embargo, si está atascado con el uso de MySQL localmente, investigue las instalaciones desatendidas de MySQL + Instalador NSIS.

Si puede usar cualquier db que desee, solo uso javadb/derby. Viene incluido con la mayoría de las instalaciones de Java estos días y si no todo lo que necesita es agregar un archivo jar a su aplicación.

Según las rutas de 'hardcoding', realmente no entiendo lo que quiere decir. Realmente no tienes "caminos" como estaban, supongo que lo que quieres decir es cadena de conexión. No tiene que codificar su cadena de conexión, simplemente ponga algunos parámetros en un archivo de propiedades y construya su cadena de conexión a partir de ellos.

1

1) ¿Hay alguna manera de que pueda crear un archivo de instalación que también instale la base de datos y la aplicación juntas?

Ver mi respuesta a Java based Standalone application.

2) También mi ruta de la base de datos está codificada, ¿eso significa que tengo que cambiar el código cada vez que instale mi aplicación para alguien, ¿cuál es la mejor manera de hacerlo?

Haga que el instalador de base de datos muestre un JFileChooser para preguntar al usuario dónde quiere instalar la base de datos. Almacene esa ruta usando la API JNLP PersistenceService. Aquí está mi demo. of the PersistenceService.

Cuestiones relacionadas