public static bool InstallAndStartService(ServerRole serverRole, Dictionary <string, string> installOptions, out string message) { message = null; bool startService = true; string configFile = null; if (installOptions != null) { const string run = "run"; if (installOptions.ContainsKey(run)) { bool.TryParse(installOptions[run], out startService); installOptions.Remove(run); } if (installOptions.ContainsKey(SynapseConfigParm)) { configFile = installOptions[SynapseConfigParm]; installOptions.Remove(SynapseConfigParm); } } SynapseServerConfig config = SynapseServerConfig.DeserializeOrNew(serverRole, configFile); bool ok = InstallOrUninstallService(install: true, configFile: configFile, message: out message); if (ok && startService) { try { Console.Write($"\r\nStarting {config.Service.Name}... "); ServiceController sc = new ServiceController(config.Service.Name); sc.Start(); sc.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromMinutes(2)); Console.WriteLine(sc.Status); } catch (Exception ex) { Console.WriteLine(); message = ex.Message; ok = false; } } return(ok); }
public static void InstallService(string[] args) { if (Environment.UserInteractive) { if (args.Length > 0) { bool ok = false; string message = string.Empty; bool cliParseError = false; Dictionary <string, string> options = args.Length > 1 ? CmdLineUtilities.ParseCmdLine(args, 1, ref cliParseError, ref message, null, true) : null; bool quiet = false; if (!cliParseError) { if (options != null && options.ContainsKey("quiet")) { bool.TryParse(options["quiet"], out quiet); options.Remove("quiet"); } } string arg0 = args[0].ToLower(); if (arg0 == "install" || arg0 == "i") { if (!cliParseError) { ok = InstallUtility.InstallAndStartService(serverRole: ServerRole.Server, installOptions: options, message: out message); } } else if (arg0 == "uninstall" || arg0 == "u") { ok = InstallUtility.StopAndUninstallService(installOptions: options, message: out message); } else if (arg0 == "genconfig" || arg0 == "gc") { string configFile = null; if (!cliParseError) { if (options != null && options.ContainsKey("filepath")) { configFile = options["filepath"]; } } SynapseServerConfig.DeserializeOrNew(ServerRole.Server, configFile); ok = true; } if (!ok) { WriteHelpAndExit(message, quiet); } else { Environment.Exit(0); } } else { WriteHelpAndExit(); } } }