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