You are on page 1of 7

Crear e instalar un Servicio Windows paso a paso

22 agosto, 2007 9 comentarios Hola a tod@s, En el siguiente artculo voy a explicar como hacer un ejemplo muy sencillo de servicio Windows, como crear un setup de instalacin y como poner en marcha dicho servicio. El ejemplo lo voy a hacer en C# framework 2.0 y lo que va a hacer es que cada 10 segundos escriba en un fichero de texto la fecha actual y el intervalo usado en milisegundos. 1. Creamos un nuevo proyecto de tipo Servicio de Windows. Le podemos llamar como queramos en mi caso WindowsService1

2. Nos vamos a las propiedades de la clase Service1.cs y ponemos a true "CanPauseAndContinue" y "CanShutdown" que por defecto son false. Como su propio nombre indican, nos permiten pausar, parar y reiniciar el servicio. 3. Ahora nos vamos a la parte de cdigo de Service1.cs y ponemos el siguiente cdigo:
y

Agregamos los siguientes espacios de nombres:

using System.Timers; using System.IO;


y

En el constructor agregamos las siguientes lneas debajo de InitializeComponent:

t = new Timer(10000); t.Elapsed +=new ElapsedEventHandler(t_Elapsed);


y

Declaramos el Timer t dentro de la clase:

private Timer t = null;


y

Agregamos el siguiente cdigo en el mtodo OnStart:

t.Start(); //Iniciamos el timer


y

Agregamos el siguiente cdigo en el mtodo OnStop;

t.Stop(); //Paramos el timer


y

Ahora creamos el evento que maneja el evento Elapsed del Timer:

void t_Elapsed(object sender, ElapsedEventArgs e) { try { string path = @"C:\log.txt"; TextWriter tw = new StreamWriter(path, true); tw.WriteLine("A fecha de : " + DateTime.Now.ToString() + ", Intervalo: " + t.Interval.ToString()); tw.Close(); } catch(Exception ex) { System.Diagnostics.EventLog.WriteEntry("Application", "Exception: " + ex.Message); } } 4. Aadimos un instalador al proyecto. Botn derecho sobre el proyecto en la ventana de Explorador de Soluciones, aadir nuevo Item.

5. Ahora nos vamos a la barra de herramientas y agregamos sobre el elemento anterior un ServiceInstaller y un ServiceProcessInstaller. Hay que tener en cuenta que por defecto no vienen en la barra de herramientas, pero los podis aadir con botn derecho sobre la barra de herramientas "Choose Items", con sta accin se nos mostrar un listado de todas las herramientas que podemos usar. Para nuestro ejemplo ordenamos por Namespace y buscamos System.ServiceProcess y agregamos a la toolbox stos elementos. Y luego los aadimos al Installer que hemos agregado al proyecto.

6. Configuramos las propiedades de los 2 elementos que hemos aadido en el paso 5 de la siguiente manera:
y

Para el elemento ServiceInstaller o StarType Automatic o Description "Ejemplo de Servicio de Windows" o DisplayName "Servicio que crea y escribe fichero" o ServiceName "Mi Servicio" Para el elemento ServiceProcessInstaller o Account LocalSystem (No se recomienda este tipo de permiso, pero al tener que escribir un fichero de texto, de esta manera no habr problemas, para el modo mas seguro sera crearse una cuenta de usuario con los mnimos privilegios posibles) o Parent Installer1 (cuidado con esta propiedad porque se puede desconfigurar y producir errores)

7. Generamos el proyecto. 8. Agregamos a la solucin un proyecto de setup. Fichero/Aadir/Nuevo Proyecto

9. Con botn derecho sobre el proyecto de setup en la ventana de explorador de soluciones, aadimos "Project Output"(Resultados del proyecto), en project nos aseguramos de tener nuestro proyecto de servicio de Windows, y estar seleccionada "Primary output"

10. Con botn derecho sobre el proyecto de setup en la ventana de explorador de soluciones, View / Custom Actions. 11. Ahora en "Custom Actions"(Acciones personalizadas) con botn derecho "Add Custom Actions", Seleccionamos "Application Folder" y luego "Primary output from WindowsService1 (Active)"

12. Muy importante es cambiar la propiedad DefaultLocation de "Application Folder" porque una vez generado el setup os puede dar el error que menciono en mi artculo anterior. En mi ejemplo [ProgramFilesFolder]\Service1 que nos lo instalar dentro de archivos de programa, en una carpeta llamada Service1. 13. Ahora generamos el proyecto de setup. Y una vez generado lo instalamos, para sto pinchando sobre el setup.exe generado, o desde el visual studio con botn derecho sobre el proyecto de setup instalar.

14. Una vez instalado el servicio lo ponemos en marcha o bien reiniciando, o con botn derecho sobre "Mi Pc"/Administrar, nos vamos a Servicios y Aplicaciones\Servicios y buscamos el servicio que hemos instalado, para eso miramos en Descripcin lo que hemos puesto en la propiedad "Description" o por nombre lo hemos puesto en DisplayName, y sobre l con botn derecho "Iniciar". Esperamos 10 segundos y nos vamos a C donde tenemos que tener un archivo log.txt.

15. Una vez probado podis detener el servicio y desinstalarlo ya sea con el visual studio de la misma forma que lo hemos instalado o en agregar o quitar programas del panel de control. No lo dejis corriendo porque os puede llenar el disco con el tiempo!!!!!! En este https://skydrive.live.com/?cid=41c0bfbbfe8e1519&id=41C0BFBBFE8E1519!477 os podis bajar el cdigo fuente por si tenis alguna duda. Y espero que os haya gustado.

You might also like