Bueno amigos, Soy Andrés Guachún, y soy de Ecuador. Voy a tratar de explicarles como hacer un instalador en Java en 5 minutos. Al finalizar van ha ver que es tan fácil pero les va ha servir un 100%. Me puse hacer este tutorial porque no existe este tema en ninguna parte y es realmente necesario hacerlo para poder competir con otros lenguajes como los de Microsoft.
Bueno, primero les voy a decir que necesitamos, para que no haiga ninguna complicación en encontrarlos voy a ponerlos en el mismo tutorial los enlaces ademas de que todos estos son free o de libre distribucion, ademas los programas son pequeños algunos de estos no poseen ni 1 MB, los programas necesarios son:
· JavaExe creado por DevWizard
· NSIS scriptable install system 2.36.
· Y un programa en java con su clase principal.
Ahora necesitamos hacer al programa ejecutable, pero existen varias maneras pero la más fácil la voy hacer aquí. Es por eso que utilizamos JavaExe este es un pequeño programa pero funciona perfectamente. Aquí les voy a indicar como poner el icono que deseemos para la aplicación, primero copiamos cualquier icono con extensión .ico a la carpeta de JavaExe, en este cambiamos el nombre del icono como JavaExe.ico antes de esto debes tener en cuenta que debe por lo menos tener 3 archivos esta carpeta el JavaExe.exe, MergeIco.exe y el icono con el nombre JavaExe.ico, ya que tengamos estos tres icono solo ejecutamos MergeIco.exe este si el formato del icono es correcto este se pone en el Javaexe.exe, sino posee un icono con formato correcto lo único que nos mostrara un mensaje indicando que el icono no puede ser reemplazado, a continuación las Imágenes
1. Primero descomprime el archivo JavaExe.zip
2. Ingresa a la carpeta., esta carpeta tiene varios archivos pero los más importantes son JavaExe.exe y MergeIco.ico
3. Ahora copia el icono que desees colocarle a tu programa y cámbiale el nombre al de JavaExe
4. Ahora ejecutas el MergeIco este automáticamente te cambiará el icono.
5. Ahora copiamos nuestro programa dentro de la carpeta de nuestro programa.
6. Ahora le cambiamos el nombre por la clase que tiene nuestra clase main.
7. Eso es todo ahora puedes aprovechar el programa ejecutable.
2. Ahora creamos un archivo .nsi, este lo pueden llamar Merge.nsi, en verdad el nombre no importa pero debe tener la extensión nsi, este archivo puede ser creado en cualquier editor en mi caso lo voy a hacer con el block de notas, ya que es el mas básico y se encuentra en cualquier maquina que tenga instalado Windows.
3.- El archivo Merge.nsi debe tener el siguiente código, este código puede ser modificado para que cada persona ponga los datos que deseen sin tener que crear un archivo nuevo cada ver que deseen crear un instalador:
; Merge.nsi ; ; Este instalador toma todos los archivos los instala en archivos de programas o en un directorio
<span> ; que el usuario seleccione, luego crea un desintalador además de crear en el menú de inicio</span> ; crea accesos directos uno para el programa y otro para el desinstalado. ; ;-------------------------------- ; Nombre del instalador Name "Merge" ; El Archivo de Salida OutFile "MergeInstall.exe" ; El directorio default para la instalación InstallDir $PROGRAMFILES\Merge ; Clave en el registro de Windows chequeado para el directorio (Si existe, Este ; se sobre escribirá en el viejo) InstallDirRegKey HKLM "Software\Merge" "Install_Dir" ; Requerir permisos para Windows Vista RequestExecutionLevel admin ;-------------------------------- ; Paginas Page components Page directory Page instfiles UninstPage uninstConfirm UninstPage instfiles ;-------------------------------- ; El material para la instalación Section "Merge (requerido)" SectionIn RO ; Toma el directorio de que se selecciono para la instalación. SetOutPath $INSTDIR ; Pone los Archivos a instalar File "ClaseVector.class" File "Listas.class" File "numero.class" File "Tranformaciones.class" File "VentanaPrincipal.class" File "VentanaPrincipal.exe" ; Escribimos los registros de instalación dentro del directorio del registro WriteRegStr HKLM SOFTWARE\Merge "Install_Dir" "$INSTDIR" ; Escribimos las claves de desinstalación de Windows WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "DisplayName" "Merge"
<span> WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "UninstallString" '"$INSTDIR\uninstall.exe"'</span> WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "NoModify" 1 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "NoRepair" 1 WriteUninstaller "uninstall.exe" SectionEnd ; Sección opcional (Pudiera ser deshabilitada pero en este caso necesitamos crear todo.) Section "Start Menu Shortcuts" CreateDirectory "$SMPROGRAMS\Merge" CreateShortCut "$SMPROGRAMS\Merge\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 CreateShortCut "$SMPROGRAMS\Merge\Merge (MakeNSISW).lnk" "$INSTDIR\VentanaPrincipal.exe" "" "$INSTDIR\VentanaPrincipal.exe" 0 SectionEnd ;-------------------------------- ; Desinstalador Section "Uninstall" ; Remover las claves del Registro ; Eliminados los archivos y los desinstalamos Delete $INSTDIR\ClaseVector.class Delete $INSTDIR\Listas.class Delete $INSTDIR\numero.class Delete $INSTDIR\Tranformaciones.class Delete $INSTDIR\VentanaPrincipal.class Delete $INSTDIR\VentanaPrincipal.exe Delete $INSTDIR\uninstall.exe ; Eliminamos todos los accesos directos del menú de inicio Delete "$SMPROGRAMS\Merge\*.*" ; Eliminamos las carpetas creadas RMDir "$SMPROGRAMS\Merge" RMDir "$INSTDIR" SectionEnd
En este código todo lo que esta con color rojo es lo mas importante, son las partes claves donde colocas los archivos del programa que necesitas para ejecutarlo. Ahora tambien puedes cambiar el nombre merge por lo del programa que este haciendo a continuacion voy a explicar cada linea es un poco tedioso y aburrido si lo desean pueden leerlo o pasen al punto Nº 4.
Para una mayor explicación en esta parte les voy a explicar un poco el código como ya se habrán dado cuenta todo lo que se encuentra al inicio con un punto y coma son comentarios.
Name "Merge"
Es el nombre interno del instalador este puede ser cualquier nombre que le desees dar.
OutFile "MergeInstall.exe"
Es el archivo que nos va ha devolver al finalizar la compilación, como yo deseo que el instalador se llama MergeInstall.exe.
InstallDir $PROGRAMFILES\Merge
Esta línea especificamos en donde se va ha instalar el programa como nosotros sabemos toda computadora puede cambiar la localización de archivos de programas, entonces en este caso NSI, posee varias variables que toma la localización automáticamente de cualquier computador, entre estas variables se encuentran: $PROGRAMFILES, $DESKTOP.
Como se puede apreciar en este caso en particular vamos a instalar donde es común en el archivo de programas, y para crear otra carpeta dentro de esta solo colocamos el nombre de la nueva carpeta en este caso Merge.
InstallDirRegKey HKLM "Software\Merge" "Install_Dir"
Esta línea sirve para colocar dentro del registro de Windows la localización de instalación de nuestro programa. Como podemos ver este se guarda en el registro en la carpeta Software/Merge, donde Merge es el nombre del programa y “Install Dir” va ha tomar automáticamente donde se instalo el programa.
RequestExecutionLevel admin
Este instalador sirve tanto en Windows XP como para el Vista, pero la condición es que el Windows Vista necesitas autorización para instalar por eso colocamos la línea de RequestExecuteLevel.
Page
Esto son las partes más importantes, ya que un instalador creado en NSI se divide por page o paginas cada página es una parte clave de la instalación, un instalador por lo menos debe poseer 1 página, para una página se realiza de la siguiente manera:
Delete "$SMPROGRAMS\Merge\*.*"
Ahora para no dejar basura que siempre se acostumbra al momento de desinstalar un programa se la delete “$SMPROGRAMS\Merge\*.*”, así eliminamos accesos directos del menú de inicio.
RMDir "$SMPROGRAMS\Merge"
Ahora eliminamos la carpeta de acceso directo del menú.
RMDir "$INSTDIR"
Eliminador la carpeta de instalación.
SectionEnd
Aquí indicamos la finalización de la sección de desinstalación y del programa.
Después debes guardar este archivo en la misma carpeta del programa esto se debe ya que los .class y el .exe, el que sirve para ejecutar el programa, se encuentran en esta.
4. Después de crear el archivo Merge.nsi, este debe ser compilado para lo cual abrimos el NSIS
5. Ahora damos en compile NSI scripts
6. Luego de esto se abre la siguiente ventana, esta es el compilador el cual solo le debemos dar nuestro instalador.
7. Para compilar solo damos en File > Open, y seleccionamos el archivo a compilar, como en este ejemplo creamos el Merge.nsi, es el que lo vamos a utilizar.
8. Luego de seleccionar el archivo este será compilado automáticamente.
9. Ahora abrimos la carpeta donde se encuentra nuestro programa y veremos que existe un nuevo archivo Mergeinstall.exe, el cual es el instalador ya creado, y listo eso es todo para crear el instalador.
Ahora si quieres ejecuta el archivo MergeInstall, o cópialo en el escritorio y ejecútalo ahí, de cualquier modo te presentara la siguiente ventana de instalación:
En este instalador puedes seleccionar los programas que deseas instalar a instalar, en este caso sabemos que el programa es necesario entonces el Merge no se puede quitar pero los accesos directos si por eso esta bloqueado la selección Merge.
También como todo instalador tenemos la opción de seleccionar la dirección de donde vamos a instalar.
Al finalizar la instalación vas a encontrar en la barra de inicio de Windows y lo puedes ejecutar, pero además te crea el desinstalador.
Si ejecutas el desinstalador te darás cuenta que es uno común como cualquier instalador, el cual eliminara todos los archivos que se creo en la instalación, además de borrar del registro algunas entradas que creamos.
Eso es todo amigos, este instalador es uno sencillo dentro del NSIS existen muchos mas instaladores mas profesionales, pero solo quería hacer algo sencillo que nos funcione a todos, igual hay como aplicarlo en nuestros instaladores solo copiando el archivo merge.nsi y modificarlo de acuerdo a sus necesidades.
Ahora el resultado final puedes descargarlo en el siguiente link:
MergeInstall.exe
Y todos los archivos para hacer este instalador dercardalo en el siguiente link:
Merge.zip
Si tienen alguna pregunta, comentario o sugerencia envíame un mensaje a acuario_1ro@hotmail.com.
Atte.
Andrés Guachún
Etiquetas: j2se, instalador, javaexe, nsis
También puede ser recomendable JSmooth, simple y fácil de utilizar:
http://jsmooth.sourceforge.net/
Seguro que en muchos casos será interesante e incluso necesario, pero yo veo un poco ilógico crear un instalador de un programa Java que funcione sólo en Windows. Hay instaladores que funcionan en cualquier plataforma. En concreto yo he usado 2 en el pasado:
Fantástico. Aunque "en 5 minutos" es muy optimista por tu parte.
¿Conoceis algún instalador que instale un tomcat + aplicación web?
En mi caso utilizamos IzPack, es muy sencillo de usar y se especifica un xml. Es posible integrarlo en ant.
El instalador generado es multiplataforma (.jar)
Luego para crear .exe del .jar ejecutable (la aplicación) y del instalador generado por IzPack utilizamos launch4j. Tambien integrable desde ant.
Para el último anónimo, con IzPack puedes especificar que se instale tomcat y la aplicación web sin problemas.
Saludos
hablando de IzPack, existe un plugin para netbeans bastante bueno y facil de utilizar, creo que esta en Beta o alfa, pero ya tiene las caracteristicas principales.
http://plugins.netbeans.org/PluginPortal/faces/PluginListPage.jsp?search=izpack
Yo utilizo como instalador Bitrock (http://www.bitrock.com) Me parece mucho mas facil y te permite crear instaladores para MacOs,Windows,Linux.... en rpm,deb (proximante). No obstante me alegro que existan mas alternativas.
Gracias por tu ayuda yo soy de mexico y me gsuto que gente comparta su conocimiento, un dia yo tambien lo hare, no mas que estoy en estos tiempo de aprendisaje, gracias
Gracias por el programa, no tenes idea del aprieto que me sacaste. Yo soy de guatemala e investigue como loco como hacer un jar y tu opcion fue la unica que me funciono y sin mencionar que fuen en MENOS de 5 minutos
Oe, chevre con los pasos, ahora mismo los voy a chekear, espero q' sea como dices; gracias x los programas, soy peruano y uno de los q' les gusta utilizar el Java y siempre tenia esa duda de como crear un instalador, Gracias
Quisiera saber como puedo correr un script dentro del instalador que me permita generar algunas tablas en Base de Datos, debo hacerlo con un batchero o como...alguien me podria explicar?
mi correo es paulo.criado@gmail.com
Gracias!!!
Me gustaria que me ayuden en esto!!!
Tengo que realizar un programa que me ayude a enviar datos(Socket) de windows a linux(el linux va a tener una base de datos mysql al cual enviare mis datos)
Necesito que me ayuden con las sentencias de conexion y todo lo referido
Soy de Ecuador
Escribe tu comentario