2009-10-13 3 views
45

J'ai créé un service Windows en C#, en utilisant Visual Studio 2008 je assez bien suivi ceci: http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspxservice Windows ne figurant pas dans la liste des services après l'installation

J'ai créé un projet d'installation, comme indiqué dans le article, et l'a couru ... il installe mon service à c: \ program files \ produit etc ... mais il n'apparaît pas alors dans la liste des services ..

Que manque-t-il?

+0

Difficile à deviner sans plus d'informations. Si vous avez tout fait comme décrit dans l'article et installé le service, il devrait être disponible. – Foxfire

+0

Avez-vous essayé d'actualiser la console de services? La liste dans la console ne se met pas à jour automatiquement. Si vous avez déjà ouvert la console lors de l'installation de votre service, essayez de l'actualiser (ou de le redémarrer). –

Répondre

90

La partie la plus importante de l'article que vous LIÉ, est ici

Pour ajouter une action personnalisée au projet d'installation

1.In Solution Explorer, Cliquez avec le bouton droit sur le projet d'installation, pointez sur Afficher, puis choisissez Actions personnalisées. L'éditeur d'actions personnalisé apparaît.

2.Dans l'éditeur 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 dialogue Sélectionner un élément dans le projet s'affiche.

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. La sortie principale est ajoutée aux quatre nœuds de les actions personnalisées Installer, Valider, Restauration et Désinstallation.

4.Créez le projet d'installation.

Si vous sautez ces étapes, votre projet d'installation va construire et copier vos fichiers dans le répertoire approprié; cependant, ils n'enregistreront pas votre binaire en tant que service sans ces étapes.


Il faut aussi noter que cela fonctionne pour les anciennes versions de Visual Studio qui a/ont intégré dans le programme d'installation/modèle de projet de déploiement. Les nouvelles versions de Visual Studio ont des projets de configuration/déploiement (certains nécessitant des logiciels tiers.)

Je conseille de regarder dans WiX Toolset et vérifier ici pour WiX Installation of Windows Services.

+0

Y a-t-il un moyen de démarrer le service dans le cadre de l'installation? Je sais que vous pouvez configurer StartType sur Automatique, mais cela ne démarre le service qu'après un redémarrage. –

+0

Merci beaucoup @Nate. Alors que je suivais vos instructions, il me revenait que c'était ce que je devais faire la dernière fois. –

+0

Spot sur! Merci, ça m'a aidé – Srini

4

Je me suis possédais au visage par celui-ci, donc je le mets ici juste au cas où quelqu'un d'autre s'y heurte.

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

+0

Oh mec, merci. Je pense que c'est juste fou! Je me suis senti arrogant et j'ai pensé "mec, c'est juste un installateur - pourquoi s'embêter à rendre le classeur public?" et supprimé sans même penser - boom, question a été soulevée. – Alexandru

5

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

Double-cliquez sur le programme d'installation de votre projet. Le concepteur doit montrer un installateur de service et un installateur de processus. Lorsque vous cliquez sur 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 de projet.

Ou, si vous le faites dans le code, assurez-vous que vous définissez:

serviceInstaller.Parent = this; 

et

serviceProcessInstaller.Parent = this; 
+0

Merci! celui-ci m'a beaucoup aidé – amaters

3

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

  2. Et suivez les instructions here

Ensuite, vérifiez la liste des services, il devrait être là,, et fonctionnement.

0

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

donc télécharger le programme d'installation modèle de projet fermez votre Studio, exécutez cette installation et démarrez votre Studio, cela fonctionnera.

Dunn.

0

Voici un bon tutoriel de tgeek001 de CodeProject.com qui m'a aidé. Il contient plusieurs éléments que je n'ai pas vus dans les messages 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 pour éviter les échecs erreur 1001 que j'ai vécu en suivant les instructions de la réponse acceptée ci-dessus) 3. Gagnez de propriété service « Supprimer la version précédente » déroulante à true

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

ce qui suit est du tutoriel pour des actions personnalisées Paramètres (cas):

  • Installer, définissez la propriété Condition à ce qui suit:
  • "NOT (installé ou PREVIOUSVERSIONSINSTALLED)" Désinstaller, définissez la propriété Condition à champ set "Données de l'action personnalisée" à: "PAS UPGRADINGPRODUCTCODE"
  • COMMIT/OldProductCode = "[PREVIOUSVERSIONSINSTALLED]"

Enfin, dans le projet WinService, assurez-vous de définir le menu déroulant "Supprimer les versions précédentes" à true.

acclamations

0

j'ai découvert que votre classe d'installation bien être 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.

Questions connexes