Page 1
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
1 OnGlasses.Net 2010 © Todos los derechos reservados.
Hola amigos el siguiente articulo permite explicar de forma clara como crear un servicio
windows y su instalador de una manera fácil y sencilla.
Crearemos un proyecto en C#, de tipo Windows Service, este ejemplo lo hare en Visual Studio
2010 y Framework 4.0, el cual será igual para versiones 2005 y 2008, así como Framework 2.0,
3.0 y 3.5.
Creamos el proyecto y le colocamos un nombre, para el ejemplo será WinsowsService1.
Asi sera la estructura del proyecto creado. Hacemos doble clic el objeto Service1.cs, luego en
propiedades (F4).
Page 2
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
2 OnGlasses.Net 2010 © Todos los derechos reservados.
En las propiedades "CanPauseAndContinue" y "CanShutdown" colocamos el valor True que
por defecto son False. Estas propiedades permiten pausar, reiniciar y detener el servicio
windows.
En el Code Behind del Service1.cs, agregaremos los siguientes using.
using System.Timers; using System.IO;
Igualmente agregaremos el using
using System.Configuration;
Para leer del archivo de configuración agregaremos la referencia de System.Configuration,
hacemos clic derecho en el proyecto sobre References y luego Add Reference. Ubicamos la
referencia solicitada y hacemos clic en OK.
Page 3
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
3 OnGlasses.Net 2010 © Todos los derechos reservados.
Ahora hacemos clic sobre el proyecto y hacemos clic en Propiedades (Properties). Y luego
sobre la pestaña Settings.
En settings agregaremos una llave que nos permitira configurar el path de la carpeta donde
escribiremos un archivo cada vez que un timer haga un intervalo. Para el ejemplo colocare la
llave strPathLog con el valor C:\Logs\LogService.txt.
Page 4
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
4 OnGlasses.Net 2010 © Todos los derechos reservados.
Volvemos a Service1.cs y agregamos un objeto Timer y lo inicializamos dentro del constructor
despues de InitializeComponent(), agregamos el evento Elapsed al timer.
Nota: Para mas información del timer vea http://msdn.microsoft.com/en-
us/library/system.timers.timer.elapsed.aspx
Agregamos el siguiente código al método OnStart(): myTimer.Start();
Agregamos el siguiente código al método OnStop(): myTimer.Stop();
Ahora creamos el evento que maneja el evento Elapsed (myTimer_Elapsed) del Timer, evento el cual nos permitira escribir en un log cada intervalo de tiempo del timer. void myTimer_Elapsed(object sender, ElapsedEventArgs e) { try { string strPathLog = ConfigurationManager.AppSettings["strPathLog"].ToString(); TextWriter tw = new StreamWriter(strPathLog, true); tw.WriteLine("Log registrado el : " + DateTime.Now.ToString() + ", Intervalo No.: " + myTimer.Interval.ToString()); tw.Close(); } catch (Exception ex) { System.Diagnostics.EventLog.WriteEntry("Application", "Excepción: " + ex.Message);
Page 5
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
5 OnGlasses.Net 2010 © Todos los derechos reservados.
} }
Para crear un instalador, agregaremos al proyecto un nuevo item, clic derecho sobre el
proyecto WindowsService1– Add – New Item..
Page 6
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
6 OnGlasses.Net 2010 © Todos los derechos reservados.
Seleccione el objeto Installer Class así como aparece en la imagen.
Debemos agregar al ToolBox o Barra de herramientas los elementos ServiceInstaller y
ServiceProcessInstaller. En el toolbox hacemos clic derecho en "Choose Items..." o Elegir
elementos.
Page 7
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
7 OnGlasses.Net 2010 © Todos los derechos reservados.
Se muestra la siguiente ventana en donde seleccionaremos los elementos ServiceInstaller y
ServiceProcessInstaler, haciendo clic en los checkbox a la izquierda.
Una vez agreguemos los elementos al toolbox los arrastraremos sobre el Installer class que
agregamos para nuestro ejemplo Installer1.cs y se vera de la siguiente manera.
Page 8
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
8 OnGlasses.Net 2010 © Todos los derechos reservados.
Para serviceInstaller1, uno de los elementos recientemente agregados daremos F4 o
propiedades y configuraremos. Description, DisplayName, ServiceName y StartType.
Propiedad Valor
Description Automatic
DisplayName Servicio ejemplo onglasses.net
ServiceName Servicio Onglasses.Net
StartType Automatic
Para el elemento serviceProcessInstaller1 (realiza trabajo común a todos los servicios de un
ejecutable. La utilidad de instalación lo utiliza para escribir valores del Registro asociados a los
servicios que desea instalar.) en sus propiedades configuramos, Account (Obtiene o establece
el tipo de cuenta en la que se ejecutará esta aplicación de servicio ejecutara el servicio).
Parent (Installer1 *cuidado con esta propiedad porque se puede des configurar y producir
errores)
Page 9
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
9 OnGlasses.Net 2010 © Todos los derechos reservados.
Ahora debemos generar un proyecto de tipo instalador. Sobre la solución hacer clic derecho en
Add o Agregar – New Project.
Seleccionamos en Other Project Types u Otros tipos de proyectos, Setup Project. Le damos un
nombre, para el ejemplo será Setup1.
Page 10
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
10 OnGlasses.Net 2010 © Todos los derechos reservados.
Sobre el proyecto creado Setup1, hacer clic derecho dar clic en Add – Project Output…,
Page 11
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
11 OnGlasses.Net 2010 © Todos los derechos reservados.
Seleccione Primary output, para el proyecto WindowsService1 lo cual permite agregar los
ejecutables de nuestro servicio Windows.
Hacer clic derecho sobre el proyecto de Setup1 en la ventana del explorador de soluciones, y
seleccionar Custom Actions.
Page 12
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
12 OnGlasses.Net 2010 © Todos los derechos reservados.
Hacemos clic derecho sobre Custom Actions y Seleccionamos Add Custom Action…
Hacemos clic sobre Application Folder.
Seleccionamos Primary output from WindowsService1(Active).
Page 13
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
13 OnGlasses.Net 2010 © Todos los derechos reservados.
He visto y es importante cambiar la propiedad DefaultLocation de "Application Folder"
porque una vez se genera el Setup puede dar un error de instalación. Para este articulo
[ProgramFilesFolder]\[ProductName] permite instalarlo dentro de archivos de programa, en
una carpeta llamada con el nombre del producto, también puede ser de la forma
[ProgramFilesFolder]\Onglasses.
Una vez terminamos nuestro instalador es importante generar el proyecto WindowsService1 y
seguido generar el proyecto Setup1. Una vez se ha realizado la generación de los proyectos
correctamente y si no hay errores podemos ejecutar el instalador, el cual se puede realizar
directamente desde la carpeta donde se genero o en el Visual Studio, hacer clic derecho sobre
Setup1 y dar clic en Install, desde esta opción igualmente se puede ejecutar Unistall.
Page 14
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
14 OnGlasses.Net 2010 © Todos los derechos reservados.
Page 15
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
15 OnGlasses.Net 2010 © Todos los derechos reservados.
Una vez se ejecuta el instalador damos clic en Next o Siguiente.
Seleccionamos la carpeta de instalación.
Page 16
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
16 OnGlasses.Net 2010 © Todos los derechos reservados.
Estado de la instalación.
Page 17
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
17 OnGlasses.Net 2010 © Todos los derechos reservados.
Instalación finalizada o completa.
Para verificar nuestro instalador vamos a Inicio – Ejecutar, escribimos services.msc.
Abriremos el administrador de servicios ubicamos el servicio de onglasses.net y podemos
iniciarlo, clic derecho sobre el servicio e Iniciar.
Page 18
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
18 OnGlasses.Net 2010 © Todos los derechos reservados.
Progreso de iniciación del servicio.
Ahora vamos a la ruta del log y verificamos el funcionamiento del servicio
C:\Logs\LogService.txt.
Page 19
Crear un servicio Windows y un Instalador
para un servicio Windows.
Oscar Hernando Barón Roa
19 OnGlasses.Net 2010 © Todos los derechos reservados.
Bueno espero les haya sido de mucha utilidad este tutorial, los servicios Windows en muchos
casos son útiles pero a veces mal utilizados.
Junto a este tutorial podrán encontrar el código fuente del ejemplo que se encuentra en Visual
Studio 2010.
Saludos!!