A wrapper executable that can run any executable as a Windows service, in a permissive license.
Windows 服务封装器.

Oleg Nenashev 98f32e1b51 Merge pull request #162 from oleg-nenashev/Maven-POM 9 years ago
doc 738ce95804 How to use (Group) Managed Service Accounts 9 years ago
src e0668a2530 Move pom.xml to the top level, use GitHub releases as a source 9 years ago
.gitignore 56883225eb Update .gitignore and remove the old repositories.config 9 years ago
CHANGELOG.md 91cf156fb8 Changelog: some text polishing 9 years ago
LICENSE.txt e69957824b Docs: Update LICENCE.txt, mention other contributors 9 years ago
MANIFEST.md 33efbdd7dd Docs: Decouple the project manifest to a standalone page 9 years ago
README.md 071afc3e6b .NET4 - Document supported .NET versions in README.md (solves #102) 9 years ago
appveyor.yml 1e393f96bc AppVeyor: use relative paths to NUnit test DLLs 9 years ago
pom.xml 9c13374d53 Issue #80 - Maven builds now picks releases from GitHub and verifies WinSW versions 9 years ago
sign.sh 6c0f6d1f7a Fixes #142 - Deploy the automatic build on Appveyor (#144) 9 years ago
winsw.csproj 6c0f6d1f7a Fixes #142 - Deploy the automatic build on Appveyor (#144) 9 years ago

README.md

winsw: Windows service wrapper in less restrictive license

Build status

WinSW is an executable binary, which can be used to wrap and manage a custom process as a Windows service. Once you download the installation package, you can rename winsw.exe to any name, e.g. myService.exe.

Why?

See the project manifest.

Download

Right now the project uses Jenkins Maven repository as a main storage of release files. Binaries are available here.

Some releases (e.g. alpha- and beta-versions) can be also downloaded from the project's GitHub page. This source of releases is not an official one.

Usage

WinSW is being managed by configuration files: Main XML Configuration file and EXE Config file.

Your renamed winsw.exe binary also accepts the following commands:

  • install to install the service to Windows Service Controller. This command requires some preliminary steps described in the Installation Guide.
  • uninstall to uninstall the service. The opposite operation of above.
  • start to start the service. The service must have already been installed.
  • stop to stop the service.
  • restart to restart the service. If the service is not currently running, this command acts like start.
  • status to check the current status of the service. This command prints one line to the console. NonExistent to indicate the service is not currently installed, Started to indicate the service is currently running, and Stopped to indicate that the service is installed but not currently running.

Supported .NET versions

WinSW 1.x Executable is being built with a .NET Framework 2.0 target, and by defaut it will work only for .NET Framework versions below 3.5. On the other hand, the code is known to be compatible with .NET Framework 4.0 and above. It is possible to declare the support of this framework via the exe.config file. See the Installation Guide for more details.

WinSW 2.x offers two executables, which declare .NET Frameworks 2.0 and 4.0 as targets. Naming and download sources for these binaries are currently in flux.

Documentation

Release lines

WinSW 2.x

This is a new release line under active development. API stability is not guaranteed till the first release, the project structure is in flux.

Major changes since 1.x:

  • Rework of the project structure
  • Better logging
  • Internal extension engine, which allows extending the WinSW behavior
  • Executable package targeting the .NET Framework 4.0

WinSW 1.x

This is an old baseline of WinSW. Currently it is in the maintenance-only state. New versions with fixes may be released on-demand.

Build Environment

  • IDE: Visual Studio Community 2013 (free for open-source projects)
  • winsw-key.snk should be available in the project's root in order to build the executable
    • You can generate the certificate in "Project Settings/Signing"
    • The certificate is in .gitignore list. Please do not add it to the repository