2013-08-28 7 views
33

Wenn ich versuche, einen Windows-Dienst zu installieren:Windows Service installieren Ends in Rollback

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

ich, was aussieht, einige Erfolgsmeldungen und einige Fehlermeldungen. Teil Weg nach unten:

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

Am Ende:

The Rollback phase completed successfully. 

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

Der Dienst wird einen Eintrag in dem Applet Dienst gegeben, aber es wird markiert als „Deaktiviert“. Wenn ich versuche, es in einen anderen Zustand zu ändern, bekomme ich eine Fehlermeldung "zum Löschen markiert".

Das Ereignisprotokoll enthält keine Nachrichten. In der Protokolldatei, die von installutil.exe erstellt wurde, gibt es nichts nützliches (ich glaube, es wird in das aktuelle Arbeitsverzeichnis geschrieben).

Ich habe keine Richtung, um damit zu gehen. Was mache ich?

+0

möglich Duplikat von [Wie zu erzwingen Deinstallation of windows service] (http://stackoverflow.com/questions/225275/how-to-force-uninstallation-of-windows-service) – participant

Antwort

77

Es stellt sich heraus, dass die Installation möglicherweise fehlschlägt oder wahrscheinlich ausfallen wird, wenn dieser Dienst im Applet Dienste hervorgehoben wird. Am sichersten ist es, das Applet "Dienste" zu schließen, den Dienst zu installieren und dann das Applet "Dienste" erneut zu öffnen. Es ist wirklich dumm.

Stellen Sie außerdem sicher, dass die Konsole als Administrator ausgeführt wird.

+0

Dieses verdammte Applet nervt wirklich so, wie es immer im Weg steht. – ProfK

+2

hat mich so einen Kopfweh gerettet diesen Kommentar zu lesen! Vielen Dank! –

+0

In meinem Fall hatte das Applet den Dienst nicht markiert und war nicht einmal auf die Registerkarte Dienste fokussiert - es war in der Ereignisanzeige. Willkommen in der wunderbaren Welt der irreführenden und verwirrenden Fehlermeldungen von Microsoft, denke ich? – ajeh

7

Ich erlebte das gleiche und das Problem für mich war, dass ein Dienst mit dem gleichen Namen bereits installiert war. Um den neuen Dienst zu installieren, musste ich die älteren Dienste deinstallieren. Ich lerne, wie ich Windows-Dienste und damit die Namenskonflikte erstellen und einrichten kann. Versucht, den Dienst zuerst durch Deinstallation:

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

Sobald diese Anweisung erfolgreich ausgeführt wird, installieren Sie Ihren Service und es sollte ohne Rollbacks gelingen.

+0

Wenn ich mich richtig erinnere, hatte ich den Dienst bereits deinstalliert, aber er war im Applet Dienste markiert geblieben. –

+0

@DustinOprea Wenn der Dienst erfolgreich deinstalliert wurde, sollte er nicht in der Liste der Dienste angezeigt werden, die im Fenster "services.msc" angezeigt werden. – Sarah

+0

In diesem Fenster gibt es eine "Aktualisierungs" -Aktion, aus einem bestimmten Grund. Es war jedoch nicht so einfach. Wie ich bereits erwähnt habe, ist es lange genug, dass ich keine weiteren Erkenntnisse mehr dazu liefern kann. –

0

Fügen Sie einige weitere Checks und Punkte hinzu, um dieses Problem zu lösen.

  1. Build Service im Release-Modus und nehmen Sie Ordner-Dateien freigeben und befinden sich in anderen Pfad
  2. kopieren diesen Weg und gehen Sie zu Visual Studio Eingabeaufforderung, und führen Sie diesen Balg Beispielbefehl, den Dienst zu installieren.
  3. Bitte services.msc Fenster schließen, wenn seine geöffnet, dann führen Sie C: Program Files (x86) \ Microsoft Visual Studio 11.0> InstallUtil.exe C: \ RunLocationServices \ TestService.exe
  4. Go services.msc ein und wählen Sie diesen Dienst und klicken Sie auf Start, wenn es zu "gestartet" geändert wurde, dann läuft Ihr Dienst gut.

Dennoch, wenn Problem besteht dann Ein weiterer Checkpoint & SOLUTION Wenn ein Dienst gestartet wird, der Dienst an den Service Control Manager kommuniziert, wie lange der Dienst starten muss haben (die Zeitlimit für den Dienst) . Wenn der Service Control Manager innerhalb dieses Timeout-Zeitraums keine Nachricht "Dienst gestartet" vom Dienst erhält, beendet der Dienststeuerungs-Manager den Prozess, der den Dienst hostet, . Dieses Zeitlimit beträgt normalerweise weniger als 30 Sekunden. Wenn Sie dieses Zeitlimit nicht anpassen, beendet der Dienststeuerungs-Manager den Prozess. Gehen Sie folgendermaßen vor, um diese Zeitüberschreitungsperiode anzupassen: 1. Gehen Sie zu Start> Ausführen> und geben Sie regedit 2. Navigieren Sie zu: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control Klicken Sie mit der Auswahl des Steuerungsordners mit der rechten Maustaste in den Fensterbereich auf der rechten Seite und wählen Sie neue DWORD-Wert 3.Name die neuen DWORD: ServicesPipeTimeout 4.Right Sie auf ServicesPipeTimeout, und klicken Sie dann auf Ändern klicken Sie auf Dezimal, geben Sie ‚180000‘, und klicken Sie dann auf OK 5.Restart der Computer

Immer noch, wenn Problem besteht dann Problem in Ihrem Service-Code, Infinate-Schleife kann aufgrund Ihrer Methoden/Klassen von Service-Aufruf auftreten. Machen Sie eine Code-Überprüfung jeder Zeile.

1

Manchmal geschieht dies aufgrund von Berechtigungsproblemen. Führen Sie die "Entwickler-Eingabeaufforderung für VS 2012" als Administrator aus. Dann wird es funktionieren.

+0

Es machte keinen Unterschied. Etwas zu brechen, einfach weil etwas anderes hervorgehoben ist, ist ein Anwendungsfehler, kein Berechtigungsproblem. –

0

Dieses Problem ist auf Sicherheit, Sie sollten besser offene Entwickler-Eingabeaufforderung für VS 2012:

Run as administrator

und Ihren Dienst installieren. Es wird sicherlich Ihr Problem beheben.

Ich versuchte und das Problem wurde behoben.

0

Rechtsklick auf Eingabeaufforderung und wählen Sie Als Administrator ausführen
Dann kopieren und einfügen in: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe C:\TestService\bin\Debug\TestService.exe

Ergebnis in TestService.InstallLog ist:

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