2013-05-13 22 views
5

Ho due binari e devo creare un servizio per loro. Ho provato una soluzione usando "sc create" da How to install a Windows service with Inno Setup?Inno Setup: installazione dei servizi Windows usando "sc create"

Ma non ha funzionato per me. Si è bloccato alla fine dell'installazione. Che cosa sto facendo di sbagliato?

Ecco il mio codice:

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

Ho provato ad utilizzare cmd invece di {cmd} - nessun cambiamento.

Non ho provato il codice Pascal nella soluzione a cui ho fatto riferimento. Lo tengo come l'ultima risorsa.

+1

possibile duplicato di [Come installare un servizio Windows con Inno Setup?] (Http://stackoverflow.com/questions/15204587/how-to-install-a-windows-service-with-inno -setup) – TLama

+1

quindi intendi dire che devo usare il codice Pascal che c'è nella soluzione che hai citato. – rakesh

+2

Non che devi, solo che dovresti. – TLama

risposta

15

Ho usato questo codice e entrambi i miei servizi sono installazione e la disinstallazione:

[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 

Questo risolto il mio problema, quindi perché dovrei usare Pascal in questo caso.?

+6

* Perché dovrei usare Pascal in questo caso? * Perché non puoi gestire o reagire se qualcosa va storto con questo script? So che non ti importa ora, ma presto o tardi lo farai. I tuoi utenti potrebbero rimanere sorpresi se dici che l'installazione è stata eseguita correttamente e se eseguono l'applicazione in attesa che il servizio esegua l'applicazione non riescono perché il servizio verrà effettivamente arrestato, ma non noterai che il tentativo fallito di avviare il servizio nel programma di installazione . – TLama

+1

questo è un buon punto. lo terro 'a mente. grazie – rakesh

8

C'è qualche motivo per cui stai cercando di eseguirlo tramite {cmd}?

Aggiungere il parametro /C e citare il resto come richiesto oppure eseguire semplicemente sc.exe con i parametri richiesti.

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

Si noti che il modo corretto di installare il servizio è l'API, come indicato nel this answer che vi permetterà di rilevare e gestire gli errori.

1

perché non solo

[run] Nome file: {sys} \ sc.exe; Parametri:/installa

+3

Perché non esiste un parametro '/ install'. E senza sapere almeno il nome del file di servizio lo strumento sarebbe perso ciò che deve fare. – TLama

+1

Questo duplica anche una risposta data 7 mesi prima. – Deanna

Problemi correlati