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();
}
}
}