Skip to main content

Packaging

Création d'un .EXE ou .MSI pour windows.

Info pour Jpackage avec javaFX (https://github.com/dlemmermann/JPackageScriptFX)

Jpackage

Jpackage permet de créer un .exe ou un .msi pour windows.

https://github.com/akman/jpackage-maven-plugin

Info sur le plugin maven jpackage

Création avec un projet contenant des modules Java

Si vous avez un projet contenant des modules Java, la création du runTime avec jlink se fait automatiquement.

Pour utiliser un module à la place d'un jar, remplacer -main-jar par -module (ou -m) avec le nom du module et optionnellement la main class ex: hellofx/org.openjfx.MyFirstApp

 jpackage --type msi  --input ./target/ --dest .  --main-jar hellofx.jar --main-class org.openjfx.MyFirstApp 
--module-path javafxModulesDir --add-modules javafx.controls,javafx.fxml --win-shortcut --win-menu --app-version 1.0.2 --name "My best App" --jlink-options --bind-services --vendor "lepag.ch"

[https://blog\.devgenius\.io/creating\-a\-custom\-jre\-with\-java\-modules\-and\-jlink\-24e2cd81716a\]\(Créer un custom jre)

Création avec un projet sans modules Java

Si vous avez un projet sans modules Java, la création du runTime avec jlink se fait automatiquement. Il ajoute tous les modules java et les modules demandé avec l'option --add-modules.

Tip

C'est la solution que je préfère, il me semble qu'elle optimise la taille du runtime.

Exemple:

 jpackage --type msi  --input ./dist/ --dest .  --main-jar hellofx-1.0.jar --main-class org.openjfx.App --module-path "%PATH_TO_FX_MODS%" --add-modules javafx.controls,javafx.fxml,javafx.web,javafx.media --win-shortcut --win-menu  --app-version 1.0.2  --name "My best Ap2" --jlink-options --bind-services  --vendor "lepag.ch"

Autrement, il faut créer un runtime personnalisé avec jlink.

Ici, on ajoute tous les modules java et les modules javafx demandé avec l'option --add-modules.

 jlink --module-path "%PATH_TO_FX_MODS%"  --add-modules java.base,java.compiler,java.datatransfer,java.xml,java.prefs,java.desktop,java.instrument,java.logging,java.management,java.security.sasl,java.naming,java.rmi,java.management.rmi,java.net.http,java.scripting,java.security.jgss,java.transaction.xa,java.sql,java.sql.rowset,java.xml.crypto,java.se,java.smartcardio,java.base,javafx.fxml,javafx.web,javafx.media  --bind-services  --strip-debug --no-man-pages --no-header-files --output mynewjdk

Après avoir créé notre runtime personnalisé, on peut créer le .msi avec jpackage.

 jpackage --type msi  --input ./dist/ --dest .  --main-jar hellofx-1.0.jar --main-class org.openjfx.App --runtime-image runtime21fx --win-shortcut --win-menu  --app-version 1.0.2  --name "My best Ap3"   --vendor "lepag.ch"

Personnalisation

https://www.guidgen.com/

https://stackoverflow.com/questions/67784565/jpackage-update-path-environment-variable

https://docs.oracle.com/en/java/javase/21/jpackage/override-jpackage-resources.html#GUID-62412365-821D-4736-A20D-70F2D47136D8

Info sur la configuration de jpackage

Jpackage crée des fichiers Wix que l'on peux reprendre et les modifier et les réutiliser pour créer un .msi personnalisé.

Pour ceci, ajouter --temp "./tempdir" à la commande jpackage. Ceci enregistrera tous les fichiers Wix dans le dossier tempdir.

On crée un nouveau dossier avec les fichiers modifiés et on lance la commande jpackage avec l'option --resource-dir "WixOverwriteFilesDir"

Info Jpackage

Modification du fichier Wix

Modifier images installeur

Des tests fonctionnels sont dans ce dossier C:\Users\pag\IdeaProjects\testOnly\samplesBuildJavafx\IDE\IntelliJ\Modular\Maven\hellofx

Autres astuces wix

ouvrir un readMe après l'installation

Créer un fichier de langue

Créer un fichier de langue bis