Crear un .EXE personalizable que ejecuta un .JAR en Windows verificando si Java está instalado [x32 y x64]

java-6 Voy a teorizar un poco ya que me veo en la necesidad de explicar un poco esto, he visto varios post diciendo campantemente “Convierte un JAR a EXE”, y vaya si no es una tremenda falta de conocimiento el decir semejante barbaridad. No te dejes engañar, como bien sabes, los archivos .JAR son un compilado de archivos .Class que son los Bytecode que utiliza Java para interactuar con su máquina virtual, en realidad esto es un código de Preensamblado. Si bien es cierto bajo el sistema operativo Windows estamos acostumbrados a utilizar .EXE como archivos finales de un programa, y dar doble click en él para iniciar el programa debido. Tambien está el problema de que muchas veces un .jar puede perder la asociación de archivos en el sistema, u otras veces necesitamos corroborar que todo ande bien en el sistema y que java se encuentre correctamente instalado, para ello dejo un código de la herramienta NSIS, este script, crea un ejecutable, que corrobora si java esta correctamente instalado en Windows.

!include "FileFunc.nsh"
!include "MUI.nsh"
!include "WinMessages.nsh"

!define COMPANY_NAME "bit502"
!define ANHO "2014"
!define MUI_ICON "ico.ico"
!define JAR "bit502.jar"
!define ID "11C7BF"

!insertmacro MUI_LANGUAGE "Spanish"

OutFile "bit502.exe"

Name "bit502"

SilentInstall Silent

  VIProductVersion "1.0.0.0"
  VIAddVersionKey /LANG=${LANG_SPANISH} "FileDescription" "bit502 Tool"
  VIAddVersionKey /LANG=${LANG_SPANISH} "LegalCopyright" "©${COMPANY_NAME} ${ANHO}"
  VIAddVersionKey /LANG=${LANG_SPANISH} "LegalTrademarks" "${COMPANY_NAME}"
  VIAddVersionKey /LANG=${LANG_SPANISH} "ProductName" "bit502 Tool"
  VIAddVersionKey /LANG=${LANG_SPANISH} "InternalName" "${COMPANY_NAME}"
  VIAddVersionKey /LANG=${LANG_SPANISH} "OriginalFilename" "${COMPANY_NAME}"
  VIAddVersionKey /LANG=${LANG_SPANISH} "CompanyName" "${COMPANY_NAME}"
  VIAddVersionKey /LANG=${LANG_SPANISH} "FileVersion" "1.0"
  VIAddVersionKey /LANG=${LANG_SPANISH} "ProductVersion" 1.0"

RequestExecutionLevel user

Function .onInit
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${ID}") i .r1 ?e'
 Pop $R0
 StrCmp $R0 0 +3
   MessageBox MB_OK|MB_USERICON "El programa ya esta en ejecución"
   Abort
FunctionEnd

Caption "bit502 Guatemala"

Section
        SetRegView 64
        Goto Lee
        Lee32:
                SetRegView 32
        Lee:
                ReadRegStr $1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"
                ReadRegStr $0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$1" "JavaHome"
                StrCmp $0 "" Lee32 0
        IfFileExists $0\bin\javaw.exe 0 NoJava
        IfFileExists ${JAR} 0 NoJAR
        ExecWait '$0\bin\javaw.exe -jar ${JAR}'
        Goto Fin
        NoJava:
                MessageBox MB_OK|MB_USERICON "No se encontró Java en este equipo"
       NoJAR:
                MessageBox MB_OK|MB_USERICON "No fue posible la ejecución de ${JAR}"
        Fin:
SectionEnd
Anuncios

2 comentarios sobre “Crear un .EXE personalizable que ejecuta un .JAR en Windows verificando si Java está instalado [x32 y x64]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.