Crear un instalador para programas Java - AndrĂ©s GuachĂșn
martes, julio 5, 2011 at 6:12PM
Abraham

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

javaexe

2.     Ingresa a la carpeta., esta carpeta tiene varios archivos  pero los más importantes son JavaExe.exe y MergeIco.ico
  javaexefiles

 3.    Ahora copia el icono que desees  colocarle a tu programa  y cámbiale el nombre  al de JavaExe

Cambiaricono

4.    Ahora ejecutas el MergeIco este automáticamente te cambiará el icono.

iconocambiado


5.    Ahora copiamos nuestro programa dentro de la carpeta de nuestro programa.

javaexecopy

6.    Ahora le cambiamos el nombre por la clase que tiene nuestra clase main.

javaexename

 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.

 

 

nsis

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.

MergeArchivo

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.

ArchivoInstalador

 

4.     Después de crear el archivo Merge.nsi, este debe ser compilado para lo cual abrimos el NSIS

nsismenu

5.    Ahora damos en compile NSI scripts
  comenzar

 6.    Luego de esto se abre la siguiente ventana, esta es el compilador el cual solo le debemos dar nuestro instalador.

compilador

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.

abrir

8.    Luego de seleccionar el archivo este será compilado automáticamente.

compilado

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.

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:

instalacion1

 

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.

instalacion2

instalacion3

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.


instalado 

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.

desinstalar

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

 

Article originally appeared on javaHispano (http://www.javahispano.org/).
See website for complete article licensing information.