Skip to content

Latest commit

 

History

History
68 lines (51 loc) · 2.49 KB

README.md

File metadata and controls

68 lines (51 loc) · 2.49 KB

WindowsServiceHost

Simple Windows Service hosting library. Allows to install service with installutil.exe into Service Control Manager (SCM) or run as a Console Application.

Build status NuGet version

Why

Although Topshelf is really nice, it doesn't support installing services with installutil, which might be a show-stopper sometimes...

Requirements

.NET 4.6.x

Usage

In Console (or Windows) Application Project of your service solution:

  1. Reference WindowsServiceHost NuGet package

  2. Create a class, derived from WindowsService

public class MyServiceHost : WindowsService
{
///
}
  1. In the class, created on the previous step, implement function GetServiceConfiguration()
protected override ServiceConfiguration GetServiceConfiguration()
  => new ServiceConfiguration
   {
      ServiceName = "MyServiceName",
      DisplayName = "MyService Display Name",
      OnStart = Start,  // method to be executed on service start
      OnStop = Stop,    // method to be executed on service stop
      Account = ServiceAccount.User,    // account, under which the service will be running
      Installers = new[] {new EventLogInstaller()}  // any additional Installer you would like to be executed as well
    };
  1. Implement Start() and Stop() methods, referenced in the GetServiceConfiguration()

  2. In Main() method instantiate an object of the class create at step (1) and call Run() method on it:

internal static class Program
{
  private static void Main()
    => new MyServiceHost().Run();
}

Command-line arguments

The following command-line arguments are supported:

  • multiple installations of a service on the same machine:

installutil /serviceName="service_instance_name" /displayName="service_instance_display_name" MyService.exe

installutil /serviceName="service_instance_name" MyService.exe /uninstall

  • unattended installation with specific user account:

installutil /userName="user_name" /password="pwd" MyService.exe

  • installation with pre-defined account:

installutil /account="LocalService|NetworkService|LocalSystem" MyService.exe