2009-07-09 9 views
5

Estoy trabajando en una aplicación que se inicia como un servicio pero solo si un conmutador de línea de comando se lo dice (de lo contrario, se abre un formulario estándar). Entonces, cuando Windows inicia el servicio en el arranque, debe pasar esta opción de línea de comando o el servicio no se inicia.Agregue argumentos de línea de comandos al instalador de servicio C#

Me gustaría que el instalador (ServiceProcessInstaller) agregue una opción de línea de comandos para que cuando se inicie el servicio agregue la opción de línea de comandos al comando.

Ejemplo: MiServicio.exe -commandlineoption

pensé que esto era lo que la propiedad ServiceProcessorInstaller.Context era para, pero eso es para los argumentos que se han ejecutado en InstallUtil.

¿Alguna sugerencia?

+0

No está claro por su pregunta: ¿su aplicación está instalando el servicio, lo está iniciando o ambos? – adrianbanks

+0

Estoy pensando en lo primero. –

+0

Disculpe la ambigüedad. La aplicación normalmente es una aplicación de formularios estándar de Windows. Sin embargo, en el método Main(), busca argumentos de línea de comandos. Si hay una opción de línea de comando de servicio, inicia el servicio. También incluí una clase de instalador que InstallUtil busca para registrar el servicio con Windows. Cuando Windows inicia el servicio en el arranque, se debe llamar al servicio con la opción de línea de comando. – Tim

Respuesta

1

Cuando he añadido opciones de línea de comandos para los servicios, siempre he programación predeterminada ejecuta como un servicio . Sin embargo, sé que lo contrario es posible porque así es como funciona SvcHost: es un EXE que siempre está configurado para cargar archivos DLL como servicios.

+0

Y así es cómo, cortesía de Jorg a continuación: http://stackoverflow.com/questions/652654/set-start-parameters-on-service-installation-with-net-serviceinstaller –

+0

Parece que la pregunta a la que se vinculó lo que necesito. Supongo que no estaba buscando las palabras correctas. No podrían hacerlo más fácil, ¿verdad? Gracias Steven! – Tim

+0

Jorg obtiene el crédito, pero me alegro de haber dirigido su atención a su buen trabajo. –

0

Un servicio solo se instala una vez por versión. Parece que estás hablando de pasar un argumento de línea de comando al servicio cuando se inicia.

Puede pasar argumentos de línea de comandos para el servicio cuando se inicia mediante el ServiceController.Start method:

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

Si ese es el caso, ver p. mi Q en http://stackoverflow.com/questions/652654/set-start-parameters-on-service-installation-with-net-serviceinstaller –

+0

¿Hay alguna contradicción? –

+0

John, la pregunta a la que se vinculó explica cómo configurar el servicio para adjuntar parámetros que se pasan cada vez que alguien inicia el servicio. Creo que contiene la respuesta a la pregunta de Tim. –

Cuestiones relacionadas