Windows-Dienst mit SC.exe oder InstallUtil.exe Installation - es gibt Unterschied, aber welche?

StackOverflow https://stackoverflow.com/questions/4692250

Frage

SC.exe und InstallUtil beide Installation / Deinstallation Windows-Dienste. Aber sie scheinen nicht die gleiche Art und Weise zu arbeiten.

Was ist der Unterschied?


Zum Beispiel InstallUtil fehlschlägt (einige Datei oder Abhängigkeit nicht gefunden Fehler), während Sc erstellen glücklich den Dienst installiert. Zu auf die Fremdheit hinzuzufügen; der Dienst wird nicht angezeigt, wenn ich laufe net start in der Konsole. Aber es zeigt im Dienst GUI auf. Varianten dieses passiert, wenn ich zu deinstallieren versuchen.

Ich habe den Dienst geschrieben selbst und frühere Versionen arbeiten. Dotnet3.5.

War es hilfreich?

Lösung

Ja, einen Dienst zu installieren, ist nicht besonders kompliziert. Es dauert nur eine Handvoll von Registry-Schlüssel zu schreiben. Sie können einen Blick-sehen haben mit Regedit.exe, navigieren Sie zu HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services.

Sc.exe können diese Schlüssel schreiben, mit den mitgelieferten Befehlszeilenargumente. Dennoch ist dies nicht der richtige Weg, es zu tun. Der Punkt der InstallUtil.exe ist, dass es aktiviert benutzerdefinierten Installationscode. Code, dass der Dienst Autor schrieb. Das ist nicht so ungewöhnlich, Dienstleistungen sind in der Regel Sachen Konfigurationsinformationen in ihrem Registrierungsschlüssel für den eigenen Gebrauch. Hier finden Sie viele Beweise sehen für dass, wenn Sie einen Blick mit Regedit.

Andere Tipps

ich lieber über installutil.exe Millionen Mal sc.exe.

InstallUtil zwingt Sie die schreckliche Project Klasse hinzufügen (glaube ich) und dort die hardServiceNamen und Service-Beschreibung.

Dies ist, macht es sehr schwer, zwei Versionen des gleichen Service in der gleichen Maschine zur gleichen Zeit laufen zu setzen.

Deshalb verwende ich nicht nur InstallUtil.exe überhaupt. Auch wegen der vorherigen Antworten: Sie müssen es in Ihrem deploy Paket sein. sc.exe ist bereits in jedem Windows XP und höher (glaube ich).

Der Hauptunterschied besteht darin, dass InstallUtil ist nicht Dienstprogramm für Service-Installation gedacht, sondern als allgemeines Installationstool. Von MSDN-Seiten können Sie sehen, dass:

"Das Installer-Tool ist ein Befehlszeilenprogramm, das Ihnen erlaubt, Installation und Deinstallation von Server-Ressourcen durch das Installationsprogramm ausführen Komponenten in angegebenen Baugruppen. Dieses Tool arbeitet in Verbindung mit Klassen im System.Configuration.Install Namespace. "

So kann es Service installieren, aber es viele viele viele andere Vorteile. Erstellen von ausführbaren Dateien basierend auf Installer Klasse gibt Ihnen programatic Kontrolle der gesamten Installation / Deinstallation. Serviceinstaller und < a href = "http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceprocessinstaller%28v=vs.110%29.aspx" rel = "noreferrer"> Serviceprocess , zum Beispiel werden für Service-Installation verwendet wird.

Dienstprogramm ‚Sc‘ wird für Service-Steuerung verwendet und ‚create‘ Befehl nur Dienst erstellen, basierend auf ausgewählte ausführbare Datei.

In Ihrem Beispiel
1. Es ist nicht mit InstallUtil und Fehlerreaktion ganz darüber klar sein sollte, installiert werden soll.
2. InstallUtil nicht aufgrund eines Fehlers in Installationscode und mit sc create wird wahrscheinlich einen fehlerhaften Service für Sie erstellen. Überprüfen Sie in {} exe_name .InstallLog für Details.

Von der Deinstallation Nutzung Erfahrung: sc.exe unter Windows 7 entfernt den Eintrag aus der Liste sofort, während nach mit installutil Deinstallation gibt es einen Bedarf für einen Neustart

ist

Während InstallUtil ist der bevorzugte Weg mit .NET Diensten zu gehen, von Unzulänglichkeiten es ist, ist es nicht Umleitungen von Ihrem app.config abholen Bindung, die unter bestimmten Umständen kann die Installation fehlschlagen. Das ist, wo mit SC könnten Sie einige Vorteile gewinnen, auf Kosten der nicht in der Lage Code zum Zeitpunkt der Installation ausgeführt werden.

Leider für den OP, Topshelf nicht zum Zeitpunkt seiner Frage existieren. Es arbeitet rund um die Mängel der beiden SC und InstallUtil und ermöglicht der Dienst mit dem Debugger angebracht zu starten, wenn es in Visual Studio zu starten. Außerdem ist es viel einfacher, myservice install zu geben, als haben für InstallUtil auf den bestimmten Ordner zu Drilldown, oder geben Sie in einer Tonne von Parametern für SC.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top