vendredi 25 août 2006
Installer et contrôler un service windows en vb.net
Par Guillaume Hautbois, vendredi 25 août 2006 à 14:49 :: Windows
Voici un petit tutoriel en .net lié à une problématique rencontrée en stage par rapport aux Service Windows.
Le problème
Mon but était de créer un service windows pour une partie d'une application qui est un serveur en attente de réception ou d'envoi de fichier.
La création d'un service windows dans vb.net est simplissime, toutefois son installation semble nettement plus laborieuse lorsque l'on voit les différents tutoriaux sur le sujet.
En effet une fois notre service prêt, on doit ajouter un installeur, en cliquant droit sur la partie "design" de notre service et en sélectionnant "ajouter un installeur". Une fois la configuration effectuée, on peut reconstruire la solution.
Et c'est à partir de ce point la que l'on nous propose seulement une solution en ligne de commande pour installer et désinstaller notre service.
On doit tout d'abord trouver le fichier installUtil.exe, qui est dans c:\windows\Microsoft.net\Framework\"numero de version" puis appeler notre service avec ce programme : installUtil.exe c:\.....\monService.exe.
Pour le désintaller c'est la même commande mais avec installUtil.exe /U
La solution
Et voici venu le temps de la solution cachée, que l'on ne retrouve dans aucun tutoriel mais sur le support de Microsoft (et pas dans le msdn).
Voici l'adresse du lien :
http://support.microsoft.com/default.aspx?scid=kb%3Bfr%3B317421 qui nous détail la procédure permettant la création d'un installeur pour notre service !
Utilisation d'un projet de configuration compilé pour installer le service Windows
Une fois terminées les étapes de la section précédente relative à la configuration du projet de service Windows, procédez comme suit pour ajouter un projet de déploiement qui assemble l'application du service en vue de son installation :| 1. | Pour ajouter un nouveau projet à votre projet LogWriterService, procédez comme suit :
| ||||||||||
| 2. | Pour indiquer au projet de déploiement ce qu'il doit assembler, procédez comme suit :
| ||||||||||
| 3. | Pour que votre installation soit correcte, il vous suffit d'ajouter une sortie principale. Pour ajouter les actions personnalisées, procédez comme suit :
| ||||||||||
| 4. | Les projets de configuration ne sont pas inclus dans la configuration de génération par défaut. Pour générer la solution, procédez comme suit :
| ||||||||||
| 5. | Pour installer le service nouvellement créé, cliquez avec le bouton droit sur ServiceSetup, puis cliquez sur Installer. | ||||||||||
| 6. | Dans la boîte de dialogue ServiceSetup, cliquez trois fois sur Suivant. Remarquez l'apparition d'une barre de progression pendant que le service s'installe. | ||||||||||
| 7. | Une fois le service installé, cliquez sur Fermer. |
Contrôler le service à partir d'un programme externe
C'est le deuxième problème que j'ai rencontré, n'ayant rien trouvé là-dessus non plus, je souhaitais pouvoir démarrer et arrêter mon service à partir de mon application principale.
Il faut ouvrir la fenêtre "exploration de serveurs", puis en déployant notre pc, on peut avoir la liste des services, et en glissant le service dans la zone de "design" de notre application on option alors un "ServiceController", qui est extremement simple à utiliser : ServiceController1.Start()...

Voilà j'espère que ce tutoriel sera utile à de nombreuses personnes qui rencontreront le même problème que moi.