Go to file
Oleg Nenashev 0e7cc49692 Decouple the documentation to several pages 2016-11-24 06:02:30 +03:00
doc Decouple the documentation to several pages 2016-11-24 06:02:30 +03:00
packages Add "version" and "help", handle unsupported commands (PR #81) 2015-02-03 00:05:56 +03:00
src Merge branch 'master' into winsw-2.0 2016-11-10 13:25:42 +01:00
.gitignore Strong name signing of merged assemblies. 2015-02-08 14:28:16 +03:00
LICENSE.txt Adding my current and former employers. 2013-03-01 15:26:40 -08:00
README.md Decouple the documentation to several pages 2016-11-24 06:02:30 +03:00
sign.sh Visual Studio isn't signing bits for me. 2016-08-02 08:53:51 -07:00
winsw.csproj Visual Studio isn't signing bits for me. 2016-08-02 08:53:51 -07:00

README.md

winsw: Windows service wrapper in less restrictive license

Why?

Now, I think the first question that people would ask is, why another, when there's Java Service Wrapper project already available. The main reason for writing my own was the license — Java Service Wrapper project is in GPL (so that they can sell their commercial version in a different license), and that made it difficult for Jenkins (which is under the MIT license) to use it.

Functionality-wise, there's really not much that's worth noting; the problem of wrapping a process as a Windows service is so well defined that there aren't really any room for substantial innovation. You basically write a configuration file specifying how you'd like your process to be launched, and we provide programmatic means to install/uninstall/start/stop services. Another notable difference is that winsw can host any executable, whereas Java Service Wrapper can only host Java apps.

Whether you like this or not depends on your taste, so I wouldn't claim mine is better. It's just different.

As the name implies, this is for Windows only. Unix systems have their own conventions for daemons, so a good behaving Unix daemon should just be using launchd/upstart/SMF/etc, instead of custom service wrapper.

Download

Binaries are available here

Available commands

Your renamed winsw.exe accepts the following commands:

  • install to install the service to Windows Service Controller
  • 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.

Documentation

Project status

  • WinSW 1.x - Maintenance only
  • winsw-1.17 fixes the most of active issues
  • winsw-1.17-beta.2 is available for the evaluation
  • New versions may be released on-demand
  • All new fixes will be ported to WinSW-2.x
  • WinSW 2.x - Active development, no stable releases available
  • winsw-2.0 - Current development branch
  • API stability is not guaranteed till the first release, the project structure is in flux

Build Environment

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