IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Concepteurs de composants, simplifiez leur installation


précédentsommairesuivant

Introduction

Le grand nombre de composants Delphi disponibles sur la toile n'est sans doute pas étranger au succès de Delphi. L'installation d'un composant au sein de l'IDE est donc une opération importante, simple en général, mais qui repoussera encore pas mal d'utilisateurs débutants tant que cette dernière ne sera pas automatique.

Prenons l'incontournable RXLibrary : des tas de composants très utiles, mais une installation où seuls les méticuleux et les patients arrivent au bout… ça a dû coûter cher en espace disque sur les forums :-) (Pour la petite histoire et ceux qui n'y sont pas encore arrivés, la solution réside dans la lecture attentive du ReadMe.txt…)

Maintenant, regardez les GExperts qui s'installent automatiquement dans l'IDE avec un simple Setup. Même si les GExperts ne sont pas des composants au sens où ils ne s'intègrent pas dans la palette, on retiendra l'idée.

Nous apprendrons ici à concevoir un programme exécutable qui va installer vos composants directement dans la palette IDE, et ce sans même avoir besoin que Delphi soit lancé. Nous y trouverons deux avantages :

  • une distribution propre de vos composants et facile pour vos utilisateurs (développeurs utilisateurs de vos composants…) ;
  • la possibilité de concevoir pour soi une installation globale de tous les composants tiers qu'on utilise généralement, pour chaque réinstallation de Delphi, ou pour les installations de chaque poste d'une même équipe de développement.

I. Packages et composants

Vos composants peuvent être fournis sous forme de fichiers source et/ou compilés (*.pas et *.dcu) ou alors de packages. Un package est un conteneur de composants et va permettre à ces composants d'apparaître dans la palette de Delphi. Soit vous distribuez un paquet déjà prêt à être pris en compte par Delphi (un *.bpl) soit vous ne souhaitez pas préparer de paquet, mais alors votre programme d'installation devra prendre en charge la compilation de vos composants dans des paquets déjà existants de la station sur laquelle l'installation s'effectue.

Comment procède globalement Delphi pour afficher la palette de composants ?

Au démarrage, Delphi parcoure la clé de registre HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\Known Packages\ (en rouge selon la version de Delphi). Dans cette clé nous trouverons une liste de sous-clés représentant les packages qui contiennent les composants à afficher dans la palette. Chaque nom de clé est composé du chemin suivi du nom du paquet compilé (*.bpl). La valeur de la clé est la description du paquet (fig. 1), celle que l'on retrouve lorsque l'on clique sur le menu Composants|Installer des paquets.

Image non disponible
Figure 1

Pour chaque clé, Delphi charge le paquet compilé et en extrait les éventuels composants grâce à des fonctionnalités incluses dans le paquet bpl (qui en fait est une DLL).

II. Fichiers Packages

Delphi charge des paquets dont l'extension est *.bpl, mais la compilation d'un paquet produit aussi d'autres fichiers avec des extensions différentes.

À la base un paquet est un fichier source qui indique quels sont les fichiers source et autres paquets nécessaires pour compiler l'ensemble. Ce fichier porte l'extension *.dpk.

Les fichiers pascal objet à compiler sont des unités portant l'extension *.pas. La compilation produit un *.dcu par unité.

La compilation du paquet va engendrer une compilation si nécessaire de tous les *.pas, donc on va obtenir un ensemble de *.dcu.

L'ensemble des *.dcu sera encapsulé en une seule image binaire accompagnée des entêtes et des symboles : le fichier *.dcp.

Ce fichier sera utile au compilateur lorsqu'à la compilation d'un paquet il est fait référence à un autre (le compilo recherchera le DCP respectif) ou lorsque dans la clause uses d'une unité ou d'un projet, un paquet est référencé.

Enfin le compilateur génère également un fichier exécutable : le paquet final *.bpl qui en fait est une DLL. Des fonctions utilitaires intégrées dans cette DLL sont exportées en vue de leur utilisation par l'EDI de Delphi, notamment la fonction GetPackageInfoTable qui va retourner un pointeur sur une structure qui liste toutes les unités présentes dans le package, les pointeurs sur leur section initialization et finalization, etc.

Quand vous distribuez vos composants vous devrez livrer au minimum les *.bpl (plus les *.dcp si les paquets sont utilisés dans un environnement Delphi). Libre à vous ensuite d'ajouter les *.pas (et *.res le cas échéant), *.dpk, *.dcu.

Pour plus d'infos sur l'art et la manière de packager vos composants, allez lire le tutoriel qui a rassuré toute une génération de concepteurs… ;-) : https://merlin.developpez.com/packages/.


précédentsommairesuivant

Copyright © 2002 Sylvain James. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.