[UDF] Framework AutoIt Gui Skeleton (AGS)

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
20100
Niveau 3
Niveau 3
Messages : 43
Enregistré le : ven. 03 juil. 2009 11:39
Status : Hors ligne

[UDF] Framework AutoIt Gui Skeleton (AGS)

#1

Message par 20100 »

Bonjour,

Je vous présente une solution d'aide à la construction d'application AutoIt, sur laquelle je travaille. Je l'ai initialement pensé pour me faciliter la vie dans la maintenance de plusieurs applications AutoIt, et m'éviter des tâches récurrentes.

Bonne lecture ^^...



AutoIt Gui Skeleton (AGS)


Présentation

AGS a pour idée principale de fournir une architecture standardisée, des conventions et des outils pour faciliter la construction d'applications Windows avec AutoIt.
AGS est disponible sous licence MIT. Et vos commentaires, contributions (pull-request) & stars sont toujours les bienvenues sur Github !

Attention, il s'agit (encore) d'une version alpha : AGS v1.0.0-alpha - 10-07-2018.


Principaux outils & fonctionnalités
  • Propose d'utiliser des conventions et une architecture standardisée afin de simplifier l'organisation du code, et ainsi sa maintenabilité.
  • Fournit un gestionnaire de dépendances pour AutoIt basé sur Yarn (Yarn + AutoIt = Yarna), pour faciliter l'installation et la mise à jour de librairies AutoIt tierces.
  • Fournit une bibliothèque de composants réutilisables (AGS composant & AGS wrapper) et facilement installables avec Yarna .
  • Fournit un processus automatisé et des fonctionnalités afin de faciliter la création d'installeur Windows (setup) d'application AutoIt.
  • Fournit "AGS Console" une application CLI d'aide à l'ingénierie logiciel AutoIt qui offre de nombreuses commandes : générer un nouveau projet, nettoyer le code, créer un installeur... (Attention AGS Console n'est ni finalisé, ni qualifié.)
  • Fournit le composant "AGS-component-check-for-updates" : ajoute la fonctionnalité pour vérifier l’existence de mise à jour d'une application AutoIt.
  • Fournit le composant "AGS-component-http-request" : pour envoyer des requêtes HTTP en GET ou POST, derrière un proxy si besoin.
  • Fournit le wrapper "AGS-wrapper-json : pour travailler avec des fichiers JSON dans une application AutoIt

Vue d'ensemble de l'architecture d'AGS

Image

Le programme d’entrée principal (= Main Entry Program)
C’est le point d’entrée unique de l’application où l’application démarre. Il porte le nom de votre application MyApplication.au3. Dans ce dernier, nous commençons par inclure toutes les autres dépendances dont il a besoin : les bibliothèques d’AutoIt, les bibliothèques tierces, la déclaration des variables globales et le code pour l’interface graphique et les services de l’application.

L’application démarre alors avec l'appel au gestionnaire principal de l’IHM _main_GUI().

Le gestionnaire principal de l’interface graphique (= Main handler GUI)
Le fichier ./src/GUI.au3 est le point d’entrée de tous les gestionnaires de vues qui sont sauvegardés dans le répertoire ./views. Nous l’appellerons gestionnaire principal de l’IHM. Le code de chaque vue est défini à chaque fois dans un fichier spécifique et stocké dans le répertoire des vues.

Le gestionnaire principal de l’IHM contient la méthode _main_GUI() qui permet de démarrer l’application. Cette méthode n’est appelée que depuis le programme d’entrée principal de l’application, et elle a été conçue pour créer l’interface utilisateur (GUI) et gérer toutes les interactions utilisateurs et les événements dans l’application.

Centralisez la déclaration des variables globales (= Global scope)
Toutes les constantes et les variables globales sont définies à un seul endroit dans le fichier ./src/GLOBALS.au3, afin de centraliser la déclaration de toutes les variables à portée globale. À l’exception des variables globales des éléments graphiques, qui eux, sont définies dans chaque fichier de vue spécifique. On rappelle que les constantes ne peuvent plus changer de valeur dans le temps, contrairement aux variables globales. Si une variable globale change de valeur, il n’est pas possible de persister son résultat, a moins de le faire dans le fichier de configuration ./config/parameters.ini.

Par convention, toutes les variables globales doivent être écrites en majuscule et séparées par un trait de soulignement. Par exemple: Global Const $ APP_EMAIL_CONTACT.


Exemple d'une application construite avec AGS

Cette application est un exemple d'application minimale construite avec le framework AGS. Dans ce projet vous pouvez voir par exemple :
  • L’organisation des fichiers et répertoires d'un projet AGS, ainsi que la configuration de l'application;
  • Comment créer une vue ;
  • Comment créer un footer statique, toujours visible dans l'application ;
  • Comment créer un menu, et ajouter des éléments ;
  • Comment gérer les actions dans un menu (exemple avec l'action open/close file) ;
  • Comment gérer les événements sur un élément dans une vue ;
  • ...
Image

Voir le code source : https://github.com/autoit-gui-skeleton/ ... 01-minimal


Répertoires et fichiers d'un projet AGS

Un projet AGS respecte l'organisation suivante pour ses fichiers et répertoires.

Project root folder
.
|   .gitignore                # Specifies untracked files to ignore in AGS project
|   .yarnrc                    # Yarn configuration used in handling AutoIt dependencies
|   MyApplication.au3          # The main entry progam.
|   package.json               # Use npm's convention to describe this project
|   README.md                  # In human readable.
|   RELEASES.json              # Repository for all releases notes of this application.
|      
+---assets                     # Applications assets (images, pdf, static files...)
|  
+---bin                        # Binary tools
|              
+---config                     # Configuration of application.
|       parameters.ini         # Parameters which can be modified by user in application
|       parameters.ini.dist    # Template of parameters.ini which is save in  control version
|              
+---releases                   # Releases application (zip and windows setup)
|          
+---src                        # AutoIt source
|   |   BUSINESS.au3           # Entry point for business and logic code
|   |   GLOBALS.au3            # Entry point for constants and global variables of application
|   |   GUI.au3                # Entry point for graphic user interface (GUI)
|   |   SERVICES.au3           # Entry point for services applications
|   |      
|   +---business               # Folder for store all business annd logic code
|   |      
|   +---services               # Folder for store all services application
|   |       Dialogbox.au3      # Handler of dialog box in which the user is prompted
|   |       ParametersIni.au3  # Handler of configuration file parameters.ini    
|   |      
|   \---views                  # Folder for store all views application
|           View_About.au3
|           View_Footer.au3
|           View_Settings.au3
|           View_Welcome.au3
|            
\---vendor                     # Third party code and dependencies handles with npm repository

Répertoire assets
Ce répertoire contient tous les éléments utilisés dans l’application comme les images, les fichiers texte, pdf, html, css, javascript. Remarquons qu’il est possible d’intégrer un fichier html statique dans une application AutoIt en utilisant un navigateur web intégré dans l’interface graphique avec la méthode _IECreateEmbedded() fournie par la bibliothèque IE.au3.

Répertoire bin
Ce répertoire est utilisé pour stocker tous les exécutables du projet. Par exemple l'application en ligne de commande "AGS-console" est stockée dans ce dossier.

Répertoire config
Un projet AGS doit avoir au moins un fichier de configuration ./config/parameters.ini. Définissez les paramètres ici qui peuvent être différents sur chaque application. Pour utiliser ce fichier de configuration, nous utilisons la constante $APP_PARAMETERS_INI qui contient le chemin d’accès complet. Cette constante est définie dans ./src/GLOBALS.au3 et lors de chaque démarrage de l’application, AGS vérifie l’existence du fichier de configuration.

Répertoire releases
Ce répertoire contient les installeurs Windows (setup) de votre application générée avec AGS. C'est un bacth Windows qui contrôle la génération de l’installeur Windows via la solution InnoSetup. Pour executer ce batch, il est nécessaire que le compilateur InnoSetup et 7zip soient installées sur le PC.

Répertoire src
Tout le code source AutoiT de votre application est stocké dans ce répertoire. Dans ce dernier se trouve des sous-répertoires spécifiques : business, services, views, ainsi que des fichiers spécifiques : GLOBALS.au3, GUI.au3 et SERVICES.au3.

Répertoire vendor
Ce répertoire est l’endroit par convention où stocker le code développé par des tiers. AGS utilise un gestionnaire de dépendances basé sur Yarn et le référentiel npmjs.org pour partager des bibliothèques AutoIt. Tous les paquets AGS hébergés dans ce référentiel npmjs appartiennent à l’organisation @autoit-gui-skeleton.





Focus sur quelques fonctionnalités


AGS Yarna : Gestionnaire de dépendances AutoIt

Yarna (= Yarn + AutoIt) simplifie la gestion des dépendances d’un projet AutoIt construit avec AGS, nous avons détourné de son usage initial le gestionnaire de dépendances npm, et son évolution Yarn. Ce qui nous permet de gérer les dependances d’un projet AGS avec d’autres librairies AutoIt, et de partager ces packages AutoIt depuis le depôt npmjs.org. AGS utilise l’écosystème Node.js et son gestionnaire de dépendances npm et Yarn.

Image

Pour installer les dépendances d'un projet AGS
Les dépendances du projet sont stockées dans le répertoire ./vendor, et sont décrites à l'aide du fichier package.json.

Code : Tout sélectionner

yarn insall --modules-folder vendor
Pour mettre à jour les dépendances d'un projet AGS

Code : Tout sélectionner

yarn upgrade
Pour ajouter une libraire AGS dans un projet AGS

Tous les paquets AGS hébergés dans le réferentiel npmjs.org appartiennent à l’organisation @autoit-gui-skeleton. Et vous pouvez y trouver deux types de paquets hébergés dans cette organisation.
  • Un AGS-component est une bibliothèque AutoIt, que vous pouvez utiliser facilement dans votre projet Autoit construit avec le framework AGS.
  • Un AGS-wrapper est une simple enveloppe d’une bibliothèque AutoIt développé par un tiers. Ce qui permet de beneficier des avantages d’un gestionnaire de dépendances.
Pour ajouter une dépendance, i.e. installer un composant ou un wrapper AGS dans son projet, il suffit de taper à la racine du répertoire projet :

Code : Tout sélectionner

yarn add @autoit-gui-skeleton/ags-component-xxx --modules-folder vendor
yarn add @autoit-gui-skeleton/ags-wrapper-xxx --modules-folder vendor
Image

Plus d'information ici


AGS CreateSetup : Packager une application AutoIt et créer un programme d'installation (setup) Windows

Lorsqu’on termine une application, et que nous avons un binaire exécutable, il faut trouver un moyen pour faciliter son déploiement et son installation sur un poste client. L’approche naturelle est de créer une simple archive zip du projet. Mais ce n’est pas suffisant, si on souhaite bénéficier de toutes les fonctionnalités d’un installeur Windows.

Pour faciliter le déploiement d’une application de bureau Windows, AGS propose de construire un installeur Windows via la solution InnoSetup, dont voici quelques fonctionnalités :
  • Générer un package (archive zip) et un installeur Windows.
  • Soutenir l’internationalisation (i18n).
  • Vérifier si l’application est déjà installée.
  • Configurer des messages supplémentaires dans la configuration comme: contrat de licence, prérequis et projet d’historique.
  • Ajouter l’application dans le menu Démarrer de Windows.
  • Lancer une commande personnalisée après la fin de l’installation.
  • Personnaliser et modifier les éléments graphiques du programme d’installation de Windows.
Dans AGS on utilise un batch Windows qui joue le rôle de chef d’orchestre, pour générer le setup.
Image

Plus d'information ici.


AGS Console : application d'aide à l'ingénierie

Image

Application en ligne de commande qui propose des outils d'aide pour :
  • générer un nouveau projet à partir d'un squelette de base
  • nettoyer le code d'un projet
  • générer un installeur windows
  • ...
(Attention AGS Console n'est ni finalisé, ni qualifié.)


AGS component CheckForUpdates : Vérifier l'existance de mises à jour d'une application AutoIt

AGS fournit le composant @autoit-gui-skeleton/ags-component-check-for-updates afin d’ajouter la fonctionnalité pour vérifier les mises à jour dans une application AutoIt. L'installation se fait simplement avec Yarna.

Avec ce composant, vous pouvez créer une application AutoIt disposant d’une fonctionnalité pour vérifier ses propres mises à jour. Il fournit alors un lien pour télécharger la dernière version de l’installeur, et un autre lien vers les notes de versions.

Image

Image

Pour fonctionner, il compare la version locale de l’application installée sur le PC de l’utilisateur avec le référentiel des versions publiées de l’application. Ce référentiel est un fichier json, RELEASES.json, qui est hébergé sur un serveur distant. Nous devons donc nous connecter à Internet pour envoyer une requête HTTP pour récupérer ce fichier, et nous avons besoin d’une analyse JSON. Ce composant dépend donc des autres composants AGS : ags-wrapper-json et ags-component-http-request. Si vous souhaitez simuler différents scénarios de vérification des mises à jour, il vous suffit de modifier la valeur de l’ensemble des versions de l’application dans ./src/GLOBALS.au3.

Si une mise à jour est disponible, il est alors possible de voir les notes de sortie associés, ainsi que le lien pour télécharger la dernière version publiée.

Image

Image

Plus d'information ici
Répondre