Empaqueter application + jre

Fermé
JAVASE - Modifié le 22 juil. 2018 à 12:51
JavaApplication Messages postés 9 Date d'inscription mardi 24 juillet 2018 Statut Membre Dernière intervention 29 juillet 2018 - 29 juil. 2018 à 18:28
Bonjour,

Je vous écris car j'ai une question à vous poser,

Lors de la rétro conception d'un logiciel imposée par Microsoft dans le cadre de mon travail, il m'a fallu trouver une solution pour que java puisse être empaquetée en Appx, malheureusement, le Java Runtime embarquait des fichiers codés avec des langages de trop bas niveau pour que ce dernier puisse être interprété par l'APPX,

J'ai donc trouver un moyen d'emballer mon application java ainsi que le jre en un seul exécutable !

J'aurais aimé savoir si cela à déjà été fait quelque part à défaut d'avoir trouvé ce que je cherchais...

J'ai travaillé jours et nuits pour obtenir une solution qui conviennent à l'équipe de certification de Microsoft...

Selon vous, vers qui puis-je m'adresser pour qu'un Modérateur du forum puisse prendre connaissance de cela en vu de rédiger un article si cela lui intéresse et m'aider à faire connaître cela s'il-vous-plaît ?

J'ai mis au point un petit programme qui permet à l'utilisateur de simplement introduire sont *.jar pour construire l'application en une simple ligne de commande en vu d'automatiser le processus avec tous les fichiers à disposition,

J'ai pensé mettre le concert et les fichiers sur Github,

J'utilise des fichiers auto-extractible pour cela,

Je vous remercie d'avance pour votre aide !
A voir également:

5 réponses

JavaApplication Messages postés 9 Date d'inscription mardi 24 juillet 2018 Statut Membre Dernière intervention 29 juillet 2018 1
Modifié le 28 juil. 2018 à 21:35
Bonjour KX et merci pour votre réponse,

Le seul souci avec toutes ces solutions c'est que même si cela fonctionne très bien avec un installateur MSI ou EXE classique,

Cela ne fonctionne pas lorsque je tente de convertir mon Setup en Appx, pour la simple raison que les fichiers du JRE ont été codé avec des langages de trop bas niveau pour être interprété par makeAppx.exe,

En faisant cela (méthodes que vous me suggérez), j'obtiens l'erreur suivante :



Le problème est que le JRE (le VM réel) est trop complexe pour UWP et utilise beaucoup d'API de bas niveau qui ne peuvent tout simplement pas être portées.

D'où l'intérêt de faire tenir l'application Java ainsi que le JRE dans un .exe,

C'est certes une procédure complexe mais si des développeurs développant sur le Store, comprennent à quel point il est fastidieux voir quasiment impossible de faire passer son application java sur le Microsoft Store,

Il y'a bien un autre moyen de le faire mais il est beaucoup plus complexe à reproduire,

Si vous pouviez m'aider à faire connaître cette méthode, cela m'aiderait beaucoup,

Cela aiderait beaucoup les autres développeur Java du Store,

Bonne soirée,
1
JavaApplication Messages postés 9 Date d'inscription mardi 24 juillet 2018 Statut Membre Dernière intervention 29 juillet 2018 1
Modifié le 28 juil. 2018 à 22:37
PS: une partie de ce que j'ai écris sur le post précédent n'apparaît pas,

"C'est certe une procédure complexe mais si des développeurs développant sur le Store tombent sur ce topic, il comprendront de quoi il ressort"

Merci
0
JavaApplication Messages postés 9 Date d'inscription mardi 24 juillet 2018 Statut Membre Dernière intervention 29 juillet 2018 1
29 juil. 2018 à 18:28
Up
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
22 juil. 2018 à 14:10
Bonjour,

Je te propose de déposer ton code sur cette partie du site qui est faite pour ça :
https://codes-sources.commentcamarche.net/source/list/last

Dans la description, merci de mettre toutes les informations utiles (à quoi ça sert, comment s'en servir...) et une fois publié me redonner le lien dans cette discussion.

Je regarderai et on verra ensuite comment le mettre plus en valeur si besoin.
0
Bonjour et merci pour votre réponse,

Je prépare ceci est reviens vers vous dès que possible,
0
JavaApplication Messages postés 9 Date d'inscription mardi 24 juillet 2018 Statut Membre Dernière intervention 29 juillet 2018 1
24 juil. 2018 à 19:49
Bonjour KX,

J'avais posté ceci et m'aviez invité à déposer mes fichiers sur CCM:

https://forums.commentcamarche.net/forum/affich-35481971-empaqueter-application-jre

Cependant, je vois que la limite pour l'importation de fichiers est de 10 Mo or mon projet entier lui fait 48 Mo,

Il m'est donc impossible de proposer mon concept au public,

je suis dans une impasse, comment puis-je remédier à cela s'il vous plait ?

Je vous remercie pour votre aide

PS: j'ai essayé de vous envoyer un MP mais est obtenu l'erreur suivante :

0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
24 juil. 2018 à 20:01
Bonjour,

Seuls les fichiers sources sont nécessaires, pas besoin de mettre le résultat de la compilation dans le zip.
Et si tu as 48 Mo de fichiers sources il y a un gros problème ;-)
0
JavaApplication Messages postés 9 Date d'inscription mardi 24 juillet 2018 Statut Membre Dernière intervention 29 juillet 2018 1
Modifié le 24 juil. 2018 à 20:08
Bonjour,

c'est le JRE qui me prend autant de place,

Je vais essayer de le retirer et modifier donc le tutoral pour que l'utilisateur ajoute lui même et build comme indiqué...

Merci
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019 > JavaApplication Messages postés 9 Date d'inscription mardi 24 juillet 2018 Statut Membre Dernière intervention 29 juillet 2018
24 juil. 2018 à 20:53
À voir ce que tu as fait, mais effectivement imposer une JRE n'est pas pérenne, en particulier quand on pense à la décomposition en modules de Java 9 qui réduit considérablement la taille de la JRE puisqu'elle n'embarque que les modules utilisés par le programme, donc chaque programme aura une JRE sur mesure.
0
JavaApplication Messages postés 9 Date d'inscription mardi 24 juillet 2018 Statut Membre Dernière intervention 29 juillet 2018 1
24 juil. 2018 à 21:13
Étant donné que je souhaite que tous les programmes puisse être empaquetée en un clic, j'utilise Java 9 qui est plus léger pour ce que je souhaite réaliser,

Il sera possible d'utiliser Java 8 comme ça le sera dans mon exemple,


PS: dans le tuto, il y aura une version manuel et une version avec un script batch qui tente d'automatiser la construction de l'application,

Je ne sais pas si ce que je vais proposer sera ou non novateur,

D'ailleurs, le temps d'exécution peut allez jusqu'à 20 seconde pour les PC portable doté d'un I7
0
JavaApplication Messages postés 9 Date d'inscription mardi 24 juillet 2018 Statut Membre Dernière intervention 29 juillet 2018 1
26 juil. 2018 à 14:58
Bonjour KX, j'ai déposé le code source à ce lien:

https://codes-sources.commentcamarche.net/source/102740-application-java-jre-dans-un-exe-portabilite

Merci pour votre aide

JavaApplication
0
JavaApplication Messages postés 9 Date d'inscription mardi 24 juillet 2018 Statut Membre Dernière intervention 29 juillet 2018 1
Modifié le 26 juil. 2018 à 16:24
J'ai également oublié de préciser que cela fonctionnait très bien pour faire passer son application java sur le Pont du Bureau en vu d'un déploiement sur le Microsoft Store !

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
28 juil. 2018 à 17:22
Bonjour,

J'ai regardé un petit peu ton projet et je trouve la procédure assez complexe, notamment dans la nécessité d'utiliser des outils tiers.

Est-ce que tu connais javapackager ?
C'est une commande dans le JDK qui permet de créer des applications natives (EXE ou MSI sous Windows, RPM ou DEB sous Linux, DMG ou PCK sous Mac).
Le principe est assez simple, cela créé un petit programme qui va faire un java -jar sur une JVM locale qui aura été copiée par le javapackager à partir du JDK de la compilation.

Est-ce que tu connais Apache Maven ?
C'est un outil de build standard dans le monde Java. J'ai fait un petit code de test (avec jars de dépendances et fichiers de ressources) qui permet d'intégrer l'utilisation de javapackager dans le build Maven pour éviter d'avoir à refaire la commande à la main.

Code de test → https://www.petit-fichier.fr/2018/07/28/helloworld/
Build → mvn clean package
Résultat 1 → target\bundles\helloworld-1.0\helloworld-1.0.exe
Résultat 2 → target\bundles\helloworld-1.0-1.0.exe

Remarque : j'ai utilisé les fonctionnalités de bases, communes à tous les OS, mais on peut faire des profils Maven et ajouter des options spécifiques pour chaque système d'exploitation.

Remarque : dans la mesure où je ne connais pas le déploiement sur Microsoft Store, je ne sais pas trop ce qu'il manque pour aboutir à un APPX valide.
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
28 juil. 2018 à 20:22
Remarque : j'ai fait mon test avec le code précédent avec un JDK 8.
Là je viens de faire le test avec un JDK 10 et il faut faire quelques adaptations dans le pom.xml :

1) Ajouter ces deux lignes dans la balise
<properties>

<maven.compiler.source>6</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>
Explication : par défaut Maven travaille en Java 5, mais depuis Java 9 on ne peut compiler que du Java 6 ou plus.
Quant au compiler.target, vu qu'on va lui copier-coller une JRE 10 autant lui donner cette valeur.

2) Remplacer la ligne suivante :
<argument>-srcfiles</argument><argument>${project.build.directory}/${project.build.finalName}.jar</argument>
Par les deux lignes suivantes :
<argument>-srcdir</argument><argument>${project.build.directory}</argument>
<argument>-srcfiles</argument><argument>${project.build.finalName}.jar</argument>
Explication : ça ressemble à un bug, mais javapackager n'accepte plus l'option en une seule ligne.
Autre changement, le sous dossier "bundles" a disparu, il faut aller chercher les .exe directement dans "target"

Remarque : le code de test n'est pas configuré pour travailler avec les modules, donc pour l'instant c'est une JRE complète qui est copié-collé, mais il existe bien sûr des options de javapackager pour gérer les modules.
0