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