Service Windows n’apparaissant pas dans la liste des services après l’installation

J’ai créé un service Windows dans c #, en utilisant Visual Studio 2008 J’ai suivi à peu près ceci: http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

J’ai créé un projet d’installation, comme indiqué dans l’article, et l’ai exécuté … il installe mon service sur c: \ program files \ product etc …. cependant, il n’apparaît pas dans la liste des services.

Qu’est-ce que je rate?

La partie la plus importante de l’article que vous avez lié est ici

Pour append une action personnalisée au projet d’installation

1.Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet d’installation, pointez sur Afficher, puis choisissez Actions personnalisées. L’éditeur d’actions personnalisées apparaît.

2.Dans l’éditeur d’actions personnalisées, cliquez avec le bouton droit sur le nœud Actions personnalisées et choisissez Ajouter une action personnalisée. La boîte de dialog Sélectionner un élément dans le projet apparaît.

3.Double-cliquez sur le dossier de l’application dans la zone de liste pour l’ouvrir, sélectionnez la sortie principale de MyNewService (Active), puis cliquez sur OK. La sortie principale est ajoutée aux quatre nœuds des actions personnalisées Installer, Valider, Restaurer et Désinstaller.

4. Construisez le projet d’installation.

Si vous ignorez ces étapes, votre projet d’installation générera et copiera vos fichiers dans le bon répertoire. Cependant, ils ne vont pas enregistrer votre fichier binary en tant que service sans ces étapes.


Je dois également noter que cela fonctionne pour les anciennes versions de Visual Studio qui ont / ont intégré le modèle de projet Setup / Deployment intégré. Les nouvelles versions de Visual Studio ont des projets de configuration / déploiement différents (certains nécessitant un logiciel tiers).

Je recommande de regarder dans WiX Toolset et de vérifier ici l’ installation WiX des services Windows.

Je suis devenu propriétaire de celui-ci, alors je le mets ici juste au cas où quelqu’un d’autre le rencontrerait.

Si vous avez suivi les instructions dans les guides mais que vous rencontrez toujours des problèmes lors de l’installation, assurez-vous que votre classe d’installation est publique. Interne ne fonctionnera pas.

J’ai eu le même problème et j’ai alors réalisé que je ne définissais jamais le parent pour le ServiceInstaller.

Double-cliquez sur votre installateur de projet. Le concepteur doit afficher un installateur de services et un installateur de processus. Lorsque vous cliquez sur et que vous affichez les propriétés, vous devez noter l’atsortingbut Parent qui doit être défini sur le nom de la classe du programme d’installation du projet.

Ou, si vous le faites en code, assurez-vous de définir:

 serviceInstaller.Parent = this; 

et

 serviceProcessInstaller.Parent = this; 

Lors de l’installation des services, je vous recommande fortement d’utiliser NSSM , qui a bien fonctionné pour tous mes besoins WinService. Il peut installer n’importe quel exécutable (même si .bat, .cmd) en tant que service et garantit que votre service est toujours opérationnel.

Pour utiliser cet outil:

  1. Télécharger ici

  2. Et suivez les instructions ici

Ensuite, vérifiez la liste des services, il devrait être là, en place et en cours d’exécution.

Suivez ces instructions, ils ont travaillé pour moi. Pour la configuration en particulier, cette partie est près du bas de l’article.

MSDN: Procédure pas à pas: création d’un service Windows

Dans Visual Studio 2013, j’ai rencontré le même problème en utilisant le modèle InstallShield pour l’application de service. Mais cela fonctionne comme un charme lorsque vous utilisez le modèle de projet d’installation https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

alors téléchargez le modèle de projet d’installation fermez votre studio, exécutez cette installation et démarrez votre studio, cela fonctionnera.

Dunn.

Voici un bon tutoriel de tgeek001 de CodeProject.com qui m’a aidé. Il inclut plusieurs éléments que je ne voyais pas dans les publications ci-dessus: 1. Le code du gestionnaire d’événements pour arrêter le service avant de le désinstaller 2. Conditions et propriétés spécifiques dans le code Actions personnalisées à définir pour éviter les échecs que j’ai expérimenté en suivant les instructions dans la réponse acceptée ci-dessus) 3. Propriété du service Win “Supprimer la version précédente” définie sur true

http://www.codeproject.com/Tips/575177/Window-Service-Deployment-using-VS

Ce qui suit provient du didacticiel sur les parameters d’actions personnalisées (cas particuliers):

  • Installer, définissez la propriété Condition comme suit: “NOT (Installed ou PREVIOUSVERSIONSINSTALLED)”
  • Désinstaller, définissez la propriété Condition sur: “NOT UPGRADINGPRODUCTCODE”
  • Valider: définissez le champ “Données d’action personnalisée” sur: / OldProductCode = “[PREVIOUSVERSIONSINSTALLED]”

Enfin, dans le projet WinService, veillez à définir la liste déroulante “Supprimer les versions précédentes” sur true.

à votre santé

J’ai découvert que la classe de votre installateur se trouvait dans le même projet que le service. Le programme d’installation ne peut pas exister dans un projet de bibliothèque référencé par le service.