29 octubre 2008

Como instalar un servicio de Windows de forma rápida y sencilla

Supongamos que tienes una aplicación, un “.bat” o cualquier otro ejecutable que quieres convertir en un servicio de Windows y no tienes tiempo, ganas o simplemente no conoces la forma de interactuar con los APIs de Windows para crear dicho servicio.

Pues bien, hay una solución muy sencilla para crear el servicio que necesitas. Existe una pequeña, pero muy potente, herramienta diseñada en Java por un señor llamado Bill Giel allá por el año 2000, que funciona a las mil maravillas.

El programa se llama ServiceInstaller y voy a explicar en 3 sencillos pasos como instalarlo y utilizarlo:

1. Nos descargamos el programa ServiceInstaller. Como el link de la página oficial no funciona os pongo aquí otro link de descarga:


2. Lo instalamos.

3. Instalarmos nuestro servicio. Se pueden instalar los servicios desde un pequeño interfaz gráfico o bien con un comando pasándole ciertos parámetros. Aquí explicaré como se hace con el interfaz gráfico, pero quien quiera hacerlo por línea de comandos, tiene una explicación con ejemplo en el fichero readme.txt que hay en el directorio donde instalas el programa.

Para nuestro caso ejecutaremos el programa servinst desde el menú de inicio y veremos la siguiente UI:

SI Main Panel
Lo que rellenaremos en los campos será lo siguiente:
  • Service Name: El nombre por el cual se identifica el servicio. No puede contener espacios.
  • Display Name: El nombre con el que etiquetamos el servicio. Al ejecutar services.msc, éste será el nombre con el que se muestra.
  • Startup: La forma de iniciarse del servicio...
  • Dependencies: Si este servicio depende de algún otro servicio ya definido, añadimos aquí sus nombres separados por ‘;’.
  • Executable: La ruta del ejecutable que queremos lanzar como servicio.
  • Arguments: Si queremos pasarle algún argumento al ejecutable lo haremos en este campo.
  • Working Directory: El directorio de trabajo del servicio. Si no sabéis que poner aquí os recomiendo que pongáis la ruta del directorio donde se encuentra vuestro ejecutable.
Por último pinchamos en Install y si todo ha ido bien, ya tendremos nuestro servicio instalado y listo para funcionar, así de fácil.



Para desinstalar un servicio creado previamente con este programa basta con rellenar el campo Service Name con el nombre del servicio y pinchar en Remove. Si todo va bien, aparecera un mensaje de borrado satisfactorio.

La pega (si se puede sacar) de esta forma de instalar servicios es que necesitamos tener el programa ServiceInstaller permanentemente instalado para ejecutarlos, ya que hace de intermediario entre el API de Windows y nuestras aplicaciones.

Espero que os sirva la utilidad y le saquéis provecho.

También puedes acceder a la Web oficial de ServiceInstaller pinchando aquí.

4 comentarios:

Johnix dijo...

Muchas gracias por tu valioso aporte, me ha servido de mucho.

Anónimo dijo...

Hola amiga , al instalar instlar el programa no encuentra la ruta de srunner .exe , t agradeceria verificaras ello.Saludos desde Perú.

Buzzko dijo...

Hola amig@, para que te pueda ayudar mejor necesito que me des algún detalle más.

Un error del estilo al que comentas ocurre cuando después de haber instalado los servicios, desinstalas el programa e intentas ejecutar los servicios.

Ocurre porque cuando se instala un servicio con esta herramienta, se registra para que se ejecute a través de NTServiceInstaller(srunner.exe). Como el sistema no lo encuentra (si lo has desinstalado), lanza el error.

Espero haberte ayudado. Si no van por ahí los tiros, espero más detalles de tu problema.

Anónimo dijo...

Excelente aporte, se agradece.
Saludos desde Jalisco, México

Publicar un comentario en la entrada