Génération d’une glace

Si vous ne parvenez pas à trouver les évaluateurs de cohérence internes dont vous avez besoin parmi les actions personnalisées Ice existantes répertoriées dans la référence Ice, vous devrez préparer votre propre glace pour valider votre package.

Lorsque vous créez des actions personnalisées ICE, vous devez effectuer les opérations suivantes :

  • Basez le CIEM uniquement sur les actions personnalisées des types répertoriés dans le tableau indiqué.
  • Appelez MsiProcessMessage et publiez un _ message de type utilisateur INSTALLMESSAGE. Lorsque vous créez vos messages ICE, suivez le format du message dans les instructions relatives aux messages Ice.
  • Écrivez votre glace de sorte qu’elle capture toutes les erreurs d’API et retourne toujours l’erreur de _ réussite. Cela est nécessaire pour permettre aux actions personnalisées suivantes de s’exécuter après l’échec d’une glace.

Les actions personnalisées ICE sont limitées aux types d’actions personnalisées suivants.

Type d’action personnalisé Description
Type d’action personnalisé 1 DLL dans un flux binaire
Type d’action personnalisé 2 EXE dans un flux binaire
Type d’action personnalisé 5 JScript dans un flux binaire
Type d’action personnalisé 6 VBScript dans un flux binaire
Type d’action personnalisé 37 JScript le code en tant que chaîne
Type d’action personnalisé 38 Code VBScript sous forme de chaîne

Lors de la création d’une action personnalisée ICE, n’effectuez pas les opérations suivantes :

  • Ne supposez pas que le descripteur du moteur que la glace reçoit est une instance d’installation de la base de données du programme d’installation. S’il ne s’agit pas d’une instance d’installation, certaines propriétés ne sont pas définies, les répertoires source et cible ne sont pas résolus et les États des fonctionnalités actuelles ne sont pas définis.
  • Ne vous fiez pas à l’exécution antérieure, ou non, d’une action du programme d’installation, d’une action personnalisée ou d’une autre glace. Comme une ICE précédente peut avoir créé des colonnes temporaires dans une table, les auteurs doivent référencer les colonnes par nom chaque fois que cela est possible. Le CIEM doit nettoyer les tables ou colonnes temporaires avant de quitter.
  • Ne partez pas du principe que les auteurs ont accès à une image du répertoire source de la base de données.
  • Ne partez pas du principe que les modifications apportées à la base de données ne sont pas conservées.

Exemple de code ICE en C++

Exemple de code ICE dans VBScript