Beispiel #1
0
        private void Configure(HostConfigurator hostOptions)
        {
            hostOptions.SetDescription("PickleJar.ServiceHost.Description");
            hostOptions.SetDisplayName("PickleJar.ServiceHost.DisplayName");
            hostOptions.SetServiceName("PickleJar.ServiceHost.ServiceName");

            hostOptions.Service <AppRootService>(ConfigureService);

            hostOptions.EnablePauseAndContinue();
            hostOptions.EnableShutdown();

            hostOptions.DependsOnEventLog();
            hostOptions.RunAsNetworkService();
            hostOptions.StartAutomaticallyDelayed();

            hostOptions.UseSerilog();

            hostOptions.OnException(SetupLogging.LogException);
            hostOptions.AfterInstall(SetupLogging.AfterInstall);
            hostOptions.BeforeUninstall(SetupLogging.BeforeUninstall);
        }
        private void Configure(HostConfigurator config)
        {
            config.Service <ISelfUpdatableService>(service =>
            {
                service.ConstructUsing(settings => selfUpdatableService);

                service.WhenStarted((s, hostControl) =>
                {
                    s.Start();
                    return(true);
                });

                service.AfterStartingService(() => { updater?.Start(); });

                service.WhenStopped(s => { s.Stop(); });
            });

            config.SetServiceName(serviceName);
            config.SetDisplayName(serviceDisplayName);
            config.StartAutomatically();
            config.EnableShutdown();

            if (promtCredsWhileInstall)
            {
                config.RunAsFirstPrompt();
            }
            else
            {
                config.RunAsLocalSystem();
            }

            config.AddCommandLineSwitch("squirrel", _ => { });
            config.AddCommandLineDefinition("firstrun", _ => Environment.Exit(0));
            config.AddCommandLineDefinition("obsolete", _ => Environment.Exit(0));
            config.AddCommandLineDefinition("updated", version => { config.UseHostBuilder((env, settings) => new UpdateHostBuilder(env, settings, version, withOverlapping)); });
            config.AddCommandLineDefinition("install", version => { config.UseHostBuilder((env, settings) => new InstallAndStartHostBuilder(env, settings, version)); });
            config.AddCommandLineDefinition("uninstall", _ => { config.UseHostBuilder((env, settings) => new StopAndUninstallHostBuilder(env, settings)); });
        }
Beispiel #3
0
        public static void ConfigureTownCrierService(this HostConfigurator config, Func <ITownCrier> townCrierFactory)
        {
            config.EnableServiceRecovery(rc =>
            {
                rc.RestartService(1);
                rc.SetResetPeriod(7);
            });

            config.EnablePauseAndContinue();
            config.EnableShutdown();

            config.Service <ITownCrier>(s =>
            {
                s.ConstructUsing(name => townCrierFactory());
                s.WhenStarted(tc =>
                {
                    Log.Information("Starting...");
                    TownCrier = tc;
                    SystemEvents.PowerModeChanged += OnPowerChange;
                    tc.Start();
                });
                s.WhenStopped(tc =>
                {
                    Log.Information("Stopping...");
                    TownCrier = tc;
                    SystemEvents.PowerModeChanged -= OnPowerChange;
                    tc.Stop();
                });
                s.WhenPaused(tc =>
                {
                    Log.Information("Pausing...");
                    TownCrier = tc;
                    SystemEvents.PowerModeChanged -= OnPowerChange;
                    tc.Stop();
                });

                s.WhenContinued(tc =>
                {
                    Log.Information("Continuing...");
                    TownCrier = tc;
                    SystemEvents.PowerModeChanged += OnPowerChange;
                    tc.Start();
                });

                s.WhenShutdown(tc =>
                {
                    Log.Information("Shutting down...");
                    TownCrier = tc;
                    SystemEvents.PowerModeChanged -= OnPowerChange;
                    tc.Stop();
                });

                s.WhenPowerEvent((service, args) =>
                {
                    Log.Information($"PowerEvent ({args.EventCode})");
                    return(false);
                });
            });

            config.RunAsLocalSystem();
            config.StartAutomatically();
        }
Beispiel #4
0
        /// <summary>
        /// Configures the specified configuration.
        /// </summary>
        /// <param name="config">The configuration.</param>
        private void Configure(HostConfigurator config)
        {
            try
            {
                config.Service <ISelfUpdatableService>(service =>
                {
                    service.ConstructUsing(settings => selfUpdatableService);
                    service.WhenStarted((s, hostControl) =>
                    {
                        s.Start();
                        return(true);
                    });
                    service.AfterStartingService(() => { updater?.Start(); });
                    service.WhenStopped(s => { s.Stop(); });
                });
                config.StartAutomatically();
                config.EnableShutdown();
                config.UseAssemblyInfoForServiceInfo(HostAssembly);
                if (promptForCredentialsWhileInstalling)
                {
                    config.RunAsFirstPrompt();
                }
                else
                {
                    if (TypeRunAs == RunAS.LocalSystem)
                    {
                        config.RunAsLocalSystem();
                    }
                    else if (TypeRunAs == RunAS.LocalService)
                    {
                        config.RunAsLocalService();
                    }
                    else if (TypeRunAs == RunAS.NetworkService)
                    {
                        config.RunAsNetworkService();
                    }
                    else if (TypeRunAs == RunAS.SpecificUser)
                    {
                        if (string.IsNullOrEmpty(serviceLogin))
                        {
                            throw new Exception("Service Login not specified");
                        }

                        if (string.IsNullOrEmpty(servicePassword))
                        {
                            throw new Exception("Service Password not specified");
                        }

                        config.RunAs(serviceLogin, servicePassword);
                    }
                }

                config.AddCommandLineSwitch("squirrel", _ => { });
                config.AddCommandLineDefinition("firstrun", _ => Environment.Exit(0));
                config.AddCommandLineDefinition("obsolete", _ => Environment.Exit(0));
                config.AddCommandLineDefinition("updated", version => { config.UseHostBuilder((env, settings) => new UpdateHostBuilder(env, settings, version, withOverlapping)); });
                config.AddCommandLineDefinition("install", version => { config.UseHostBuilder((env, settings) => new InstallAndStartHostBuilder(env, settings, version)); });
                config.AddCommandLineDefinition("uninstall", _ => { config.UseHostBuilder((env, settings) => new StopAndUninstallHostBuilder(env, settings)); });
            } catch (Exception ex)
            {
                Log.Error("Exception : ", ex);
            }
        }
 public void WhenShutdown(Action <T, HostControl> shutdown)
 {
     _configurator.EnableShutdown();
     _shutdown = shutdown;
 }