Crear un instalador para programas Java - Andrés Guachún
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
Ejecutable en Java
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.
Crea tu instalador para Java
Para crear un instalador es necesario tener instalado NSIS y entender un poco como funciona este, primero debes saber que funciona como un script con extensión .nsi, este es el archivo más importante para la creación de un instalador, ya que daremos la información de donde se va ha instalar, si posee el desinstalador, además de colocar los accesos directos al programa.
1. Instalación de NSIS, esta instalación no voy a llegar a detalles ya que solo es doble clic y seguir las ventanas que vayan saliendo.
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
; que el usuario seleccione, luego crea un desintalador además de crear en el menú de inicio
; 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"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "UninstallString" '"$INSTDIR\uninstall.exe"'
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
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge"
DeleteRegKey HKLM SOFTWARE\Merge
; 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:
Page Nombre de la Página.
En el ejemplo se declaran 3 paginas las cuales la primera es para recoger los componentes, la segunda colocar en los directorios y por ultimo instalarlos en su localización de instalación.
Page components
Page directory
Page instfiles
UninstPage
El uninstpage tienen la misma percepción de las páginas con la variante que estas no serán utilizadas para la instalación sino para lo contrario que es la desinstalación, ejemplo:
UninstPage uninstConfirm
UninstPage instfiles
Section "Merge (requerido)"
Esta línea sirve para decir que comienza la pagina de instalación, la cual la primera va ha ser la pagina de componentes según nuestro ejemplo. En esto podemos cambiar el nombre el cual es “Merge (requerido)” por el que deseemos, esto es importante ya que aparecerá en la primera parte del proceso de instalación del programa.
SectionIn RO
Aquí indicamos la existencia de una pagina nueva que es interna, esta es la que le sigue de las que declaramos en este caso va ha ser la pagina de directorios.
SetOutPath $INSTDIR
En este paso especificamos el directorio receptor de los archivos. Pero este dato es una constante del NSI, poniendo $INSTDIR decimos que colocara en el directorio que seleccionamos al momento de instalar.
File
Aquí especificamos cada archivo que va ha tener el instalador en este caso por lo menos para java es de colocarle cada archivo .class, también podríamos hacer un solo archivo jar, y añadir solo este, pero como necesitamos por lo menos en este ejemplo VentanaPrincipal.exe, ya que este ejecuta el programa.
File "ClaseVector.class"
File "Listas.class"
File "numero.class"
File "Tranformaciones.class"
File "VentanaPrincipal.class"
File "VentanaPrincipal.exe"
Instalación en el registro
El registro es una parte muy importante al momento de realizar una instalación ya que dirá en que parte se instala, y donde va ha encontrarse su desinstalador, para el caso de desinstalar por medio del programa de Windows. A continuación se muestra cada una de estas líneas.
WriteRegStr HKLM SOFTWARE\Merge "Install_Dir" "$INSTDIR"
Línea que indica al registro donde va ha ser instalado.
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "DisplayName" "Merge"
En esta línea se muestra el nombre que va ha mostrarse al momento de llamar al desinstalador de Windows, en nuestro caso va ha ser Merge, al momento de realizar sus instaladores coloquen el nombre de su programa donde se encuentra Merge.
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "UninstallString" '"$INSTDIR\uninstall.exe"'
Aquí indicamos en donde se localizara el desinstalador si este existe esto lo hacemos colocando “$INSTDIR\uninstall.exe”
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "NoModify" 1
WriteRegDWORD HKLM
Esta opción es para indicar que nuestro programa no puede ser modificado.
"Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge" "NoRepair" 1
WriteUninstaller "uninstall.exe"
Esta es la ultima línea que se refiere al registro por lo menos a lo que se refiere a la instalación, y significa que el programa no puede ser reparado, sino solo reinstalado encima.
SectionEnd
Aquí indicamos que se termino la sección “Merge (Requerido)”.
Section "Start Menu Shortcuts"
Aquí indicamos que comenzamos otra sección la cual es para crear los accesos en la barra de menú de inicio.
CreateDirectory "$SMPROGRAMS\Merge"
Crea el directorio para los accesos directos.
CreateShortCut "$SMPROGRAMS\Merge\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
Crea el acceso directo para el desinstalador
CreateShortCut "$SMPROGRAMS\Merge\Merge (MakeNSISW).lnk" "$INSTDIR\VentanaPrincipal.exe" "" "$INSTDIR\VentanaPrincipal.exe" 0
Crea el acceso directo del Programa.
SectionEnd
Indicamos la terminación de la sección de accesos directos.
Section "Uninstall"
Comienzo de la sección de desinstalación.
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Merge"
Primero eliminamos en el registro el desinstalador.
DeleteRegKey HKLM SOFTWARE\Merge
Después indicamos que deseamos eliminar del registro la entrada de la localización del programa.
Delete
Ahora vamos a eliminar cada archivo que se instalo o que teníamos en el instalador como se puede ver a continuación vamos eliminando cada clase y archivo que lo instalamos, además el desinstalador, para esto colocamos el comando delete $INSTDIR\”nombre del archivo”.
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
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.
Prueba del 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
Reader Comments (13)
Felicitaciones la paina es muy buena y ademas es un tema que estaba buscando desde hace rato. Puedes volver a subir las imagenes que estan en el documento ya que no las puedo visualizar, solo aparecen unos cuadrados pequeños en su lugar. Gracias
Gran Aporte
Una mega pregunta...si estoy ocupando otras APIs no incluidas en el JRE por default, como para hacer conexiones con mysql o SQL o una para Enviar Mail, etc... El ejecutable tendra toda la funcionalidad? me refiero a si se conectara a la BD y eso..
Saludos
no eso ni imágenes carga que malo ... recomendación hacer un vídeo tutorial seria mejor
Uff, que buen trabajo!
Felicidades y gracias por tus explicaciones y ayuda
Ha! cuanto molesta llegar a información tan valiosa y que las imágenes no se puedan ver!
Tengo Una Pregunta Al Compilar El Archivo .nsi ; Con El Programa NSIS, Me Sale Un Error Por Que No Reconoce VentanaPrincipal.exe Que En MiCasoEs Elecio.exe Y Aborta El Proceso.......Les Agradeceria Si Me Ayudaran A Solucionar Este Problema............Gracias !!!
Te agadecería (y creo que muchos estan de acuerdo) que agregaras nuevamente las imágenes ;)
Las imágenes no se encuentran serian de gran ayuda
Hay les dejo dos videos ojala les ayude al momento de subirlos se distorcionaron un poco pero ojala les ayude este crea el instalador copia dentro de la carpeta del instalador otras carpetas y crea una base de datos al momento de instalar
http://www.youtube.com/watch?v=E0fyWU1F7as&feature=channel&list=UL
http://www.youtube.com/watch?v=snVhiEzcsbI&feature=channel&list=UL
arregla las imagenes man
Disculpa, no se muestran las imágenes. Necesito hacer un instalador y adjuntarle una base de datos Oracle, tendrás información al respecto.
No se ven las imágenes, ¿y también funciona en Mac?
Muy bueno! gracias...