using System.Collections; using System.ComponentModel; using System.ServiceProcess; namespace MediaBrowser.ServerApplication { [RunInstaller(true)] public class BackgroundServiceInstaller : System.Configuration.Install.Installer { public BackgroundServiceInstaller() { var process = new ServiceProcessInstaller { Account = ServiceAccount.LocalSystem }; var serviceAdmin = new ServiceInstaller { StartType = ServiceStartMode.Manual, ServiceName = BackgroundService.Name, DisplayName = BackgroundService.DisplayName, DelayedAutoStart = true, Description = "The windows background service for Media Browser Server.", // Will ensure the network is available ServicesDependedOn = new[] { "LanmanServer" } }; // Microsoft didn't add the ability to add a // description for the services we are going to install // To work around this we'll have to add the // information directly to the registry but I'll leave // this exercise for later. // now just add the installers that we created to our // parents container, the documentation // states that there is not any order that you need to // worry about here but I'll still // go ahead and add them in the order that makes sense. Installers.Add(process); Installers.Add(serviceAdmin); } protected override void OnBeforeInstall(IDictionary savedState) { Context.Parameters["assemblypath"] = "\"" + Context.Parameters["assemblypath"] + "\" " + GetStartArgs(); base.OnBeforeInstall(savedState); } protected override void OnBeforeUninstall(IDictionary savedState) { Context.Parameters["assemblypath"] = "\"" + Context.Parameters["assemblypath"] + "\" " + GetStartArgs(); base.OnBeforeUninstall(savedState); } private string GetStartArgs() { return "-service"; } } }