Partager via


Envoi de messages à Windows Installer à l’aide de MsiProcessMessage

Les messages envoyés à l’aide de MsiProcessMessage sont les mêmes que ceux reçus par la fonction de rappel INSTALLUI_HANDLER si MsiSetExternalUI a été appelé. Sinon, Windows Installer gère les messages. Pour plus d’informations, consultez Analyse des messages Windows Installer.

Par exemple, pour envoyer un message INSTALLMESSAGE_ERROR avec l’icône MB_ICONWARNING et les boutons MB_ABORTRETRYCANCEL :

PMSIHANDLE hInstall;
PMSIHANDLE hRec;
MsiProcessMessage(hInstall, INSTALLMESSAGE(INSTALLMESSAGE_ERROR|MB_ABORTRETRYIGNORE|MB_ICONWARNING), hRec);

hInstall est le descripteur de l’installation, fourni à une action personnalisée ou le descripteur hProduct à partir de MsiOpenProduct ou MsiOpenPackage, et hRec est l’enregistrement contenant les informations d’erreur à mettre en forme. Pour plus d’informations sur la façon dont la mise en forme est effectuée, consultez MsiFormatRecord.

Par défaut, si un message INSTALLMESSAGE_ERROR ou INSTALLMESSAGE_FATALEXIT est envoyé sans spécifier le type de bouton ou les types d’icônes, MB_OK, aucune icône et MB_DEFBUTTON1 sont utilisés.

Windows Installer n’étiquette pas le bouton ABORT avec la chaîne « Abort » lors de l’affichage d’une MessageBox avec la spécification du bouton MB_ABORTRETRYIGNORE, mais l’étiquette le bouton avec la chaîne « Cancel ». Tous les messages d’erreur s’abstiennent d’utiliser le mot « Abort » et utilisent à la place le mot « Cancel ».

Le paramètre hRecord de la fonction MsiProcessMessage dépend du type de message envoyé au MsiProcessMessage. La liste suivante détaille les exigences de l’enregistrement par rapport au type de message :

INSTALLMESSAGE_FATALEXIT

 

INSTALLMESSAGE_INFO

 

INSTALLMESSAGE_OUTOFDISKSPACE

Champ Description
0 Modèle pour la mise en forme de la chaîne résultante. Pour plus d’informations, consultez MsiFormatRecord. Les champs de l’enregistrement sont référencés à l’aide de [1] pour le champ 1, [2] pour le champ 2, etc.
1 à n Tous les champs suivants sont directement liés aux champs référencés par le modèle dans le champ 0.

 

Si le champ 0 a la valeur null, la chaîne reçue par le gestionnaire d’interface utilisateur est mise en forme comme suit : 1 : [données du champ 1] 2 : [données du champ 2], ce qui signifie que pour chaque champ de l’enregistrement, la chaîne contient le numéro de champ suivi des données stockées dans le champ.

Les messages d’informations de MsiProcessMessage sont enregistrés lorsque MsiEnableLog, l’option de ligne de commande « /l » ou la stratégie de journalisation spécifient « I » ou INSTALLLOGMODE_INFO.

INSTALLMESSAGE_ERROR

 

INSTALLMESSAGE_WARNING

 

INSTALLMESSAGE_USER

Pour utiliser un message de la table Error.

Champ Description
0 Doit être NULL.
1 Numéro de message dans la table Error.
2 à n Lié au message spécifié dans la table Error.

 

Par exemple,

Champ Type Données
0 string null
1 int 1304
2 string Myfile.txt

 

Le message obtenu à partir du gestionnaire d’interface utilisateur est le suivant :

Erreur 1304. Erreur d’écriture dans le fichier : Myfile.txt. Vérifiez que vous êtes autorisé à accéder à ce répertoire.

Si le champ 0 n’est pas null, le message de la table d’erreurs est remplacé. Au lieu de cela, le modèle de champ 0 détermine le format du message.

Le message peut également spécifier les boutons, y compris le bouton par défaut, et l’icône à utiliser avec le message, comme mentionné ci-dessus. Les types de boutons et d’icônes sont répertoriés dans INSTALLUI_HANDLER.

INSTALLMESSAGE_COMMONDATA

Ce message est envoyé pour activer ou désactiver le bouton Annuler dans une boîte de dialogue de progression.

Champ Description
0 Inutilisé.
1 2 fait référence au bouton Annuler.
2 La valeur 1 indique que le bouton Annuler doit être visible. La valeur 0 indique que le bouton Annuler doit être invisible.

 

Par exemple, pour désactiver ou masquer le bouton Annuler, l’enregistrement apparaît comme suit.

Champ Type Données
0 string null
1 int 2
2 int 0

 

INSTALLMESSAGE_ACTIONSTART

 

INSTALLMESSAGE_ACTIONDATA

L’enregistrement INSTALLMESSAGE_ACTIONSTART détermine le format de l’enregistrement ActionData.

Champ Description
0 null
1 Nom de l’action. Le nom dans ce champ doit être non null.
2 Description de l’action.
3 Modèle d’action. Il est utilisé pour les ActionData dont le message est mis en forme selon ce modèle.

 

Ne référencez pas le champ 0 dans le message du modèle d’action.

L’enregistrement INSTALLMESSAGE_ACTIONDATA est mis en forme comme suit.

Champ Description
0 null
1 à n Dépend du champ 3 du message ou modèle INSTALLMESSAGE_ACTIONSTART correspondant spécifié dans la table ActionText.

 

Par exemple, l’enregistrement INSTALLMESSAGE_ACTIONSTART.

Champ Type Données
0 string null
1 string MyAction
2 string Il s’agit de la description de « MyAction »
3 string Modèle MyAction : les données du champ 1 sont [1]. Les données du champ 2 sont [2].

 

Le modèle pour INSTALLMESSAGE_ACTIONSTART (champ 3) fait référence aux champs 1 et 2, l’enregistrement INSTALLMESSAGE_ACTIONDATA doit avoir 2 champs contenant les données justifiées. Les champs peuvent être des champs de chaîne ou d’entier.

Enregistrement INSTALLMESSAGE_ACTIONDATA.

Champ Type Données
0 string null
1 int 2
2 string ActionData pour MyAction

 

INSTALLMESSAGE_FILESINUSE

L’enregistrement FILESINUSE est un enregistrement de longueur variable.

Champ Description
0 Ce champ peut contenir la valeur null. Pour une installation utilisant une interface utilisateur de base, ce champ peut spécifier du texte statique à afficher dans le contrôle ListBox de la boîte de dialogue FilesInUse. Pour une installation utilisant une interface utilisateur complète, ce champ n’a aucun effet, car le texte est spécifié par la création de la boîte de dialogue FilesInUse personnalisée.
1 Nom du fichier utilisé.
2 Ce champ identifie le processus contenant le fichier en cours d’utilisation. Windows Installer version 4.0 : L’ID de processus (PID) du processus, ou le titre de la fenêtre du processus.
Windows Installer 3.1 et versions antérieures : Ce champ doit être l’ID de processus (PID) du processus.

 

Par exemple, pour envoyer un message FilesInUse affichant deux fichiers en cours d’utilisation, red.exe et blue.exe, l’enregistrement comporte quatre champs plus le champ 0. Le format de l’enregistrement est celui indiqué dans le tableau suivant. Cet exemple nécessite Windows Installer version 4.0.

Windows Installer 3.1 et versions antérieures : Les champs 2 et 4 de l’exemple suivant doivent contenir les PID des processus contenant red.exe et blue.exe en cours d’utilisation.

Champ Description
0 null
1 Red.exe
2 Titre de la fenêtre rouge
3 Blue.exe
4 Titre de la fenêtre bleue

 

Notes

Sur Windows Installer version 4.0, si le PID transmis à partir du service n’a pas de titre de fenêtre, comme une application de barre d’état système, le fichier n’est pas affiché et le journal détaillé contient les messages suivants.

 

File In Use: -<FileName>- Window could not be found. Process ID: <PID>
No window with title could be found for FilesInUse

INSTALLMESSAGE_RESOLVESOURCE

L’enregistrement INSTALLMESSAGE_RESOLVESOURCE comporte sept champs. Pour qu’INSTALLMESSAGE_RESOLVESOURCE fonctionne correctement, un gestionnaire d’interface utilisateur externe peut ne pas gérer le message INSTALLMESSAGE_RESOLVESOURCE. Windows Installer doit gérer le message INSTALLMESSAGE_RESOLVESOURCE. Autrement dit, le gestionnaire d’interface utilisateur externe retourne 0 pour indiquer « aucune action effectuée » lors du filtrage du message INSTALLMESSAGE_RESOLVESOURCE. La meilleure pratique consiste à éviter d’envoyer un message RESOLVESOURCE.

Champ Description
0 null
1 null
2 Nom du package.
3 Code du produit.
4 Le chemin d’accès relatif, s’il est connu, peut être null.
5 0
6 Indique s’il faut valider le code du package. La valeur « 1 » indique que le code du package doit être validé. La valeur « 0 » indique que le package ne doit pas être validé.
7 Disque requis à partir de la table multimédia. La valeur « 0 » indique que tout disque est acceptable.