using System; using Microsoft.Win32; using System.Collections; using System.ComponentModel; using System.ServiceProcess; using System.Configuration.Install; namespace Ease.SvcHost { /// /// Summary description for Installer. /// [RunInstaller(true), ToolboxItem(false)] public class HostServiceInstaller : Installer { private ServiceInstaller _serviceInstaller; public HostServiceInstaller() { _serviceInstaller = new ServiceInstaller(); _serviceInstaller.StartType = ServiceStartMode.Automatic; ServiceProcessInstaller processInstaller = new ServiceProcessInstaller(); processInstaller.Account = ServiceAccount.LocalSystem; Installers.AddRange(new System.Configuration.Install.Installer[] { _serviceInstaller, processInstaller }); } private string GetServiceName(string name) { return string.Format("Ease.SvcHost{0}{1}", (name.Length > 0 ? "_" : ""), name.Replace(" ", "_")).Trim(); } public override void Install(IDictionary stateSaver) { string name = string.Empty, desc = string.Empty; if (Context.Parameters.ContainsKey("name")) name = Context.Parameters["name"]; if (Context.Parameters.ContainsKey("desc")) desc = Context.Parameters["desc"]; _serviceInstaller.DisplayName = string.Format("Ease.SvcHost{0} {1}", (name.Length > 0 ? ":" : ""), name).Trim(); _serviceInstaller.ServiceName = this.GetServiceName(name); base.Install(stateSaver); RegistryKey key = RegistryHelper.GetServiceKey(_serviceInstaller.ServiceName); key.SetValue("ImagePath", (string)key.GetValue("ImagePath") + " -start " + _serviceInstaller.ServiceName); key.SetValue("Description", desc.Length == 0 ? "Ease Service Host" : desc); key.Close(); } public override void Uninstall(IDictionary savedState) { string name = string.Empty; if (Context.Parameters.ContainsKey("name")) name = Context.Parameters["name"]; _serviceInstaller.ServiceName = this.GetServiceName(name); base.Uninstall(savedState); } } }