Partager via


Débogage d’actions personnalisées

Vous pouvez déboguer des actions personnalisées basées sur des bibliothèques de liens dynamiques à l’aide des outils de débogage pour Windows. Il n’est pas possible d’utiliser le débogage dynamique avec des actions personnalisées basées sur des fichiers exécutables ou des scripts.

Les techniques décrites dans cette section peuvent vous aider à déboguer des actions personnalisées Windows Installer. Pour plus d’informations, consultez la section Outils de développement de pilotes du Kit de pilotes Windows (WDK) sur Outils de débogage pour Windows.

Windows Installer utilise la variable d’environnement MsiBreak pour déterminer l’action personnalisée à déboguer. Si vous avez accès au code source de l’action personnalisée, vous pourrez peut-être utiliser le débogage sans MsiBreak. Pour démarrer le débogage sans MsiBreak, placez une boîte de message temporaire au début du code de l’action. Lorsque la zone de message s’affiche pendant l’installation, joignez le débogueur au processus propriétaire de la boîte de message. Vous pouvez ensuite définir tous les points d’arrêt nécessaires et ignorer la boîte de message pour reprendre l’exécution. Il n’est pas possible de déboguer les parties antérieures de l’action personnalisée par cette méthode.

Pour utiliser la variable d’environnement MsiBreak pour déboguer l’action personnalisée, définissez MsiBreak sur le nom de l’action personnalisée dans la Table CustomAction. MsiBreak peut être une variable d’environnement système ou utilisateur. Si la variable est définie en tant que variable système, un redémarrage du système peut être nécessaire lorsque la valeur est modifiée pour détecter la nouvelle valeur.

Pour utiliser la variable d’environnement MsiBreak afin de déboguer une interface utilisateur incorporée, définissez la valeur de MsiBreak sur MsiEmbeddedUI.

Windows Installer vérifie uniquement la variable d’environnement MsiBreak si l’utilisateur est un administrateur. Le programme d’installation ignore la valeur de MsiBreak si l’utilisateur n’est pas un administrateur, même s’il s’agit d’une application managée.

Si vous déboguez une action personnalisée qui s’exécute avec des privilèges élevés (système) dans la séquence d’exécution, attachez le débogueur au service Windows Installer. Lors du débogage d’une action personnalisée qui s’exécute avec des privilèges empruntés dans la séquence d’exécution, le système affiche une boîte de dialogue qui indique quel processus doit être débogué. Une boîte de dialogue indique à l'utilisateur le processus à déboguer. Pour plus d’informations sur les actions personnalisées élevées, consultez Sécurité des actions personnalisées.

Une fois que le débogueur a été attaché au processus correct, le programme d’installation déclenche un point d’arrêt du débogueur immédiatement avant d’appeler le point d’entrée de la DLL. Au point d’arrêt, votre DLL est déjà chargée dans le processus et l’adresse du point d’entrée est déterminée. Si votre DLL d’action personnalisée n’a pas pu être chargée ou si le point d’entrée de l’action personnalisée n’existait pas, aucun point d’arrêt n’est déclenché. Étant donné que le point d’arrêt est déclenché avant d’appeler la fonction DLL, une fois déclenché, vous devez utiliser votre débogueur pour continuer jusqu’à ce que votre point d’entrée d’action personnalisée soit appelé. Vous pouvez également définir un point d’arrêt n’importe où dans votre action personnalisée et reprendre l’exécution normale.

Windows Installer exécute des DLL qui ne sont pas stockées dans la Table binaire directement à partir de l’emplacement de la DLL. Le programme d’installation ne connaît pas le nom d’origine d’une DLL stockée dans la table binaire et exécute l’action personnalisée DLL sous un nom de fichier temporaire. La forme du nom de fichier temporaire est MSI?????. TMP. Sur Windows XP, ce fichier temporaire est stocké dans un emplacement sécurisé, généralement <WindowFolder>\Installer.

Notez que de nombreuses DLL créées pour le débogage contiennent le nom et le chemin du fichier PDB correspondant dans le cadre de la DLL elle-même. Lors du débogage de ce type de DLL sur un système où le PDB se trouve à l’emplacement stocké dans la DLL, les symboles peuvent être chargés automatiquement par l’outil débogueur. Dans les situations où le PDB est introuvable à l’emplacement stocké, où le débogueur n’accepte pas le chargement de symboles à partir de l’emplacement stocké, ou quand la DLL n’a pas été générée avec des informations de débogage, vous devrez peut-être placer vos fichiers de symboles dans le dossier contenant le fichier DLL temporaire.

Le programme d’installation ajoute des informations de débogage pour les scripts d’action personnalisés au fichier journal d’installation.

There is a problem with this Windows Installer package. A script 
required for this install to complete could not be run. Contact your 
support personnel or package vendor.  {Custom action [2] script error 
[3], [4]: [5] Line [6], Column [7], [8] }