web-dev-qa-db-fra.com

L'installation du service Windows prend fin en restauration

Lorsque j'essaie d'installer un service Windows:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil 

Je reçois ce qui semble être des messages de réussite et des messages d'échec. À mi-chemin:

An exception occurred during the Install phase.
System.ComponentModel.Win32Exception: The specified service has been marked for deletion

À la fin:

The Rollback phase completed successfully.

The transacted install has completed.
The installation failed, and the rollback has been performed.

Le service reçoit une entrée dans l'applet Services, mais il est marqué comme "Désactivé". Lorsque je tente de le changer pour un autre état, un message d'erreur "marqué pour suppression" s'affiche.

Il n'y a aucun message dans le journal des événements. Il n'y a rien d'utile dans le fichier journal créé par installutil.exe (je crois qu'il est écrit dans le répertoire de travail actuel).

Je n'ai aucune direction pour aller avec cela. Que fais-je?

37
Dustin Oprea

Il s'avère que l'installation peut échouer ou échouera probablement si ce service est mis en surbrillance dans l'applet Services. Il est plus sûr de simplement fermer l'applet Services, d'installer le service, puis de rouvrir l'applet Services. C'est vraiment stupide.

Assurez-vous également d’exécuter la console en tant qu’administrateur.

81
Dustin Oprea

J'ai vécu la même chose et le problème pour moi était qu'un service du même nom était déjà installé. Donc, pour installer le nouveau service, je devais désinstaller les anciens services. J'apprends à créer et configurer des services Windows et donc à nommer en conflit. Essayé de désinstaller le service d'abord par:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil -u servicename.exe

Une fois que cette instruction est exécutée avec succès, installez votre service et il devrait réussir sans aucune annulation.

8
Sarah

Parfois, cela se produit en raison de problèmes d'autorisation . Exécutez l'invite de commande "Développeur pour VS 2012" en tant qu'administrateur . Ensuite, cela fonctionnera.

1

Faites un clic droit sur Invite de commande et choisissez EXÉCUTER EN TANT QU'ADMINISTRATEUR
Ensuite, copiez et collez: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe C:\TestService\bin\Debug\TestService.exe

Le résultat dans TestService.InstallLog est:

Installing service TestService...
Service TestService has been successfully installed.
1

Ce problème est dû à la sécurité, vous devriez ouvrir la commande de développeur Prompt for VS 2012: 

EXÉCUTER EN TANT QU'ADMINISTRATEUR

et installez votre service. Cela résoudra sûrement votre problème.

J'ai essayé et le problème a été résolu.

0
Ankur Kumar

Ajoutant quelques vérifications et points supplémentaires pour résoudre ce problème ci-dessus.

  1. Construire le service en mode édition et prendre les fichiers du dossier d'édition et les conserver dans des chemins différents
  2. Copiez ce chemin et accédez à la fenêtre Invite de commande de visual studio et exécutez cet exemple de commande ci-dessous pour installer le service.
  3. Fermez la fenêtre services.msc si elle est ouverte, puis exécutez C: Program Files (x86)\Microsoft Visual Studio 11.0> InstallUtil.exe C:\RunLocationServices\TestService.exe
  4. Allez à services.msc et sélectionnez ce service, puis cliquez sur démarrer. S'il est remplacé par "démarré", votre service fonctionne correctement.

Toujours si le problème existe, alors Un autre point de contrôle et solution Lorsqu'un service démarre, le service indique au service control manager combien de temps le service doit avoir pour démarrer (délai d'attente du service) . Si Service Control Manager ne reçoit pas d'avis du service lancé par le service dans le délai imparti, le Gestionnaire de contrôle de service met fin au processus qui héberge le service. Ce délai est généralement inférieur à 30 secondes. Si vous ne réglez pas ce délai, Service Control Manager met fin au processus. Pour régler ce délai, procédez comme suit: 1. Allez à Démarrer> Exécuter> et tapez regedit 2. Accédez à: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control Avec le dossier de contrôle sélectionné, Cliquez avec le bouton droit de la souris sur le volet de droite et sélectionnez une nouvelle valeur DWORD3.Nomlez le nouveau DWORD: ServicesPipeTimeout 4. Cliquez avec le bouton droit de la souris sur ServicesPipeTimeout, puis cliquez sur Modifier. Cliquez sur Décimale, tapez '180000', puis cliquez sur OK 5. Redémarrez l'ordinateur.

Toujours si le problème existe, le problème dans votre code de service , boucle infinie peut se produire en raison de vos méthodes/classes de service appelant. Révisez le code de chaque ligne.

0
DJ21