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);
        }
Ejemplo n.º 2
0
        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();
                }
            }
        }