web-dev-qa-db-fra.com

Le service Windows n'apparaissant pas dans la liste des services après l'installation

J'ai créé un service Windows en c #, à l'aide de Visual Studio 2008 J'ai plutôt bien suivi ceci: http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

J'ai créé un projet d'installation, comme indiqué dans l'article, et je l'ai exécuté ... Il installe mon service sur c:\programme, fichiers\produit, etc., mais il n'apparaît pas dans la liste des services. ..

Qu'est-ce que je rate?

51
Alex

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

Pour ajouter 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 sur choisissez Actions personnalisées. La douane L'éditeur d'actions apparaît. 

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

3. Double-cliquez sur le dossier de l'application dans la zone de liste pour l'ouvrir, sélectionnez sortie principale de MyNewService (Actif), puis cliquez sur OK. Le primaire la sortie est ajoutée aux quatre nœuds de les actions personnalisées Installer, Valider, Restauration et désinstallation. 

4.Construisez le projet d'installation.

Si vous ignorez ces étapes, votre projet d'installation créera et copiera vos fichiers dans le bon répertoire. cependant, ils n'enregistreront pas votre binaire en tant que service sans ces étapes.


Je devrais également noter que cela fonctionne pour les anciennes versions de Visual Studio qui avaient/avaient le modèle de projet intégré d'installation/de déploiement. Les versions les plus récentes de Visual Studio ont différents projets d’installation/déploiement (certaines nécessitent un logiciel tiers). 

Je vous recommande de regarder dans { WiX Toolset } _ et de vérifier ici s'il y a Installation WiX des services Windows.

101
Nate

Celui-ci m'a appartenu au visage, alors je le mets ici 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 d'installation, assurez-vous que votre classe d'installation est publique. Interne ne fonctionnera pas.

6
xofz

J'ai eu le même problème et ensuite j'ai réalisé que je n'avais jamais défini le parent pour ServiceInstaller.

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

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

serviceInstaller.Parent = this;

et 

serviceProcessInstaller.Parent = this;
5
cbillowes

Lors de l'installation de services, je vous recommande vivement d'utiliser NSSM , qui a bien fonctionné pour moi 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 de ici

  2. Et suivez les instructions ici

Ensuite, vérifiez la liste des services, elle devrait être là, en marche et en marche.

3
Zafar

Suivez ces instructions, ils ont travaillé pour moi. Pour la configuration en particulier, cette partie est vers le bas de l'article.

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

1
Jon Seigel

J'ai découvert que votre classe d'installation était bien 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.

0
kspearrin

Voici un bon tutoriel de tgeek001 de CodeProject.com qui m'a aidé. Il inclut plusieurs choses que je n'ai pas vues dans les publications ci-dessus: 1. 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 afin d’empêcher les défaillances (elles ont corrigé l’erreur 1001 que j’ai rencontrée en suivant les instructions de la réponse acceptée ci-dessus) 3. La liste déroulante des propriétés du service Windows "Supprimer la version précédente" est définie sur true

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

Ce qui suit est tiré du didacticiel relatif aux paramètres d’actions personnalisées (la casse importe):

  • Installer, définissez la propriété Condition comme suit: "NOT (installé ou PREVIOUSVERSIONSINSTALLED)" 
  • Désinstaller, définissez la propriété Condition sur: "NOT UPGRADINGPRODUCTCODE"
  • Commit: définissez le champ "Custom Action Data" sur:/OldProductCode = "[PREVIOUSVERSIONSINSTALLED]"

Enfin, dans le projet WinService, veillez à définir le menu déroulant "Supprimer les versions précédentes" sur true.

à votre santé

0
sondlerd

Dans Visual Studio 2013, j'ai rencontré le même problème en utilisant un modèle InstallShield pour une 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, lancez cette installation et démarrez votre Studio, cela fonctionnera.

Dunn. 

0
Dung