.github | ||
docs | ||
eng | ||
samples | ||
src | ||
.gitattributes | ||
.gitignore | ||
CONTRIBUTING.md | ||
Directory.Build.props | ||
LICENSE.txt | ||
MANIFEST.md | ||
README.md | ||
WinSW.nuspec |
Windows Service Wrapper in a permissive license
WinSW wraps and manages any application as a Windows service.
We are actively developing WinSW 3. Please refer to the v2 branch for previous version documentation.
Why?
See the project manifest.
Supported platforms
WinSW 3 can run on Windows platforms with .NET Framework 4.6.1 or later versions installed. For systems without .NET Framework, the project provides native 64-bit and 32-bit executables based on .NET 7.
More executables can be added upon request.
.NET Framework system requirements
Preinstalled since Windows 10, version 1511 and Windows Server 2016.
Installable since Windows 7 SP1 and Windows Server 2008 R2 SP1.
.NET 7 system requirements
Supported since Windows 10, version 1607, Windows Server (Core) 2012 R2 and Nano Server, version 1809.
Download
Latest release and pre-release WinSW binaries are available on GitHub Releases.
Alternative sources:
- CI builds are available on Azure Pipelines.
- NuGet. (2.x)
- Maven packaging for executables, hosted by the Jenkins project. Binaries are available here. (2.x)
Get started
Use WinSW as a global tool
- Take WinSW.exe or WinSW.zip from the distribution.
- Write myapp.xml (see the XML config file specification and samples for more details).
- Run
winsw install myapp.xml [options]
to install the service. - Run
winsw start myapp.xml
to start the service. - Run
winsw status myapp.xml
to see if your service is up and running.
Use WinSW as a bundled tool
- Take WinSW.exe or WinSW.zip from the distribution, and rename the .exe to your taste (such as myapp.exe).
- Write myapp.xml (see the XML config file specification and samples for more details).
- Place those two files side by side, because that's how WinSW discovers its co-related configuration.
- Run
myapp.exe install [options]
to install the service. - Run
myapp.exe start
to start the service.
Sample configuration file
You write the configuration file that defines your service. The example below is a primitive example being used in the Jenkins project:
<service>
<id>jenkins</id>
<name>Jenkins</name>
<description>This service runs Jenkins continuous integration system.</description>
<env name="JENKINS_HOME" value="%BASE%"/>
<executable>java</executable>
<arguments>-Xrs -Xmx256m -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>
<log mode="roll"></log>
</service>
The full specification of the configuration file is available here. You can find more samples here.
Usage
WinSW is being managed by the XML configuration file.
Your renamed WinSW.exe binary also accepts the following commands:
Command | Description |
---|---|
install | Installs the service. |
uninstall | Uninstalls the service. |
start | Starts the service. |
stop | Stops the service. |
restart | Stops and then starts the service. |
status | Checks the status of the service. |
refresh | Refreshes the service properties without reinstallation. |
customize | Customizes the wrapper executable. |
dev | Experimental commands. |
Experimental commands:
Command | Description |
---|---|
dev ps | Draws the process tree associated with the service. |
dev kill | Terminates the service if it has stopped responding. |
dev list | Lists services managed by the current executable. |
Most commands require Administrator privileges to execute. WinSW will prompt for UAC in non-elevated sessions.
Documentation
- Migrate to WinSW 3.x
- Configuration:
- Use cases:
Contributing
Contributions are welcome! See the contributing guidelines for more information.
License
WinSW is licensed under the MIT license.