2013-05-13 8 views
5

Ich habe zwei Binärdateien „sc erstellen“ und haben für sie einen Dienst erstellen. Ich versuchte eine Lösung mit "sc create" von How to install a Windows service with Inno Setup?Inno Setup: Windows-Dienste installieren mit

Aber es hat nicht für mich funktioniert. Es bleibt am Ende der Installation hängen. Was mache ich falsch?

Hier ist mein Code:

Filename: {cmd}; Parameters: "sc create srvname start= auto DisplayName= mysrv binPath= {app}\mybinary.exe" ; Flags: runhidden 

Ich versuchte cmd anstelle von {cmd} - keine Änderung.

Ich habe nicht versucht, den Pascal-Code in der Lösung, die ich genannt. Ich halte es als letzten Ausweg.

+1

möglich Duplikat von [Wie ein Windows-Dienst mit Inno Setup installieren?] (Http://stackoverflow.com/questions/15204587/how-to-install-a-windows-service-with-inno -setup) – TLama

+1

so meinst du zu sagen, dass ich Pascal-Code verwenden muss, der in der von dir erwähnten Lösung vorhanden ist. – rakesh

+2

Nicht dass du musst, nur dass du solltest. – TLama

Antwort

15

habe ich diesen Code und meine beiden Dienste sind die Installation und Deinstallation:

[run] 
Filename: {sys}\sc.exe; Parameters: "create mysrv start= auto binPath= ""{app}\mysrv.exe""" ; Flags: runhidden 

[UninstallRun] 
Filename: {sys}\sc.exe; Parameters: "stop mysrv" ; Flags: runhidden 
Filename: {sys}\sc.exe; Parameters: "delete mysrv" ; Flags: runhidden 

Das ist mein Problem gelöst, also warum sollte ich Pascal in diesem Fall.?

+6

* Warum sollte ich Pascal in diesem Fall verwenden? * Weil Sie nicht damit umgehen können oder reagieren, wenn etwas mit diesem Skript schief geht? Ich weiß, dass es dir jetzt egal ist, aber bald oder später wirst du es tun. Die Benutzer könnten überrascht sein, wenn Sie ihnen sagen, die Installation erfolgreich war, und wenn sie die Anwendung erwartet den Dienst ausführen, um die Anwendung zu laufen fail, da der Dienst tatsächlich gestoppt werden, aber Sie werden feststellen, dass nicht versucht, in Installer-Dienst konnte starten . – TLama

+1

das ist ein guter Punkt. Ich werde mir das merken. danke – rakesh

8

Gibt es einen Grund Sie versuchen, es durch {cmd} zu laufen?

Fügen Sie entweder den Parameter /C hinzu und geben Sie den Rest wie gewünscht an oder führen Sie einfach sc.exe mit den erforderlichen Parametern aus.

[Run] 
Filename: "sc.exe"; Parameters: "create srvname start= auto DisplayName= mysrv binPath= {app}\mybinary.exe" ; Flags: runhidden 

Beachten Sie, dass der richtige Weg, um den Service ist die API wie erwähnt in this answer zu installieren, die Fehler erkennen und behandeln können.

1

warum nicht nur

[run] Dateiname: {sys} \ sc.exe; Parameter:/install

+3

Weil es keinen '/ install' Parameter gibt. Und ohne zumindest den Namen der Servicedatei zu wissen, würde das Tool verloren gehen, was zu tun ist. – TLama

+1

Dies dupliziert auch eine Antwort, die 7 Monate vorher gegeben wurde. – Deanna

Verwandte Themen