Skip to content

Custom Installer 2.0 Preview 2

Choose a tag to compare

@danbenba danbenba released this 24 Dec 21:12
· 17 commits to project since this release

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

  1. Gestion du Log (Logging)

    • Activation / Désactivation : La configuration logging.enabled dé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.txt ou ${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.
  2. Détection de la Version Java

    • Ajout d’une vérification de la version JVM au démarrage :
      • Lecture de la propriété java.minVersion depuis config.properties.
      • Avertissement et arrêt de l’installateur si la version détectée est trop basse.
  3. Création d’un Désinstalleur (Uninstaller)

    • Nouvelle fonctionnalité (activable via uninstaller.enabled) qui génère un script uninstall.bat à la fin de l’installation.
    • Ce script facilite la suppression complète des fichiers et dossiers installés.
  4. 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.
  5. 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).
  6. 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.
  7. 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.).
  8. Détection d’une Installation Existante

    • Paramètre alreadyInstalledCheck.enabled pour empêcher une double installation au même emplacement.
    • Vérification de la présence d’un fichier-clé (par défaut CustomInstaller.exe ou configurable via alreadyInstalledCheck.file).
  9. 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).

Améliorations / Changements Notables

  1. 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/catch et de logs d’erreurs.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

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.properties restent 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

  1. Récupérer la nouvelle version : Cloner ou télécharger depuis GitHub.
  2. 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.minVersion si besoin (ou la laisser par défaut à 11).
  3. Compiler et Exécuter comme précédemment via mvn package (ou manuel) et lancer l’installateur (JAR/EXE).
  4. 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