using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration.Install; using System.ServiceProcess; namespace Ease.SvcHost { class Program { private const string Help = "Ease.SvcHost Usage:\n" + "------------------------------------------------------\n" + "Ease.SvcHost -r[un]\n" + "Ease.SvcHost -i[nstall] name [\"... description ...\"]\n" + "Ease.SvcHost -u[ninstall] name\n\n" + "Notes:\n" + "Use quotes around name if name contains spaces.\n" + "Use -r option to verify host configuration in interactive mode."; /// /// Entry Point /// /// /// static void Main(string[] args) { if (args.Length > 0) { switch (args[0].ToLower()) { case "-i": case "-install": if (args.Length < 2 || args.Length > 3) { MessageWait("Wrong number of Arguments\n\n{0}", Help); return; } string n = "-name=" + args[1]; string d = "-desc=" + (args.Length > 2 ? args[2] : ""); try { ManagedInstallerClass.InstallHelper(new string[] { n, d, "Ease.SvcHost.exe" }); } catch (Exception ex) { MessageWait("Exception:\n{0}", ex.ToString()); return; } MessageWait(""); break; case "-u": case "-uninstall": if (args.Length < 2) { MessageWait("Wrong number of Arguments\n\n{0}", Help); return; } try { ManagedInstallerClass.InstallHelper(new string[] { "-u", "-name=" + args[1], "Ease.SvcHost.exe" }); } catch (Exception ex) { MessageWait("Exception:\n{0}", ex.ToString()); return; } MessageWait(""); break; case "-r": case "-run": RemotingHost host = new RemotingHost(); host.Start(); Console.WriteLine(host.Status); MessageWait(""); host.Stop(); MessageWait(host.Status); break; case "-start": if (args.Length >= 2) { ServiceBase.Run(new HostService(args[1])); } break; case "-?": case "-h": MessageWait(Help); break; default: MessageWait("Invalid Arguments\n\n{0}", Help); break; } } else { MessageWait(Help); } } static void MessageWait(string msg, params object[] args) { Console.WriteLine(""); Console.WriteLine(string.Format(msg, args)); Console.WriteLine(""); Console.WriteLine("Press Enter to continue ..."); Console.ReadLine(); } } }