示例#1
0
        /// <summary>
        /// runs the Service
        /// </summary>
        /// <param name="parameters">Startup Parameters of the Application</param>
        /// <param name="configureHost">callback to configure the host, before it is started</param>
        public static void Run(string[] parameters, Action <IHostBuilder> configureHost)
        {
            var parser = new CommandLineParser.CommandLineParser(typeof(StartupArguments), false);
            var arg    = new StartupArguments();

            parser.Configure(parameters, arg);

            try
            {
                AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
                Console.WriteLine("Current Platform is: {0}",
                                  IntPtr.Size == 4 ? "x86" : IntPtr.Size == 8 ? "x64" : "unkonwn");
                if (arg.Install)
                {
                    var locationRaw = Assembly.GetEntryAssembly().Location;
                    var exeLocation = Path.Combine(Path.GetDirectoryName(locationRaw), Path.GetFileNameWithoutExtension(locationRaw));
                    File.WriteAllText($"{Assembly.GetEntryAssembly().Location}.install.bat",
                                      $"sc.exe create \"{ServiceConfigHelper.ServiceName}\" binpath=\"{exeLocation}.exe\" start={ToStartType(ServiceConfigHelper.StartType)} displayname=\"{ServiceConfigHelper.DisplayName ?? ServiceConfigHelper.ServiceName}\" {((ServiceConfigHelper.Dependencies?.Count ?? 0) == 0 ? "" : $"depend=\"{string.Join("/", ServiceConfigHelper.Dependencies)}\"")}");
                    Console.WriteLine($"{Assembly.GetEntryAssembly().Location}.install.bat ausführen.");
                }
                else if (arg.UnInstall)
                {
                    File.WriteAllText($"{Assembly.GetEntryAssembly().Location}.uninstall.bat",
                                      $"sc.exe uninstall \"{ServiceConfigHelper.ServiceName}\"");
                    Console.WriteLine($"{Assembly.GetEntryAssembly().Location}.uninstall.bat ausführen.");
                }
                else if (arg.Help)
                {
                    Console.WriteLine(parser.PrintUsage(true, 10, 75));
                }
                else
                {
                    ServiceStartup.RunService(arg, configureHost);
                }
            }
            catch (CommandLineSyntaxException ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(parser.PrintUsage(true, 10, 75));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.OutlineException());
            }
        }