jellyfin/MediaBrowser.ServerApplication/BackgroundServiceInstaller.cs

66 lines
2.2 KiB
C#
Raw Normal View History

2013-09-20 18:04:14 -07:00
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,
2013-09-20 18:04:14 -07:00
DelayedAutoStart = true,
Description = "The windows background service for Media Browser Server.",
// Will ensure the network is available
ServicesDependedOn = new[] { "LanmanServer" }
2013-09-20 18:04:14 -07:00
};
// 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";
}
}
}