2013-08-29 17 views
11

Ho creato un servizio Windows con Delphi per un'applicazione client server.Come installare un servizio Windows dalla riga di comando specificando nome e descrizione?

installarlo io uso

c:\Test\MyService.exe /install (or /uninstall) 

Questo installa il servizio e in Windows servizi elenca con il nome "MyService" e la descrizione vuota.

Come definire un nome diverso e inserire una descrizione (da visualizzare quando si esegue services.msc)?

Nota: Ho bisogno di questo perché sulla stessa macchina ho bisogno di installare più volte lo stesso servizio (1 per database).

Attualmente l'unica soluzione alternativa è quella di rinominare il servizio exe, ma preferirei trovare la linea di comando corretta per farlo (poiché lo faccio da ShellExecute).

Aggiornamento: In qualche modo mi aspetto qualcosa di simile (! Questo è solo per motivi spiegazione, naturalmente - InstallService.exe è un nome che appena inventato):

InstallService.exe c:\Test\MyService.exe /install /name='MyService1' 
    /description='This is my service for database 1' 

ma anche una versione più compatta sarebbe come:

c:\Test\MyService.exe /install /name='MyService1' 
    /description='This is my service for database 1' 
+3

+1 Non vedo perché questa domanda meritava un downvote –

+0

Si noti che Delphi 'TService' non riesce ad avviare il servizio quando viene creato con un nome diverso dalla proprietà' Name'. Vedere [Servizio non avviato] (http://stackoverflow.com/q/18599201/859646) per una descrizione del problema e una soluzione alternativa. – JRL

+0

@Jerry - non è una domanda negativa, ma sembra essere fuori tema. Perhpas che spiegherebbe il downvote. Super User è più appropriato per le domande "come faccio a usare questo comando". – jww

risposta

13

Windows già viene fornito con l'utilità che è necessario, ovvero sc create.

 
>sc create /? 
DESCRIPTION: 
     Creates a service entry in the registry and Service Database. 
USAGE: 
     sc create [service name] [binPath= ] ... 

OPTIONS: 
NOTE: The option name includes the equal sign. 
     A space is required between the equal sign and the value. 
type= 
     (default = own) 
start= 
     (default = demand) 
error= 
     (default = normal) 
binPath= 
group= 
tag= 
depend= 
obj= 
     (default = LocalSystem) 
DisplayName= 
password= 

Questo creerà il servizio e consentirà di specificare il nome e il nome visualizzato.

modificare la descrizione è necessario sc description:

 
>sc description /? 
DESCRIPTION: 
     Sets the description string for a service. 
USAGE: 
     sc description [service name] [description] 

L'altra opzione ovvio è quello di costruire linea di comando di analisi nel vostro servizio. È banalmente facile da fare. Assegna semplicemente gestori per gli eventi BeforeInstall e/o AfterInstall del servizio e elabora gli switch.

+0

Grazie mille. Ho provato tutto da riga di comando e funziona come previsto. Funziona anche con gli stessi tempi mediocri di exe (ovviamente con eith diverso [nome servizio]. – LaBracca

+2

inoltre 'sc delete [nome servizio]' chiude il ciclo – LaBracca

+0

Yup, sc è il tuo ragazzo –

Problemi correlati