2009-07-09 10 views
5

Sto lavorando a un'applicazione che viene avviata come servizio ma solo se viene specificata da un interruttore della riga di comando (altrimenti viene aperto un modulo standard). Quindi, quando il servizio viene avviato da Windows all'avvio, deve passare questa opzione della riga di comando o il servizio non viene avviato.Aggiungi argomenti della riga di comando al programma di installazione del servizio C#

Vorrei che il programma di installazione (ServiceProcessInstaller) aggiungesse un'opzione della riga di comando in modo che all'avvio del servizio aggiunga l'opzione della riga di comando al comando.

Esempio: Servizio.exe -commandlineoption

Ho pensato che questo era quello che la proprietà ServiceProcessorInstaller.Context era per, ma che è per gli argomenti che sono stati eseguiti su InstallUtil.

Qualche suggerimento?

+0

Dalla domanda non è chiaro: l'applicazione sta installando il servizio, avviandolo o entrambi? – adrianbanks

+0

Penso al primo. –

+0

Ci scusiamo per l'ambiguità. L'applicazione normalmente è un'applicazione Windows Form standard. Tuttavia, nel metodo Main(), cerca gli argomenti della riga di comando. Se esiste un'opzione della riga di comando -service, avvia il servizio. Ho anche incluso un programma di installazione che InstallUtil cerca per registrare il servizio con Windows. Quando il servizio viene avviato da Windows all'avvio, è necessario chiamare il servizio con l'opzione della riga di comando. – Tim

risposta

1

Quando ho aggiunto le opzioni della riga di comando per i servizi, ho sempre in default per l'esecuzione come un servizio . Tuttavia, so che è possibile il contrario perché è come SvcHost funziona: è un EXE che è sempre configurato per caricare le DLL come servizi.

+0

Ed ecco come, per gentile concessione di Jorg qui sotto: http://stackoverflow.com/questions/652654/set-start-parameters-on-service-installation-with-net-serviceinstaller –

+0

La domanda a cui ti sei collegato sembra essere ciò che di cui ho bisogno. Immagino che non stavo cercando le parole giuste. Non potevano essere facili, no ?! Grazie Steven! – Tim

+0

Jorg ottiene il credito, ma sono lieto di aver indirizzato la vostra attenzione sul suo buon lavoro. –

0

Un servizio viene installato solo una volta per rilascio. Sembra che tu stia parlando di passare un argomento da riga di comando al servizio quando viene avviato.

È possibile passare argomenti della riga di comando per il servizio quando lo si avvia con il ServiceController.Start method:

using (var controller = new ServiceController("servicename")) { 
    controller.Start(arg0, arg1); 
} 
+0

Se questo è il caso, si veda ad es. la mia Q su http://stackoverflow.com/questions/652654/set-start-parameters-on-service-installation-with-net-serviceinstaller –

+0

C'è una contraddizione? –

+0

John, la domanda a cui è collegato spiega come configurare il servizio per allegare i parametri che vengono passati ogni volta che il servizio viene avviato da chiunque. Penso che contenga la risposta alla domanda di Tim. –

Problemi correlati