static void Main(string[] args)
        {
            var service = new MyProductsService();

            if (args.Length == 0)
            {
                ServiceBase.Run(service);
            }
            else
            {
                var arg = args[0];

                try
                {
                    switch (arg)
                    {
                        case "--console":
                            RunInteractive(service, args);
                            break;
                        case "--install":
                            ManagedInstallerClass.InstallHelper(new[] { Assembly.GetExecutingAssembly().Location });
                            break;
                        case "--uninstall":
                            ManagedInstallerClass.InstallHelper(new[] { "/u", Assembly.GetExecutingAssembly().Location });
                            break;
                    }
                }
                catch (Exception)
                {
                    // TODO: logging...
                    throw;
                }
            }
        }
        private static void RunInteractive(MyProductsService service, string[] args)
        {
            service.InteractiveStart(args);

            Console.WriteLine("myProducts Service running.");
            Console.WriteLine("Press Enter to Quit...");
            Console.ReadLine();

            service.InteractiveStop();
        }