Ich habe einen .NET Windows-Dienst. Ich möchte ein Installationsprogramm erstellen, um diesen Windows-Dienst zu installieren.
Grundsätzlich muss es folgendes tun:
- Pack
installutil.exe
(Ist es erforderlich?) - Führen Sie
installutil.exe
MyService.exe aus - Starten Sie MyService
Außerdem möchte ich ein Deinstallationsprogramm bereitstellen, das den folgenden Befehl ausführt:
installutil.exe /u MyService.exe
Wie mache ich das mit Inno Setup?
c#
windows-services
inno-setup
devnull
quelle
quelle
Antworten:
Sie brauchen es nicht
installutil.exe
und haben wahrscheinlich nicht einmal das Recht, es weiterzugeben.So mache ich das in meiner Bewerbung:
Grundsätzlich können Sie Ihren Dienst selbst installieren / deinstallieren lassen, indem Sie ihn
ManagedInstallerClass
wie in meinem Beispiel gezeigt verwenden.Dann müssen Sie Ihrem InnoSetup-Skript nur noch Folgendes hinzufügen:
quelle
Filename: "net.exe"; Parameters: "start WinServ"
. Wenn dies nicht funktioniert, können Sie einfach einen weiteren Schalter hinzufügen --start zu Ihrer c # -Anwendung und den Windows-Dienst direkt vom Programm aus mithilfe der ServiceController-Klasse ( msdn.microsoft.com/en-us/library/… ) starten .using System.Reflection;
oder zu ändern ,Assembly
umSystem.Reflection.Assembly
in dem obigen Code.So habe ich es gemacht:
Anscheinend verfügt das Inno-Setup über die folgenden Konstanten für die Referenzierung des .NET-Ordners auf Ihrem System:
Weitere Informationen finden Sie hier .
quelle
Sie können verwenden
einen Dienst erstellen. Unter " sc.exe " erfahren Sie, wie Sie den Dienststatus starten, stoppen, überprüfen, den Dienst löschen usw.
quelle
Wenn Sie Neustarts beim Upgrade des Benutzers vermeiden möchten, müssen Sie den Dienst vor dem Kopieren der Exe beenden und danach erneut starten.
Es gibt einige Skriptfunktionen, um dies unter Service zu tun - Funktionen zum Starten, Stoppen, Installieren und Entfernen eines Service
quelle