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);
Où 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. |