51 lines
1.7 KiB
C#
51 lines
1.7 KiB
C#
using System.ComponentModel;
|
|
using System.Configuration.Install;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.ServiceProcess;
|
|
|
|
namespace serviceInstaller
|
|
{
|
|
[RunInstaller(true)]
|
|
public class ProjectInstaller : Installer
|
|
{
|
|
private ServiceProcessInstaller processInstaller;
|
|
private ServiceInstaller serviceInstaller;
|
|
|
|
public ProjectInstaller()
|
|
{
|
|
processInstaller = new ServiceProcessInstaller
|
|
{
|
|
Account = ServiceAccount.LocalSystem
|
|
};
|
|
|
|
serviceInstaller = new ServiceInstaller
|
|
{
|
|
ServiceName = "Log4GraylogService",
|
|
DisplayName = "Log 4 Graylog Service",
|
|
Description = "Service for monitoring and sending log files to Graylog",
|
|
StartType = ServiceStartMode.Automatic
|
|
};
|
|
|
|
Installers.Add(processInstaller);
|
|
Installers.Add(serviceInstaller);
|
|
}
|
|
|
|
public override void Install(System.Collections.IDictionary stateSaver)
|
|
{
|
|
base.Install(stateSaver);
|
|
|
|
string assemblyPath = Context.Parameters["assemblypath"];
|
|
string exePath = Path.Combine(Path.GetDirectoryName(assemblyPath), "console_log4graylog.exe");
|
|
|
|
using (ServiceController sc = new ServiceController(serviceInstaller.ServiceName))
|
|
{
|
|
if (sc.Status == ServiceControllerStatus.Stopped)
|
|
{
|
|
Process.Start("sc", $"config \"{serviceInstaller.ServiceName}\" binPath= \"{exePath}\"");
|
|
Process.Start("sc", $"start \"{serviceInstaller.ServiceName}\"");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |