19
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).

crear servicio windows c# vs2010

Embed Size (px)

Citation preview

Page 1: crear servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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 servicio windows c# vs2010

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!!