vtortola.NET Logo
Servicios Windows instalables

Servicios Windows instalables

por vtortola miércoles, 16 de enero de 2008

gear Aquí va un pequeño How-to rápido de como se crea e instala un servicio Windows con .NET y Visual Studio 2005 dedicado a mi compañero Juanma Otero que a cambio me explicará como funcionan los EndPoints de SQL Server :D

Cada vez que vayamos a crear un servicio Windows, podemos seguir estos pasos para crear lo que sería el contenedor y su capacidad de instalación, para luego más tranquilamente empezar a introducir la lógica y funcionalidad del negocio que le queramos dar.

1. Creando.

empezando Se utiliza un proyecto Windows Service, que digamos es un contenedor en el que tenemos que implementar las acciones básicas de un servicio como son Start, Stop, Pause, Restar... etc.. En un próximo artículo me meteré un poco más a fondo en el tema de la implementación , como usar el EventLog... etc.. etc..

 

 

 

 

2. Haciéndolo instalable.

InstallerClass Añadimos al proyecto una Installer Class desde el menu "Add New Item", que nos provee la funcionalidad de instalación. Hay dos componentes que no están en la paleta que nos hacen falta, aunque se puede hacer "a pelo" ... siempre los añado...

 

 

 

componentes Añadimos a la paleta de componentes las clases ServiceInstaller y ServiceProcessInstaller . Añadimos estos componentes al diseñador de la clase instaladora y los configuramos. No hay mucho que configurar :P

 

 

 

 

ServiceInstaller En el ServiceInstaller, configuramos el nombre que mostrará, la descripción, el nombre por el que invocaremos al servicio y el tipo incio. Ponemos que el "Parent" es la clase InstallerClass.

 

 

 

 

 

ServiceProcessInstaller En el ServiceProcessInstaller configuramos la cuenta de usuario con la que se ejecutará el servicio, por lo general LocalService que es una cuenta con pocos privilegios. Ponemos que el "Parent" es la clase instaladora.

 

 

 

 

3. El instalador.

Instalador Añadimos al a solución un proyecto "Setup Project" que nos provee de la funcionalidad de un asistente instalador.

 

 

 

 

addprojectoutput Dentro de este proyecto, vamos al "File System Editor" y en "Application Folder" le decimos "Add Project Output", seleccionamos "Primary Output", nuestro proyecto en el combo y configuracion (Active) (para que use la que nosotros usemos ... Debug ó Release).

 

 

 

 

 

 

actionsoutput Ahora vamos al "Custom Actions Editor" y directamente sobre el elemento "Custom Actions" añadimos la salida del proyecto que hemos puesto en "Application Folder".

 

 

 

 

4. Instalando.

Install Construimos la solución y el proyecto de instalación, este último genera un paquete .msi y un .exe asociado, con eso ya se puede instalar por ahí :D pero para trabajar en desarrollo nada más comodo que botón derecho e Install ;)

 

 

 

Lo instalamos y vemos que ya aparece en nuestra consola de administración de servicios. Podemos iniciarlo, pararlo, reiniciarlo... etc...

mmc

5. Haciendo que se inicie automáticamente al instalarlo.

Si, aunque se configure que debe iniciarse automáticamente... eso será en el próximo reinicio de la máquina. Para que se inicie automáticamente la primera vez ... nos suscribimos al evento AfterInstall del componente ServiceInstaller que añadimos a la clase instaladora y hacemos que el servicio arranque con ServiceController:

private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
  using (ServiceController svc = new ServiceController("MiServicio"))
    svc.Start();
}

Con esto una vez el servicio este instalado automáticamente se iniciará.

Ahora podemos ponernos manos a la obra en integrar nuestra lógica dentro del servicio. Yo por comodidad... creo un proyecto "Console Application" normal para desarrollo y primeras pruebas, cuando ya esta todo listo... integro los ensamblados en el servicio, pero bueno... "cada maestrillo tiene su librillo..." :)

Actualmente calificado 5.0 por 3 persona(s)

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

.NET 2.0 | C# 2.0 | Windows

Related posts

Comentarios

enero 16. 2008 12:41

trackback

Trackback from Pensando en asíncrono

Servicios Windows instalables

Pensando en asíncrono

enero 27. 2008 05:47

Gravatar

Great! Desconocia esta forma, siempre lo hacía con InstallUtil.exe, así es más sencillo.

Gracias por compartir.

jose us

febrero 1. 2008 17:11

pingback

Pingback from elbruno.com

Servicios Windows con dependencias - vtortola

elbruno.com

febrero 1. 2008 17:12

pingback

Pingback from geeks.ms

Servicios Windows con dependencias - Pensando en asíncrono

geeks.ms

marzo 6. 2008 21:08

Gravatar

Que bueno que hay personas que le sgusta compartir sus conocimientos, espero seguir tu ejemplo y aportar algo util como tu lo has hecho.

Felicidades y gracias :)

Mario mx

marzo 17. 2008 17:37

Gravatar

Gracias, muy útil, pero .NET 2005 trae algunas novedades que ahorran un par de pasos, como en cuando indicas "Add Installer" ya deja agregados los componentes ServiceInstaller y ServiceProcessInstaller.

Salu2

German cl

marzo 25. 2008 13:09

Gravatar

Amigo:

Gracias por compartir tus conocimientos con los demás, ayuda bastante, sigue adelante!.

Saludos

Iván bo

Comments are closed

Powered by BlogEngine.NET 1.1.1.8
This theme is a variation of Mads Kristensen by Valeriano Tórtola

Valeriano Tórtola

Personal Ver perfil
E-mail Enviar correo
LinkedIn LinkedIn
Fotos Fotos
MCPD

Publicidad

Posts recientes

Disclaimer

Las opiniones mostradas aqui son mis opniones y no representan el punto de vista de mi empresa en ninguna forma.

Creative Commons License

Esta obra está bajo una licencia de Creative Commons

Locations of visitors to this page

© Copyright 2008

Sign in

Calendario

<<  noviembre 2008  >>
lumamijuvido
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Ver en calendario extendido