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";
|
|
}
|
|
}
|
|
}
|