<?xml version="1.0"?>
<Template originator   = "Mike Krueger"
          created      = "02/01/2003"
          lastModified = "16/06/2006">
	
	<!-- Template Header -->
	<TemplateConfiguration>
		<Name>${res:Templates.Project.WindowsService.Name}</Name>
		<Category>C#</Category>
		<Subcategory>${res:Templates.File.Categories.WindowsApplications}</Subcategory>
		<Icon>C#.Project.ServiceProject</Icon>
		<LanguageName>C#</LanguageName>
		<Description>${res:Templates.Project.WindowsService.Description}</Description>
	</TemplateConfiguration>
	
	<!-- Actions -->
	<Actions>
		<Open filename = "${ProjectName}.cs"/>
	</Actions>

	<!-- Template Content -->
	<Combine name = "${ProjectName}" directory = ".">
		<Options>
			<StartupProject>${ProjectName}</StartupProject>
		</Options>
		
		<Project name = "${ProjectName}" directory = ".">
			<Options />

			<ProjectItems>
				<Reference Include="System" />
				<Reference Include="System.Configuration.Install" />
				<Reference Include="System.Data" />
				<Reference Include="System.ServiceProcess" />
				<Reference Include="System.Xml" />
			</ProjectItems>

			<Files>
				<File name="${ProjectName}.cs"><![CDATA[${StandardHeader.C#}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;

namespace ${StandardNamespace}
{
	public class ${ProjectName} : ServiceBase
	{
		public const string MyServiceName = "${ProjectName}";
		
		public ${ProjectName}()
		{
			InitializeComponent();
		}
		
		private void InitializeComponent()
		{
			this.ServiceName = MyServiceName;
		}
		
		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose(bool disposing)
		{
			// TODO: Add cleanup code here (if required)
			base.Dispose(disposing);
		}
		
		/// <summary>
		/// Start this service.
		/// </summary>
		protected override void OnStart(string[] args)
		{
			// TODO: Add start code here (if required) to start your service.
		}
		
		/// <summary>
		/// Stop this service.
		/// </summary>
		protected override void OnStop()
		{
			// TODO: Add tear-down code here (if required) to stop your service.
		}
	}
}
]]></File>
				<File name="ProjectInstaller.cs"><![CDATA[${StandardHeader.C#}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.ServiceProcess;

namespace ${StandardNamespace}
{
	[RunInstaller(true)]
	public class ProjectInstaller : Installer
	{
		private ServiceProcessInstaller serviceProcessInstaller;
		private ServiceInstaller serviceInstaller;
		
		public ProjectInstaller()
		{
			serviceProcessInstaller = new ServiceProcessInstaller();
			serviceInstaller = new ServiceInstaller();
			// Here you can set properties on serviceProcessInstaller or register event handlers
			serviceProcessInstaller.Account = ServiceAccount.LocalService;
			
			serviceInstaller.ServiceName = ${ProjectName}.MyServiceName;
			this.Installers.AddRange(new Installer[] { serviceProcessInstaller, serviceInstaller });
		}
	}
}
]]></File>
				<File name="Program.cs"><![CDATA[${StandardHeader.C#}

using System;
using System.Collections.Generic;
using System.ServiceProcess;
using System.Text;

namespace ${ProjectName}
{
	static class Program
	{
		/// <summary>
		/// This method starts the service.
		/// </summary>
		static void Main()
		{
			// To run more than one service you have to add them here
			ServiceBase.Run(new ServiceBase[] { new ${ProjectName}() });
		}
	}
}
]]></File>
				<File name="AssemblyInfo.cs" src="DefaultAssemblyInfo.cs"/>
			</Files>
		</Project>
	</Combine>
</Template>