Ich habe einen Service. Ich habe es vor einiger Zeit installiert. Ich muss ein Update für den Dienst durchführen. Ich ging zu den Add / Remove-Programmen und suchte nach meinem Dienst, der dort nicht installiert ist. Ich schaute auf services.msc und es ist dort, gestoppt. Ich konnte es beginnen und es stoppen. Ich habe eine Eingabeaufforderung als Administrator ausgeführt und sc löschte [Dienstname] und erhielt "Der angegebene Dienst existiert nicht als installierter Dienst." Ich habe eine SC-Abfrage in der Eingabeaufforderung durchgeführt, und es wird nicht zurückgegeben. Ich habe mit der rechten Maustaste auf das Installationsprogramm geklickt, auf Deinstallation geklickt und erhalten "Diese Aktion gilt nur für Produkte, die derzeit installiert sind." Ich habe auch versucht, die Reparatur zu machen und habe die gleiche Nachricht bekommen.
Ich habe den Rechner einige Male neu gestartet, und es ist kein Glück, dass dieser Dienst deinstalliert wird. Ich verwende die grundlegende Setup-Projektvorlage, die mit Visual Studio installiert wurde. Ich habe versucht, den Namen des Programms zu ändern und die Versionsnummer zu erhöhen.
Wie deinstalliere ich den scheinbar vorhandenen Dienst und verhindere, dass dies in Zukunft geschieht?
Wenn Sie die .exe mit dem Service-Installationsprogramm verwenden, verwenden Sie InstallUtil.exe /u <process.exe>
InstallUtil.exe wird in \Windows\Microsoft.Net\Framework\v4.0.30319
Fügen Sie im Setup-Projekt Ihren Service in alle benutzerdefinierten Aktionen ein, auch die Deinstallation
(Rechtsklick auf das Projekt, Benutzerdefinierte Aktion)
hth
Mario
** Wenn nur das Setup verwendet werden soll, folgen Sie bitte:
Dies kann durch explizite Implementierung der bestehenden Dienstentfernung (Deinstallation) und anschließende Installation einer neueren Version geschehen. Dafür müssen wir ProjectInstaller.Designer.cs wie folgt aktualisieren:
Fügen Sie am Anfang von InitializeComponent () die folgende Zeile hinzu, die ein Ereignis zum Deinstallieren des vorhandenen Dienstes auslöst, bevor Ihr aktuelles Installationsprogramm versucht, den Dienst erneut zu installieren. Hier deinstallieren wir den Dienst, falls dieser bereits existiert.
Fügen Sie folgende Namespaces hinzu:
%Vor%Fügen Sie die folgende Codezeile wie zuvor beschrieben hinzu:
%Vor%Beispiel:
%Vor%Der unten stehende vom Ereignis aufgerufene Code wird den Dienst dann deinstallieren, wenn er existiert.
%Vor%PS: Zusätzlich zu den oben genannten Änderungen sollten Sie auch die Setup-Version, ProductCode (und optionall UpgradeCode) für eine gute Vorgehensweise, bessere Versionsverwaltung, Verfolgung und Wartung aktualisieren
Es ist völlig normal, dass der Dienst nicht unter "Programme hinzufügen / entfernen" aufgeführt ist. Dieser Eintrag bezieht sich auf Softwarepakete und nicht auf Dienste. (Ein Paket oder Programm kann mehrere Dienste enthalten, installiert aber normalerweise keine.)
Offenbar wurde der Dienst manuell installiert, nicht als Teil des Produkts, selbst wenn dieser normalerweise mit einem Produkt installiert würde, dessen Installationspaket Sie erhalten haben.
Die Verwendung von sc delete
ist korrekt. Sie müssen den (kurzen) Namen des Service in doppelte Anführungszeichen setzen (es sei denn, es handelt sich nur um ein einzelnes Wort), aber nichts anderes.
Wenn dies nicht der Fall ist, besuchen Sie HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
in Ihrer Registrierung, sowohl 32 Bit als auch 64 Bit ( regedt32.exe
bzw. regedit.exe
). Sie können sogar den Dienst dort direkt löschen, aber Sie sollten natürlich mit reversiblen Änderungen beginnen, um zu diagnostizieren, wie Ihr Dienst genau benannt ist und warum sc
seinen Namen nicht sieht und nur den direkten Registrierungszugriff verwendet, nachdem alles andere fehlgeschlagen ist und Sie danach haben Sichern Sie Ihre Registrierung (googlen Sie diese Prozedur nach Angabe Ihres Betriebssystems).
Falls jemand anderes auf dieses Problem stößt:
Was für mich funktionierte, war die Aktualisierung des Namens, der Version und des ProductCode meines Installers. Sollte unbedingt der guten Praxis der Versionierung folgen.
Tags und Links c# windows-services windows visual-studio-2008