webentwicklung-frage-antwort-db.com.de

Der Windows-Dienst wird nach der Installation nicht in der Diensteliste angezeigt

Ich habe in c # einen Windows-Dienst mit Visual Studio 2008 erstellt Ich folgte diesem Beispiel ziemlich genau: http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

Ich habe ein Setup-Projekt erstellt, wie in dem Artikel beschrieben, und es ausgeführt ....... es installiert meinen Dienst unter c:\program files\product etc .... er erscheint jedoch nicht in der Diensteliste ..

Was vermisse ich?

51
Alex

Der wichtigste Teil des Artikels, den Sie verlinkt haben, ist hier

So fügen Sie dem Setup-Projekt eine benutzerdefinierte Aktion hinzu

1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Setup-Projekt, zeigen Sie auf Ansicht, und zeigen Sie dann Wählen Sie Benutzerdefinierte Aktionen. Der Brauch Der Aktionseditor wird angezeigt. 

2.Klicken Sie im Editor für benutzerdefinierte Aktionen mit der rechten Maustaste auf den Knoten Benutzerdefinierte Aktionen und wählen Sie Benutzerdefinierte Aktion hinzufügen. Das Wählen Sie Element im Projektdialogfeld aus erscheint. 

3. Doppelklicken Sie auf den Anwendungsordner im Listenfeld, um ihn zu öffnen, und wählen Sie .__ aus. primäre Ausgabe von MyNewService (Aktiv) und klicken Sie auf OK. Die primäre Die Ausgabe wird zu allen vier Knoten von .__ hinzugefügt. die benutzerdefinierten Aktionen Installieren, Übernehmen, Rollback und Deinstallieren. 

4. Erstellen Sie das Setup-Projekt.

Wenn Sie diese Schritte überspringen, erstellt Ihr Setup-Projekt Ihre Dateien und kopiert sie in das richtige Verzeichnis. Sie registrieren Ihre Binärdatei jedoch nicht als Dienst ohne diese Schritte.


Ich sollte auch beachten, dass dies für ältere Versionen von Visual Studio funktioniert, die über die integrierte Projektvorlage "Setup/Bereitstellung" verfügten. Die neueren Versionen von Visual Studio verfügen über unterschiedliche Installations- und Bereitstellungsprojekte (einige erfordern Software von Drittanbietern.) 

Ich würde empfehlen, in WiX Toolset nachzusehen und hier nach WiX Installation von Windows Services zu suchen.

101
Nate

Ich bin im Besitz dieser Sache, deshalb stelle ich sie hier, nur für den Fall, dass jemand anderes darauf stößt.

Wenn Sie die Anweisungen in den Handbüchern befolgt haben, aber immer noch Probleme bei der Installation haben, stellen Sie sicher, dass Ihre Installer-Klasse öffentlich ist. Intern funktioniert nicht.

6
xofz

Ich hatte das gleiche Problem und merkte dann, dass ich den übergeordneten Server niemals für den ServiceInstaller festgelegt habe.

Doppelklicken Sie auf Ihr Projektinstallationsprogramm. Der Designer sollte einen Service Installer und einen Process Installer anzeigen. Wenn Sie auf eine der Eigenschaften klicken und die Eigenschaften anzeigen, sollten Sie das Parent-Attribut beachten, das beide auf den Klassennamen des Project Installer festgelegt werden muss.

Wenn Sie dies im Code tun, stellen Sie Folgendes sicher:

serviceInstaller.Parent = this;

und 

serviceProcessInstaller.Parent = this;
5
cbillowes

Bei der Installation von Services würde ich wärmstens empfehlen, NSSM zu verwenden, was für alle meine WinService-Anforderungen gut funktioniert hat. Es kann jede ausführbare Datei (auch wenn .bat, .cmd) als Dienst installiert werden und garantiert, dass Ihr Dienst immer betriebsbereit ist.

So verwenden Sie dieses Tool:

  1. Download von hier

  2. Und folge den Anweisungen hier

Dann überprüfen Sie die Liste der Dienste. Sie sollte dort verfügbar sein und ausgeführt werden.

3
Zafar

Folge diesen Anweisungen, sie haben für mich gearbeitet. Speziell für das Setup befindet sich dieser Teil am unteren Rand des Artikels.

MSDN: Walkthrough: Erstellen eines Windows-Dienstes

1
Jon Seigel

Ich habe festgestellt, dass sich Ihre Installer-Klasse viel im selben Projekt befindet wie der Service. Das Installationsprogramm kann nicht in einem Bibliotheksprojekt vorhanden sein, auf das der Dienst verweist.

0
kspearrin

Hier ist ein gutes Tutorial von tgeek001 von CodeProject.com, das mir geholfen hat. Es enthält einige Dinge, die ich in den obigen Beiträgen nicht gesehen habe: 1. Ereignisbehandlungscode, um den Dienst vor der Deinstallation zu stoppen 2. Bestimmte Bedingungen und Eigenschaften im Code für benutzerdefinierte Aktionen, die festgelegt werden sollen, um Fehler zu vermeiden (diese haben den Fehler 1001 behoben, den ich beim Befolgen der Anweisungen in der oben angegebenen akzeptierten Antwort hatte) Win Service-Eigenschaft "Remove Previous Version" Dropdown auf true gesetzt

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

Das Folgende ist aus dem Lernprogramm für Einstellungen für benutzerdefinierte Aktionen (case matters):

  • Installieren Sie die Condition-Eigenschaft auf Folgendes: "NOT (Installed oder PREVIOUSVERSIONSINSTALLED)" 
  • Deinstallieren Sie die Condition-Eigenschaft auf "NOT UPGRADINGPRODUCTCODE".
  • Commit: Setze "Custom Action Data" -Feld auf:/OldProductCode = "[PREVIOUSVERSIONSINSTALLED]"

Stellen Sie sicher, dass Sie im WinService-Projekt das Dropdown-Menü "Vorherige Versionen entfernen" auf "true" setzen.

prost

0
sondlerd

In Visual Studio 2013 bin ich mit der InstallShield-Vorlage für die Dienstanwendung dasselbe Problem aufgetreten. Bei der Verwendung der Setup-Projektvorlage https://visualstudiogallery.msdn.Microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d funktioniert es jedoch charmant

laden Sie die Setup-Projektvorlage herunter, schließen Sie Ihr Studio, führen Sie diese Installation aus und starten Sie Ihr Studio. Das wird funktionieren.

Dunn 

0
Dung