mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
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 Emby Server.",
 | 
						|
 | 
						|
                // Will ensure the network is available
 | 
						|
                ServicesDependedOn = new[] { "LanmanServer", "Tcpip" }
 | 
						|
            };
 | 
						|
 | 
						|
            // 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";
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |