Skip to content

Instantly share code, notes, and snippets.

@jesusbmx
Last active January 15, 2022 16:12
Show Gist options
  • Save jesusbmx/bf92ef6390e41cb33c7b01ef0cbe9725 to your computer and use it in GitHub Desktop.
Save jesusbmx/bf92ef6390e41cb33c7b01ef0cbe9725 to your computer and use it in GitHub Desktop.
Crear exe de java

Crear un instalador de java

Estructura de archivos:

  1. Carpeta [NombreApp] carpeta raíz.
    • Carpeta app contiene todos los archivos de la aplicación.
      • Carpeta bin/jre1.8.0_161 contiene el JDK de Java
    • Carpeta res contiene todos los recursos.
      • Carpeta Output contiene el futuro instalador.
      • Archivo launch4j.manifest archivo manifiesto de launch4j.
      • Archivo Setup.iss Configuración del programa Inno setup.

CONVERTIR JAR A EJECUTABLE EXE CON LAUNCH4J

De archivo JAR a ejecutable EXE

Una aplicación terminada en Java son los archivo .jar que son los que contienen todo el proyecto de tu aplicación Java, así como el código, las imágenes, configuraciones, que se comprimen en el archivo .jar a excepción de las librerías que se guardan en una carpeta aparte.

El archivo .jar se puede ejecutar en Windows, Linux y Mac siempre que Java este instalado en el equipo, a excepción de los archivos .exe que solo funcionan en Windows.

Este procedimiento solo es para los que quieren que su aplicación .jar cuando se convierta a la extensión .exe se ejecute solo en Windows, incluso veremos la forma de incorporar Java dentro de la aplicación para que funcione en cualquier equipo con Windows incluso sino tiene instalado Java.

  1. Lo primero que debes hacer es convertir tu proyecto Java a ejecutable JAR, en los IDE como Netbeans se hace con un clic.
    • Haz clic derecho en el nombre del proyecto del cual quieras generar un archivo JAR.
    • Selecciona la opcion Clean and Build. Esto generara los archivos .jar en la carpeta dist de tu proyecto
  2. Lo segundo es descargar Launch4j. Este programa es el que transformara el .jar a .exe.
  3. Creamos la siguiente Estructura de archivos:
<NombreApp>
| 
├───app (contiene todos los archivos de la aplicación.)
|   ├───bin/jre1.8.0_161 (contiene el JDK de Java)
|   └───lib (Librearías externas que usamos en nuestro proyecto.)
|
└───res (contiene todos los recursos.)
    └───Output (contiene el futuro instalador.)
  1. En la carpeta app copia ahí tu archivo .JAR que se generaro en la carpeta dist y todo los archivos que necesita tu aplicación como la carpeta lib y el icono de tu aplicación.
  2. Ejecuta el programa Launch4j y aplica las siguientes configuraciones:
    • En la pestaña basic primero elegir la ruta donde se guardara el archivo exe. En este caso sera la carpeta app.
    • Abajo elegir el archivo jar a convertir.
    • Y el icono es opcional, lo recomendable es de tamaño 35 * 35 px.
    • En la pestaña JRE, ingresar la versión mínima del JDK de Java que utilizaste en la creación de tu programa JAR, para ver la versión ir a: C:\Program Files\Java. En este caso sera la carpeta bin\jre1.8.0_161.
    • Finalmente haga clic en el icono del engranaje y te pedira un nombre, es para guardar la información no es necesario para el programa, pero igual se debe poner. En este caso lo guardaremos en la carpeta res.
  3. Finalmente junta el archivo .exe generado con los demás archivos que necesita para funcionar

Crear un instalador en Windows de una aplicación en Java

Crear instalador para Windows de nuestra aplicación hecha en Java.

  1. Lo primero que vamos a necesitar descargar Inno setup. Este programa es el que nos crea el instalador, a través de un asistente.
  2. Creamos un nuevo script, con File -> New:
    • Lo primero es dar información sobre la aplicación: nombre, version, etc.
    • Después, indicaremos la carpeta donde se guardará el programa, podemos customizarlo o poner Program Files.
    • A continuación, indicaremos el fichero que se ejecutará, en nuestro caso ponemos nuestro fichero EXE que generamos previamente con launch4j. Tambíen los fichero externos a la aplicación.
    • Ahora, indicamos el nombre de la carpeta del menú inicio, también si incluirá desinstalador, etc.
    • En la siguiente pantalla, podemos elegir los ficheros de licencia y el típico readme, antes o después de la instalación.
    • Por último, donde se almacerá el fichero del instalador, el icono y el password si queremos ponerle.
    • Pinchamos en siguiente para terminar.
  3. Lo primero es que si habéis puesto carpetas en vuestro proyecto, debemos modificar un poco el script, para que no nos dé ningún problema.

Setup.iss Ejemplo del script de configuración del programa Inno setup.

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "MyAppName"
#define MyAppVersion "0.005"
#define MyAppPublisher "MyAppName S.A. de C.V."
#define MyAppURL "http://MyAppName.com.mx/"
#define MyAppExeName "MyAppName.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{FC58AAE6-943F-4A72-94BB-30CF1484BFA7} 
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName="{pf}\{#MyAppName}"
DisableProgramGroupPage=yes
OutputBaseFilename="{#MyAppName}_setup"
SetupIconFile=C:\Users\Jesus\Documents\NetBeansProjects\Setups\MyAppName\app\MyAppName.ico
Compression=lzma
SolidCompression=yes

[Languages]
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "C:\Users\Jesus\Documents\NetBeansProjects\Setups\MyAppName\app\MyAppName.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Jesus\Documents\NetBeansProjects\Setups\MyAppName\app\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

[Dirs]
;Creamos los directorios y le damos permisos a todos los usuarios.
Name: "{app}\Reportes"; Permissions: users-modify
Name: "{commonappdata}\MyAppName"; Permissions: users-modify
Name: "{app}"; Permissions: users-modify
@jesusbmx
Copy link
Author

jesusbmx commented Jul 16, 2018

java -jar App.jar : ejecuta una aplicación java
java -cp App.jar com.jx.form.Dialog : para ejecutar una clase principal diferente a la especificada en el manifiesto

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment