static void Main(string[] args) { var service = new SampleService(); if (!Environment.UserInteractive) { // Service mode. ServiceBase.Run(service); return; } if (args.Length == 1) { // Install mode. switch (args[0].ToLower()) { case "/i": if (!IsInstalled(service)) { CallInstaller(); return; } Console.WriteLine($"Service {service.ServiceName} is already installed."); return; case "/u": if (IsInstalled(service)) { CallInstaller(option: args[0]); return; } Console.WriteLine($"Service {service.ServiceName} is not installed."); return; default: break; } } // Interactive mode. service.OnStartByConsole(args); Console.WriteLine("Press any keys to stop service."); Console.ReadKey(); service.OnStopByConsole(); }
private static bool IsInstalled(SampleService service) { return (ServiceController.GetServices() .Any(s => s.ServiceName == service.ServiceName)); }