
Bei der Installation eines selbst entwickelten Dienstes auf einem Windows Server 2012 R2 ist das System irgendwie in einen Zustand geraten, in dem InstallUtil.exe denkt, dass ein Dienst existiert und gleichzeitig nicht existiert. Auf den Installationsbefehl hin startet der Prozess und wird mit dem folgenden Fehler zurückgesetzt:
System.ComponentModel.Win32Exception: Der angegebene Dienst existiert bereits
Wenn Sie InstallUtil.exe einen Deinstallationsbefehl für genau diese Servicedatei geben, wird der Vorgang letztendlich mit dem folgenden Fehler abgeschlossen:
System.ComponentModel.Win32Exception: Der angegebene Dienst existiert nicht als installierter Dienst
Der Dienst existierte tatsächlich vor meinem Versuch, ihn zu deinstallieren und neu zu installieren, obwohl ich jetzt weder im Powershell-Befehl Get-Service noch in den Assemblydateien oder in der Registrierung Spuren davon finden kann. Ich glaube, dies wurde dadurch ausgelöst, dass sich der Dienstname in der kompilierten Software geändert hat, ohne dass eine vollständige Deinstallation/Neuinstallation durchgeführt wurde (also einfach die ausführbare Datei überschrieben wurde). Meine Frage ist, was kann ich jetzt tun, um das Problem zu diagnostizieren?
Antwort1
Die Ursache wurde gefunden und wie folgt ermittelt: Ein anderer Entwickler hatte versehentlich ein zweites Dienstinstallationsprogramm mit genau demselben Dienstnamen in das Projekt eingefügt. (Er hatte diese Änderung natürlich nicht getestet.) Das Nettoergebnis des Versuchs, zwei Dienste mit genau demselben Namen zu installieren, wurde weder in den Windows- oder Installationsprotokollen noch in der Eingabeaufforderung angezeigt, wenn der Dienst über die Befehlszeile installiert wurde.
Um diese Diagnose zu stellen, hatte ich den Quellcode selbst aufgerufen und den Dienstnamen geändert. Beim Neuaufbau und der Installation wurden der Dienstliste zwei Dienste hinzugefügt.
Antwort2
In meinem Fall stellte sich heraus, dass der eher generische Name „Monitor“, den ich gewählt hatte, tatsächlich schon existierte. Ich dachte mir einen spezifischeren Namen aus und alles funktionierte.