Generar el installer de una aplicación Java para Windows

El objetivo de un installer es dejar al usuario que con un doble click sobre el ejecutable y una sencilla navegación sea capaz de dejar la configuración de la aplicación y todo lo que necesita listo para poder comenzar a trabajar con ella.

Para ello, vamos a utilizar las siguientes herramientas de uso libre:

– FatJar: Es un plugin que se puede añadir a eClipse para exportar la aplicación JAVA en un archivo .jar.

– JSmooth: Es una aplicación que con una sencilla configuración nos permitirá convertir nuestra aplicación JAVA en un ejecutable «.exe.»

– NSIS: Herramienta que nos permite generar el installer para Windows por medio de un script.

Para aquellos que hayan desarrollado la aplicación en un entorno que les permita obtener un ejecutable para Windows, «.exe», tan sólo deberán generar el installer.

FatJar

Windows no reconoce un archivo “.jar” como ejecutable, o no lo hace por lo menos cuando se
generan accesos directos al escritorio, menús, extensiones… ya que el “.jar” en sí, es un
ejecutable.

Por lo tanto, cuando preparamos una instalación para Windows debemos generar un ejecutable “.exe”. El problema es que debe ser un tanto complicado generar un “.exe” a partir de un “.jar”.
Y es ahí donde entra el plug-in “FatJar”. Lo que hace este plug-in es dar la opción de exportar como Fat-Jar en vez de en “.jar” La extensión del archivo es la misma, pero le cuesta bastante más exportar el ejecutable y Windows lo reconoce como tal.

Para descargar el plug-in accedéis, pinchar aquí.

El plug-in va a la carpeta plug-ins de eclipse y lo único que queda por hacer es exportar como fatJar en vez de exportar a secas.

Convertir «.jar» en «.exe»

Aunque Windows no tenga problemas en identificar que lo que hay tras el “.jar” es un
ejecutable, la extensión sigue siendo un problema. Por eso, utilizaremos la aplicación JSmooth, que es de libre uso, para transformar el archivo “.jar” en “.exe”.

Nota: Si no me equivoco, lo que hace el archivo “.exe” es algo así como un puente para que se ejecute el “.jar” a través del “.exe”. Por lo tanto, no es que un archivo “.jar” normal no se pueda convertir en “.exe”, sino que no funcionará cuando Windows utilice el puente.

Descargar JSmooth

JSmooth tiene varios atributos configurables y en su página se puede encontrar un manual.

Preparar el installer con NSIS

Hasta ahora hemos generado un ejecutable “.exe” que hace lo mismo que el archivo “.jar” que nos daba eClipse. Ahora, vamos a generar el instalador que generará los directorios, accesos directos, extensiones… que serán compatibles con el archivo “.exe” y no con el “.jar”.
Para ello, nos debemos descargar en primer lugar NSIS, que es una aplicación de libre uso.
Una vez instalado NSIS, tan sólo debemos escribir los scripts necesarios en un .txt y cambiarlela extensión a “.nsi”.

Debido a que jugar con el registro de Windows puede ser ¡MUY PELIGROSO!, en el peor de los casos nos veremos obligados a tener que formatear el ordenador, recomendamos que
llegados a este punto, se genere una copia de seguridad del sistema.

De todas formas, utilizando FileAssociation.nsh nos será sencillo acceder al sistema llamando a una función desde el script.

; Los comentarios se realizan con punto y coma por delante.
RequestExecutionLevel admin

; Paginas (o pantallas) que se mostrara en la instalación, interfaz del instalador
Page components
Page directory
Page instfiles

UninstPage uninstConfirm
UninstPage instfiles

; A continuacion las secciones que se va a instalar
; Las secciones nos dan la oportunidad de decidir qué componentes queremos instalar
; dejándole al usuario realizar la instalación de manera personalizada
; Además, si lleva requiered, como el caso inmediato, significa que esa sección se instala ;si seguro.
Section «XXXXXX (required)»
; Esto es para seleccionar por defecto (check)

SectionIn RO

; Establecer directorio de instalacion
SetOutPath $INSTDIR

; !!! Archivos que vamos a instalar !!!(Cambialos por los que quieras)
; Recordar que además del “.exe” que reconocerá Windows, también habrá añadir el ;“.jar”  ligado al «.exe» y generado con el plugin FatJar.
File «XXXXX.exe»
File «XXXXX.jar»
File «logoXXXXX.ico»

; Escribir la ruta de instalación
WriteRegStr HKLM SOFTWAREXXXXX «Install_Dir» «$INSTDIR»

;Escribir en el registro del sistema
;Así es como se supone que se escribe sin librería, pero no me funcionó
;WriteRegStr HKCR «.xxx» «» «xxxfile»
;WriteRegStr HKCR «xxxfile» «» «$XXXXX Config File»
;WriteRegStr HKCR «xxxfileDefaultIcon» «» «$INSTDIRlogoXXXXX.ico»
;WriteRegStr HKCR «xxxfileshell» «» «Abrir»
;WriteRegStr HKCR «xxxfileshellAbrircommand» «» ‘»$INSTDIR$XXXXX.jar» «%1″‘

; Función de FileAssociation que hace lo mismo del código en azul
; Este sí que funciona, aunque parece que algún tipo de problema con el
; registro de Windows hace que una vez asignado un icono a una extensión la historia ;falla un poco más, aunque la verdad es que no he insistido mucho más.
${registerExtension} «$INSTDIR\XXXXX.exe» «.xxx» «XXX_File»

; Escribir las entradas para desinstalación en windows
WriteRegStr
HKLM
«Software\Microsoft\Windows\CurrentVersion\Uninstall\XXXXX»
«DisplayName» «NSIS Example»
WriteRegStr
HKLM
«Software\Microsoft\Windows\CurrentVersion\Uninstall\XXXXX»
«UninstallString» ‘»$INSTDIR\uninstall.exe»‘
WriteRegDWORD
HKLM
«Software\Microsoft\Windows\CurrentVersion\Uninstall\XXXXX»
«NoModify» 1
WriteRegDWORD
HKLM
«Software\Microsoft\Windows\CurrentVersion\Uninstall\XXXXX»
«NoRepair» 1
WriteUninstaller «uninstall.exe»
;Necesita seccion de desintalacion

; Iniciar el programa junto con windows (Opcional)
;WriteRegStr
HKCU
«Software\Microsoft\Windows\CurrentVersion\Run»
«C:\XXXXX\XXXXX.jar»

Call RefreshShellIcons
SectionEnd

«xxxxx»

; end the section

; Sección opcional
; Crear iconos en el menu inicio
Section «Start Menu Shortcuts»

CreateDirectory «$SMPROGRAMS\XXXXX»
CreateShortCut
«$SMPROGRAMS\XXXXX\XXXXX.lnk»
«$INSTDIR\XXXXX.exe»
«$INSTDIR\XXXXX.exe» 0
CreateShortCut «$SMPROGRAMS\XXXXX\Uninstall.lnk» «$INSTDIR\uninstall.exe» «» «$

INSTDIR\uninstall.exe» 0
CreateShortCut «$DESKTOP\XXXXX.lnk» «$INSTDIR\XXXXX.exe» «» «$INSTDIR\XXXXX.exe»
1

SectionEnd

; Desinstalador
Section «Uninstall»

; Eliminar entradas en el registro
DeleteRegKey HKLM «Software\Microsoft\Windows\CurrentVersion\Uninstall\XXXXX»
DeleteRegKey HKLM SOFTWAREXXXXX
DeleteRegValue HKCU «Software\Microsoft\Windows\CurrentVersion\Run» «xxxxx»        ; Esto lo usáis sólo si no estáis utilizando FileAssociation
;DeleteRegKey HKCR «.xxx»
; DeleteRegKey HKCR «xxxfile»
; DeleteRegKey HKCR «xxxfile»

${unregisterExtension} «.xxx» «XXX_File»

; Eliminar archivos y el desinstalador
Delete «$INSTDIRunisnstall.exe»
Delete «$INSTDIRlogoXXXXX.ico»
Delete «$INSTDIRXXXXX.exe»
Delete «$INSTDIRXXXXX.jar»

; Eliminar shortcuts, si hay alguno
;Delete «$SMPROGRAMS\XXXXX\*.*»
Delete «$DESKTOP\XXXXX.lnk»
Delete «$SMPROGRAMS\XXXXX\XXXXX.lnk»
Delete «$SMPROGRAMS\XXXXX\uninstall.lnk»

; Eliminar directorios usados
RMDir /r «$SMPROGRAMS\XXXXX»
RMDir /r «$INSTDIR»

SectionEnd

Espero que os sirva igual que me ha servido a mi.

SI OS GUSTA VER SERIES, PELICULAS… EN VUESTRO ORDENADOR, DEBERIAIS PROBAR ESTA APLICACION:

https://aitorsouto.wordpress.com/2012/06/03/download-your-tv/

Esta entrada fue publicada en Desarrollo Informatico, Español y etiquetada . Guarda el enlace permanente.

Deja un comentario