Le fichier XML “PackageInfo.xml” représente le manifeste d’un package Constellation. Il doit être présent à la racine de chaque package. Il contient toutes les informations décrivant un package.

Ce fichier est automatiquement créé par Visual Studio lorsque vous créez un projet de type Constellation.

Il contient trois parties :

  1. Les informations générales sur votre package
  2. Les informations de compatibilité du package
  3. Les informations sur les settings du packages

Exemple :

Informations générales

Vous pouvez définir sur l’élément racine “Package” les attributs suivants :

  • Name : le nom du package (il s’agit de l’identifiant). Si pas défini, le nom du package est le nom du fichier (sans l’extension ”.zip”)
  • Description : le texte de description de votre package tel qu’il apparaîtra sur le catalogue
  • Author : nom de l’auteur du package
  • URL : URL de l’auteur
  • PackageUrl : URL spécifique au package
  • Version : version du package. Si pas défini, la version du package est le numéro de version de l’assembly.
  • Icon : chemin relatif vers l’icone du package
  • ExecutableFilename : le nom de l’exécutable du package. Si pas défini, l’exécutable est le “<nom du package>.exe”
  • RequestLastStateObjectsOnStart : booléen indiquant si vous souhaitez recevoir les StateObjects produits par votre package lors de sa dernière exécution. (voir ici)
  • EnableControlHub : booléen indiquant si vous souhaitez connecter votre package au hub de contrôle. (voir ici)

Informations de compatibilité

Vous pouvez définir des informations quant à la compatibilité de votre package.

Sur l’élément “Compatibility” vous pouvez indiquer les attributs suivants :

  • dotNetTargetPlatform : version du framework .NET utilisée (net40 ou net45)
  • constellationVersion : version de la Constellation utilisée (“1.7” ou “1.8” à l’heure actuelle)

Vous pouvez également ajouter des éléments enfants “Platforms” pour indiquer les plateformes supportées. Chaque “Platform” définie les attributs :

  • id : identifiant de la plateforme (Win32NT, Unix ou MacOSX)
  • isCompliant : booléen indiquant si la plateforme est supportée ou non

Par exemple si vous développez un package Python exploitant les GPIO d’un Raspberry, vous allez indiquer :

A l’inverse, un package comme HWMonitor qui utilise des API spécifiques à Windows, vous allez indiquer qu’il n’est pas compatible sur Unix/Linux et MacOS par les lignes :

Au démarrage d’un package, la sentinelle lancera des “Warnings” dans les logs Constellation si le package ne respecte pas le contrat de compatibilité sans toutefois bloquer le démarrage.

Ces informations servent également pour la Console Constellation, afin de vous donner des informations lors de la ajout et configuration des packages de votre Constellation.

Informations sur les Settings du package

Enfin, la troisième et dernière partie du manifeste sert à décrire les settings utilisés par un package.

La déclaration des settings dans le manifeste n’a pas impact sur le fonctionnement du package mais il permet de décrire les clés de configuration utilisées par le package pour que des outils tel que la Console Constellation puisse proposer une interface graphique de configuration pour chaque package. Il est donc vivement recommandé de décrire les settings de ses packages. De plus il est possible de définir des valeurs par défaut dans le manifeste.

Chaque setting déclaré dans le manifeste doit obligatoirement comporter les attributs suivants  :

  • Name : le nom (clé) du setting
  • Type : le type du setting

Le type peut être :

  • Boolean : un booléen (true/false)
  • Double : un double
  • String : un chaine de caractère
  • Int32 : un entier (32 bits)
  • Int64 : un long (64 bits)
  • ConfigurationSection : un section de configuration .NET
  • DateTime : un DateTime
  • TimeSpan : une durée
  • XmlDocument : un document XML
  • JsonObject : un objet JSON (objet ou tableau)

Par exemple :

Sur chaque setting déclaré, vous pouvez également définir les attributs suivants :

  • isRequiered“ : indique si le setting est obligatoire ou non (par défaut “false”). Si le setting n’est pas déclaré, une erreur est levée.
  • description” : permettant de donner une explication sur le setting (affichée à l’utilisateur sur la Console Constellation)
  • defaultValue” : la valeur par défaut du setting si le setting n’est pas déclaré (plus d’info)
  • schemaXSD” : indique le nom du fichier du schéma XSD (chemin relatif au package) que la valeur XML doit valider (seulement pour les settings de type XmlDocument ou ConfigurationSection)
  • ignoreLocalValue” : si “true” alors la valeur définie dans le fichier local App.config est ignorée  (plus d’info)
  • ignoreDefaultValue” : si “true” alors la valeur par défaut définie dans le manifeste est ignorée

Pour les settings XmlDocument, ConfigurationSection et JsonObject vous pouvez également ajouter une sous-section <defaultContent> sur vos settings pour définir le contenu par défaut.

Par exemple :

A lire également : Les Settings d’un package

Le Package Manifest
Editer la page sur GitHub
Étiqueté avec :

Démarrez la discussion sur le forum Constellation