Custom Installer 2.0 Preview 2
Release Note – Nouvelle version de l’installateur Java
GitHub: danbenba/CustomInstaller
Aperçu Général
Cette nouvelle version de l’installateur introduit plusieurs nouveautés majeures, ainsi qu’un certain nombre d’améliorations et de corrections de bugs par rapport à la version précédente. Les fonctionnalités clés incluent un mécanisme de logging configurable, la validation de l’espace disque, la détection de la version Java, un système de téléchargement résumable et la possibilité de créer un désinstalleur.
Nouveautés Principales
-
Gestion du Log (Logging)
- Activation / Désactivation : La configuration
logging.enableddétermine si l’installateur doit écrire un journal (log) d’installation. - Chemin du fichier de log : La propriété
logging.path(ex.C:\temp\installer_log.txtou${user.home}/installer_log.txt) permet de spécifier où conserver les traces de l’installation. - Traçabilité : Toutes les étapes critiques (téléchargement, copie de fichiers, erreurs, etc.) sont consignées.
- Activation / Désactivation : La configuration
-
Détection de la Version Java
- Ajout d’une vérification de la version JVM au démarrage :
- Lecture de la propriété
java.minVersiondepuisconfig.properties. - Avertissement et arrêt de l’installateur si la version détectée est trop basse.
- Lecture de la propriété
- Ajout d’une vérification de la version JVM au démarrage :
-
Création d’un Désinstalleur (Uninstaller)
- Nouvelle fonctionnalité (activable via
uninstaller.enabled) qui génère un scriptuninstall.batà la fin de l’installation. - Ce script facilite la suppression complète des fichiers et dossiers installés.
- Nouvelle fonctionnalité (activable via
-
Vérification de l’Espace Disque
- Avant de lancer le processus, l’installateur s’assure que l’emplacement de destination dispose d’assez d’espace disque.
- Propriété
installer.minSpace(en octets) pour définir l’espace minimal requis. - Si le dossier de destination n’existe pas, l’utilisateur est invité à le créer.
-
Options Avancées
- Nouveau bouton “Options avancées” (activable via
advanced.enabled). - Permet par exemple de configurer un proxy ou tout autre paramètre avancé (logique d’UI personnalisable).
- Nouveau bouton “Options avancées” (activable via
-
Téléchargement Résumable
- Ajout d’un mode “résumable” (s’il est pris en charge par le serveur) via
download.resumable. - Reprend automatiquement le téléchargement en cas d’interruption, sans recommencer depuis zéro.
- Ajout d’un mode “résumable” (s’il est pris en charge par le serveur) via
-
Création de Raccourcis (icônes sur le Bureau et dans le Menu Démarrer)
- Activable via la case à cocher
shortcut.enabled. - Ajout d’un script VBS pour créer des .lnk Windows (chemin cible, icône, etc.).
- Activable via la case à cocher
-
Détection d’une Installation Existante
- Paramètre
alreadyInstalledCheck.enabledpour empêcher une double installation au même emplacement. - Vérification de la présence d’un fichier-clé (par défaut
CustomInstaller.exeou configurable viaalreadyInstalledCheck.file).
- Paramètre
-
Proposition de Lancer l’Application après Installation
- Dépend de la clé
launch.prompt. - Ouvre un dialogue demandant à l’utilisateur s’il souhaite exécuter immédiatement le programme (l’application installée).
- Dépend de la clé
Améliorations / Changements Notables
-
Structure Générale du Code
- Passage à un modèle basé sur des SwingWorkers plus complets pour gérer les tâches de fond (téléchargement, décompression, etc.) et conserver une interface fluide.
- Meilleure gestion des exceptions avec plus de
try/catchet de logs d’erreurs.
-
Interface Utilisateur Modernisée
- Fenêtres de configuration plus claires (T&C, dialogue d’options avancées, etc.).
- Ajout d’un label de statut (
lblStatus) indiquant les actions en cours (téléchargement, copie de fichiers, etc.). - Possibilité de redimensionner dynamiquement la bannière via l’aspect ratio.
-
Vérification des Droits Administrateur
- Approche inchangée mais renforcée dans les logs et la gestion d’erreur si l’utilisateur souhaite installer dans un répertoire administrateur sans les privilèges requis.
-
Gestion des Cases à Cocher
- Case “Créer un raccourci” conditionnée par la propriété
shortcut.enabled. - Case “I Accept the Terms and Conditions” dans le dialogue de CGU, pour valider l’installation.
- Case “Créer un raccourci” conditionnée par la propriété
-
Propriétés Paramétrables
java.minVersion,uninstaller.enabled,shortcut.enabled,download.resumable,advanced.enabled,alreadyInstalledCheck.enabled, etc.- Permettre aux utilisateurs ou développeurs d’ajuster le comportement de l’installateur sans recompiler le code.
-
Nettoyage du Code et Organisation
- Séparation en méthodes plus courtes et plus cohérentes :
checkDiskSpace,initLogFile,createUninstaller,downloadFileResumable, etc. - Diminution des duplications de code par la réutilisation de méthodes ou de variables de configuration.
- Séparation en méthodes plus courtes et plus cohérentes :
Corrections de Bugs
- Corrections sur la Redimension de l’Image : le ratio de l’image est maintenant calculé correctement afin d’éviter toute déformation.
- Gestion des Fenêtres de Dialogue : utilisation de
dialog.setLocationRelativeTo(this)pour les centrer par rapport à la fenêtre principale. - Fermeture du Programme : utilisation de
System.exit(0)dans les bons scénarios (notamment sur annulation par l’utilisateur ou absence de privilèges). - Copie de Fichiers : utilisation correcte de
Files.isDirectory(source)pour éviter de copier des dossiers vides et prévenir certains crashs. - Erreur de Chemin sur Windows : vérification de la normalisation des chemins lors de l’extraction (méthode
zipSlipProtect).
Migration & Compatibilité
- Configurations existantes : Les anciens
config.propertiesrestent compatibles, mais certaines clés ont été ajoutées (ex.uninstaller.enabled,logging.enabled). Si elles sont absentes, des valeurs par défaut sont utilisées. - Version Java : Désormais l’installateur impose une version Java minimale (par défaut 11).
- Systèmes d’Exploitation : Principalement testé sous Windows (pour la gestion des raccourcis
.lnk), mais reste compatible Linux/macOS si on désactive la création de raccourcis Windows.
Instructions de Mise à Jour
- Récupérer la nouvelle version : Cloner ou télécharger depuis GitHub.
- Mettre à jour le fichier
config.properties:- Vérifier les nouvelles clés (
logging.enabled,uninstaller.enabled,advanced.enabled,download.resumable, etc.). - Adapter la propriété
java.minVersionsi besoin (ou la laisser par défaut à 11).
- Vérifier les nouvelles clés (
- Compiler et Exécuter comme précédemment via
mvn package(ou manuel) et lancer l’installateur (JAR/EXE). - Tester l’installateur pour vérifier :
- Qu’il détecte bien la version Java.
- Qu’il enregistre correctement les logs (si activés).
- Que les raccourcis (si activés) se créent correctement.
- Que l’application se lance si l’utilisateur le demande.
Remerciements
Merci à tous les contributeurs pour leurs retours et leurs suggestions ! N’hésitez pas à ouvrir une issue ou à soumettre une Pull Request si vous rencontrez des problèmes ou souhaitez proposer de nouvelles fonctionnalités.
Bonne installation !
L’équipe CustomInstaller
Full Changelog: 2.0.0pre1...2.0.0pre2