Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
![]() |
Auteur : Eric Vernié relation technique développeurs Lorsque vous achetez un nouveau logiciel ou un nouveau périphérique, ce que vous souhaitez, c’est que cela fonctionne immédiatement, et il n’y a rien de plus frustrant lorsque ce n’est pas le cas. Le problème est peut-être bénin, mais les heures à essayer de le dépanner peuvent s’enchaîner à un rythme effréné, surtout si vous n’êtes pas à la pointe de la technique (ce que je ne pense pas puisque vous lisez Programmez), ou que les utilisateurs de votre logiciel ne sont que des utilisateurs et non pas des informaticiens. Imaginez un système qui pourrait chercher, trouver et réparer automatiquement ce type d’erreurs bénignes ? Imaginez les heures de support et de maintenance gagnées si un tel système existait ? C’est dans cette voie que s’engage Microsoft Windows 7 avec sa nouvelle plate-forme de Résolution de problème (Windows Troubleshooting Pack). |
Sommaire de l'article
|
|
Lorsque vous achetez un nouveau logiciel ou un nouveau périphérique, ce que vous souhaitez, c’est que cela fonctionne immédiatement, et il n’y a rien de plus frustrant lorsque ce n’est pas le cas.
Le problème est peut-être bénin, mais les heures à essayer de le dépanner peuvent s’enchaîner à un rythme effréné, surtout si vous n’êtes pas à la pointe de la technique (ce que je ne pense pas puisque vous lisez Programmez), ou que les utilisateurs de votre logiciel ne sont que des utilisateurs et non pas des informaticiens.
Imaginez un système qui pourrait chercher, trouver et réparer automatiquement ce type d’erreurs bénignes ?
Imaginez les heures de support et de maintenance gagnées si un tel système existait ?
C’est dans cette voie que s’engage Microsoft Windows 7 avec sa nouvelle plate-forme de Résolution de problème (Windows Troubleshooting Pack).
Prenons un exemple concret. Je souhaite naviguer avec Internet Explorer sur le site https://msdn.microsoft.com, mais je reçois à la place une belle page d’erreur comme sur la figure suivante :
|
![]() |
Manifestement j’ai un problème de connexion, mais en tant qu’utilisateur novice, je ne sais pas comment y remédier. Avant Windows 7, j’aurais tout simplement pris mon téléphone et contacté mon service informatique interne. Avec Windows 7, je clique sur le bouton Diagnostique les problèmes de connexion. Le système de résolution des problèmes se met en route
|
![]() |
Et trouve dans un 1er temps que l’accès physique à ma carte Wifi n’est pas possible et que pour résoudre mon problème il suffirait de basculer l’interrupteur pour la rendre active. En le faisant cela résout le problème de connexion, mais je décide pour notre démonstration, d’ignorer cette étape et de continuer à essayer de résoudre le problème. A cette étape, le système de résolution a trouvé que ma connexion réseau Ethernet n’est pas active, mais qu’il a besoin de privilèges administrateur pour tenter de le résoudre. (Je dis bien tenter car il n’y a en informatique pas de garantie à 100%)
|
![]() |
Je clique alors sur Essayez ces réparations en tant qu’administrateur La vérification et la résolution automatique des problèmes démarrent
|
![]() |
Si tout se passe correctement le système de résolution des problèmes affiche le statut suivant :
|
![]() |
Il a détecté mais pas corrigé que la carte Wi-Fi n’est pas activée, et a résolu automatiquement le problème de connexion réseau.
En fermant, le système de résolution des problèmes, Internet Explorer peut alors atteindre cette fois-ci le site msdn.microsoft.com .
Si vous êtes curieux de nature et que vous possédez Windows 7, je ne peux que vous encourager à aller voir le centre de résolution des problèmes.
1. Activez le panneau de configuration
2. Dans la boite de recherche en haut à droite tapez résolution
3. Dans la liste des résultats choisissez Résolution des problèmes
|
![]() |
4. Vous aurez alors accès à différents Assistants de résolution de problèmes.
|
![]() |
.png)
Développer son propre assistant de dépannage
Tout ce que je viens de vous montrer se trouve en standard dans Windows 7 pour des fonctionnalités de bases liées au système d’exploitation.
La question qui se pose alors est :
En tant que développeur de logiciel puis-je fournir ce type de fonctionnalité avec mes logiciels ?
La réponse est bien évidement oui, et surtout Microsoft le préconise comme étant une bonne pratique, source d’une nouvelle efficacité.
Je ne vais pas rentrer trop dans les détails dans cet article, mais voici ce qu’il faut retenir :
Un assistant de résolution de problèmes (Troubleshooting Pack en anglais) est constitué :
· D’un manifeste de métadonnées, sous forme de fichier XML, d’écrivant de quoi est constitué l’assistant
· D’un script de détection des problèmes
· D’un script de résolution des problèmes
· D’un script de vérification des problèmes
· Et optionnellement de ressources localisées dans la langue de votre choix
Il est possible de créer le fichier manifeste XML avec l’outil TSPDesigner.exe que l’on trouve dans le Kit de développement Windows 7.
· La première chose à faire est de créer un nouveau projet, ici nous créons un assistant de dépannage pour une application WPF qui se connecte à une base de données SQL Serveur. Cet assistant nous permettra de résoudre les problèmes de connexion au Serveur SQL
|
![]() |
· Un problème est défini par sa cause (Root Cause). Ici notre cause est la non disponibilité du Service SQL Serveur. Notez l’identification de la cause DetectServiceSQL, que nous réutiliserons par la suite.
|
![]() |
· Nous allons définir le dépanneur (troubleshooter) qui aura pour tâche de lancer un script PowerShell qui devra detecter si le service SQL Serveur est démarré ou pas.
|
![]() |
· Puis nous allons configurer le resolveur indiquant dans notre exemple, qu’il va tenter de démarrer le service SQL Serveur.
|
![]() |
· Puis nous informons avec le vérificateur le système de dépannage, de relancer le dépanneur pour vérifier que la cause du problème est résolue.
|
![]() |
· Enfin, l’élément scripts permet de déterminer quels scripts seront exécutés pour le dépanneur et le Résolveur de problèmes.
|
![]() |
· Une fois nos métadonnées, configurées, il faut créer les scripts PowerShell de détection. En cliquant soit sur Edit TroubleShooter Script et Edit Resover Script, cela lance l’interface de programmation de scripts PowerShell, Windows PowerShell ISE, comme sur la figure suivante :
|
![]() |
· Exemple de dépanneur : Détecte si le serveur SQL est lancé
|
![]() |
· **Exemple de résolveur : Démarre le service SQLExpress
**C’est à vous de jouer maintenant et d’utiliser la puissance de PowerShell pour créer vos propres Scripts.
Néanmoins ce qu’il faut savoir, c’est qu’il existe certaines CmdLet PowerShell qui permettent de dialoguer directement avec le système de résolution des problèmes tels que nous utilisons ici.
Write-DiagProcess qui permet d’écrire un message dans la fenêtre du résolveur, et update-diagrootcause, qui lui indique si le problème est détecté.
- Ici nous testons avec une commande WMI si le service SQLExpress est lancé.
$SQlServeur=get-wmiobject win32_service | where-object {$_.Name -like "*MSSQL*SQLEXPRESS*"}
- Si il n’est pas lancé, la cause du problème est détecté, donc on en informe le système à l’aide de la CmdLet :
update-diagrootcause -id $RootCauseId -detected $RootCauseDetected
A noter ici que cette CmdLet, a comme identifiant DetectServiceSql le même identifiant que nous avons indiqué lors de la création de la cause du problème.
la CmdLet Get-DiagInput qui permet de récupérer les entrées utilisateurs
· Une fois les scripts définis, on va compiler et tester notre assistant à l’aide de l’outil TSPDesigner.exe
|
![]() |
Remarque :
En mode débogage de scripts (par opposition à un déploiement en production), il faut permettre au système d’exécuter des scripts non signés.
Pour ce faire on ouvre une session PowerShell en mode administrateur et on exécute les commandes suivantes :
set-executionPolicy RemoteSigned, puis le script PowerShell suivant :
C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\TSPDesigner\TestModeSetup.ps1
· Exécution de l’assistant de résolution de problème.
La compilation de l’assistant créé un répertoire \output, avec les scripts PowerShell associés, un fichier ayant pour extension .DIAGPKG et un fichier compressé de type cabinet .DIAGCAB
Il est alors possible pour lancer l’assistant de double-cliquer sur fichier .DIAGPKG ou .DIAGCAB, ou alors d’exécuter la commande Run de l’outil TSPDesigner.exe.
Mais une fois que votre assistant est mis au point, l’une des possibilités est de l’activer directement dans votre application.
· Dans notre exemple, nous avons une application WPF qui se connecte à une base de données.
|
![]() |
· En cliquant sur Oui notre assistant démarre.
|
![]() |
· Puis en cliquant sur Suivant, l’assistant détecte que le service SQL n’est pas démarré, et propose alors de résoudre automatiquement le problème
|
![]() |
· En appliquant la correction, il est alors possible d’interagir (optionnel) avec l’utilisateur en lui proposant de charger de nouveau l’application directement à partir de l’assistant.
|
![]() |
· Enfin, l’assistant affiche un état de la résolution, c’est le vérificateur qui est alors exécuté.
|
![]() |
Bien évidemment, il est possible d’enchainer dans un seul assistant, plusieurs recherches et résolution de problèmes.
Conclusion
L’assistant de résolution de problèmes dans Windows 7, n’est pas la fonctionnalité la plus en vue, mais elle permettra sans aucun doute si vous l’adopter, d’ajouter de la valeur à vos applications, en proposant à l’utilisateur, une démarche simple et efficace de résolution de problèmes courants.
Non seulement la perception de l’utilisateur changera, mais vous gagnerez également en temps et en efficacité.
.jpg)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)