2017-08-31 7 views
0

Arbeiten mit der VS2017-Community Ich habe einen Dienst geschrieben, der auf meinem lokalen Computer funktioniert. Ich folgte der Anweisung hier: https://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designerBereitstellen eines Windows-Dienstes mit der Visual Studio 2017-Community

und installiert es erfolgreich mit Installutil.exe (gemäß Anweisungen in der obigen Link). Alles gut.

Ich möchte jetzt das auf sechs Servern in unserer Organisation bereitstellen. In der Dokumentation von Microsoft zur Installation Services (https://docs.microsoft.com/en-us/dotnet/framework/windows-services/how-to-install-and-uninstall-services) heißt es:

Wenn Sie ein Entwickler sind, die einen Windows-Dienst veröffentlichen will, dass die Benutzer installieren und deinstallieren Sie

Installshield

und Links verwenden sollten eine Seite, die für VS2012 gilt (kann keine weiteren Links als meine Reputation posten)

Ich habe das Paket "Microsoft Visual Studio 2017 Installer-Projekte" heruntergeladen und installiert, mit dem ich ein Setup-Projekt erstellen kann. Wenn ich es ausführe, installiert es die Projektausgabe korrekt (d. H. Kopiert die EXE-Dateien & in den richtigen Ordner in Programme), erstellt jedoch den Dienst nicht.

Es gibt einen ausführlichen Beitrag über die Bereitstellung von Diensten auf dieser Website (Frage 9021075), aber wenn ich diesen Anweisungen folge, bekomme ich einen 1001 Fehler bei der Installation.

Die gesamte Dokumentation, die ich finden kann, bezieht sich auf frühere Versionen von VS oder das vorherige Installer-Paket, so dass ich nicht einmal sicher bin, ob ich es mit der Software, die ich benutze, machen kann.

Also, mit VS2017 Community mit Microsoft Visual Studio 2017 Installer-Projekte, wie erstelle ich ein eigenständiges Installationsprogramm zum Bereitstellen eines Dienstes, der bei lokaler Installation ordnungsgemäß mit InstallUtil funktioniert?

Oder kann ich InstallUtil auf den Zielmaschinen verwenden? Ich denke, ich müsste dafür Visual Studio installieren, was ich lieber nicht tun würde. Gibt es einen schnelleren Weg?

Ich habe nur 6 Server, um dies zu installieren, so auch einige manuelle Umgehung tun könnte.

+0

InstallUtil.exe ist Bestandteil von .NET Framework, daher muss Visual Studio nicht installiert werden. –

+0

Danke. Hat mir geholfen, die Lösung zu finden –

Antwort

1

Weitere Informationen zu den Einstellungen, die Sie für die Dateien serviceProcessInstaller1 und serviceInstaller1 verwenden, werden zum Debuggen dieses Problems benötigt, da der vom Installationsprogramm ausgegebene Fehler 1001 ein allgemeiner Fehler ist.

Alternativ dazu können Sie Topshelf verwenden, ein Framework für das Hosting von Diensten, die mit dem .NET-Framework geschrieben wurden. Es vereinfacht die Erstellung von Diensten, sodass Entwickler eine einfache Konsolenanwendung erstellen können, die als Dienst unter Verwendung von Topshelf installiert werden kann. Der Grund dafür ist einfach: Es ist viel einfacher, eine Konsolenanwendung als einen Dienst zu debuggen. Und sobald die Anwendung getestet und produktionsbereit ist, erleichtert Topshelf die Installation der Anwendung als Dienst.

Alternativ können Sie InstallUtil.exe verwenden. Es ist Teil von .NET Framework, daher muss Visual Studio nicht installiert werden.

+0

Danke. Ich habe es mit InstallUtil für jetzt sortiert, aber ich werde Topshelf als eine dauerhafte Lösung auschecken –

1

Vielen Dank für die Antworten. Ich habe jetzt eine Lösung. Ich habe InstallUtil auf dem Zielserver gefunden (in meinem Fall war es in C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319, aber die Suche findet es). Ich kopierte und fügte das zu meinem Projekt als Inhalt hinzu, also habe ich InstallUtil in dem gleichen Ordner wie meine EXE, wenn ich es jetzt bereitstelle.

zu installieren, ich laufe CMD als Admin, CD-Ordner und Ausgabe-Befehl zu projizieren:

installutil.exe MyService.exe

Dies ist eine einmalige Aufgabe. Sobald der Dienst funktioniert, muss ich ihn nur noch stoppen und die neue myService.exe (& beliebige DLLs) hochladen, um die alten zu überschreiben und neu zu starten.

Verwandte Themen