Servicios Windows en .NET (2ª parte)

Instalación

Una vez escrito y depurado nuestro código (si lo creamos inicialmente como Aplicación de Consola, lo cual recomiendo, y luego añadirle la clase Service correspondiente con los métodos OnStart, OnStop, etc, ya explicados…) procedemos a su instalación.

Los servicios windows son diferentes a otras aplicaciones basadas en Windows al uso, como ya hemos dicho al comienzo. No es posible ejecutar un servicio simplemente ejecutando el archivo .exe. El servicio debe ser instalado utilizando una aplicación del Framework .NET denominada InstallUtil, la cual utiliza proyectos de instalación de Microsoft Installer (MSI).

Añadir un instalador a nuestro servicio

Tener creado nuestro servicio, y compilado en Debug o en Releas no será suficiente para que InstallUtil pueda instalar el servicio. Esto es importante porque aquí perdí bastante tiempo intentando hacerle entrar en razones a la aplicación InstallUtil. Para instalar correctamente, es necesario crear un instalador al servicio para que InstallUtil conozca los parámetros de insatalción que hay que aplicar al servicio a instalar.

  1. Cambie a la vista de diseño del servicio.
  2. Haga clic derecho y seleccione la opción Añadir Instalador.
  3. Cambie a la vista de diseño del ProjectInstaller que se ha añadido.
  4. Establezca las propiedades del componente serviceInstaller1.
    1. ServiceName= <el_nombre_de_mi_servicio>
    2. StartType=<Automatic, Manual….>
  5. Establezca las propiedades del componente serviceProcessInstaller1
    1. Account = LocalSystem (esto es muy importante, o el servicio no será capaz de iniciarse correctamente)
  6. Compile la solución.

NOTA: Juege con el resto de propiedades de los componentes creados con el instalador. Investigue las opciones que le permite controlar. Es interesante, por ejemplo, asignar al servicio una descripción lo más explicativa posible de las funciones de su servicio. Esta descripción será visualizada posteriormente en el Administrador de Servicios.

Instalar el servicio con InstallUtil

Ahora que el servicio ha sido construido correctamente, es el momento de instalarlo para utilizarlo:

Instalación desde shell de comandos de .NET

En primer lugar, abriremos una ventana de comandos de .NET. (Inicio->Programas->Microsoft .NET Framework SDK 2.0->Símbolo del sistema de SDK).

Cambiamos el directorio a aquel donde esté ubicado MiServicio.exe. Y ejecutaremos:

InstallUtil MiServicio.exe

Leer la información que aparece. Si todo ha ido bien, el servicio se habrá dado de alta en el servicio. Automáticamente se habrá establecido que se inicie en modo automático a partir de ahora en los siguientes inicios de la máquina.

Pero habrá que iniciarlo por primera vez. Para ello, abrir las Herramientas administrativas y visualizar los Servicios (Panel de Control->Herramientas Administrativas->Servicios). A continuación, poner en funcionamiento el servicio, . Por último, verificar los logs para comprobar que todo ha ido correctamente.

Instalación desde shell de comandos de Windows

Aunque recomiendo encarecidamente la primera opción, si no encontramos el shell de comandos de .NET, podremos instalar la aplicación desde la ventana de comandos de Windows, ejecutando Inicio->Ejecutar y escribir “cmd”. Pulsar Intro.

Cambiar al directorio C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727, y ejecutar:

Installutil c:\<ruta>\MiServicio.exe

donde <ruta> es la ruta del ensamblado MiServicio.exe.

Bien. Una vez instalado podemos ir a las herramientas administrativas del sistema y ver el listado de Servicios. Iniciar el servicio cuyo nombre será MiServicio.exe, y en sus propiedades, establecer que se inicie automáticamente al arrancar Windows (pestaña “General“). También sería interesante marcar, en la solapa “Recuperar“, “Reiniciar el servicio” en todos los fallos que pudieran ocurrir.

Desinstalación

Para desinstalar el servicio del sistema, abriremos un shell de .NET o una ventana de comandos de Windows, y realizando las mismas operaciones para acceder al comando InstallUtil como hicimos antes, ejecutaremos:

InstallUtil /u MiServicio.exe

Como se ve, es el mismo comando de antes pero con la opción /u.

Esto es todo. Con esto debería ser suficiente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s