mirror of https://github.com/winsw/winsw
commit
6a20f07329
10
README.md
10
README.md
|
@ -17,12 +17,8 @@ See the [project manifest](MANIFEST.md).
|
|||
|
||||
Starting from WinSW v2, the releases are being hosted on [GitHub](https://github.com/winsw/winsw/releases) and [NuGet](https://www.nuget.org/packages/WinSW/).
|
||||
|
||||
Due to historical reasons, the project also uses [Jenkins Maven repository](https://jenkins.io/index.html) as a secondary source.
|
||||
Binaries are available [here](http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/).
|
||||
|
||||
The executables in all sources are [strong-named assemblies](https://msdn.microsoft.com/en-us/library/wd40t7ad%28v=vs.110%29.aspx), which are being signed by randomly generated keys.
|
||||
Do not rely on such strong names for security (as well as on other strong names as it recommended by Microsoft).
|
||||
They provide a unique identity only.
|
||||
Due to historical reasons, the project also uses the [Jenkins](https://jenkins.io/) Maven repository as a secondary source.
|
||||
Binaries are available [here](https://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/).
|
||||
|
||||
## Usage
|
||||
|
||||
|
@ -89,8 +85,6 @@ This is a new baseline of WinSW with several major changes:
|
|||
* Migration of the logging subsystem to Apache log4net
|
||||
* Bugfixes
|
||||
|
||||
See the full changelog in the [release notes](CHANGELOG.md).
|
||||
|
||||
The version v2 is **fully compatible** with the v1 configuration file format,
|
||||
hence the upgrade procedure just requires replacement of the executable file.
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ myapp.exe install <OPTIONS>
|
|||
```
|
||||
|
||||
... and you can use the exit code from these processes to determine whether the operation was successful.
|
||||
Possible return error codes are described [here](http://msdn.microsoft.com/en-us/library/aa389390%28VS.85%29.aspx).
|
||||
Possible exit codes are described [here](https://docs.microsoft.com/windows/win32/cimwin32prov/create-method-in-class-win32-service#return-value).
|
||||
Beyond these error codes, all the non-zero exit code should be assumed as a failure.
|
||||
|
||||
The Installer can be also started with the `/p` option.
|
||||
|
@ -93,7 +93,7 @@ One way to deal with this is to ensure that .NET Framework 2.0 is installed thro
|
|||
```
|
||||
|
||||
The way the runtime finds this file is by naming convention, so don't forget to rename a file based on your actual executable name (e.g. *myapp.exe*).
|
||||
See [this post](http://www.davidmoore.info/2010/12/17/running-net-2-runtime-applications-under-the-net-4-runtime/) for more about this.
|
||||
For more information, see [How to: Configure an App to Support .NET Framework 4 or later versions](https://docs.microsoft.com/dotnet/framework/migration-guide/how-to-configure-an-app-to-support-net-framework-4-or-4-5).
|
||||
None of the other flags are needed.
|
||||
|
||||
### WinSW Offline mode and Authenticode
|
||||
|
|
|
@ -55,7 +55,7 @@ This configuration must accompany a nested `<pattern>` element, which specifies
|
|||
</log>
|
||||
```
|
||||
|
||||
The syntax of the pattern string is specified by [DateTime.ToString()](http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx).
|
||||
The syntax of the pattern string is specified by [DateTime.ToString(String)](https://docs.microsoft.com/dotnet/api/system.datetime.tostring#System_DateTime_ToString_System_String_).
|
||||
For example, in the above example, the log of Jan 1, 2013 gets written to `myapp.20130101.out.log` and `myapp.20130101.err.log`.
|
||||
|
||||
## Rotate by size and time mode
|
||||
|
@ -72,10 +72,10 @@ Works in a combination of rotate size mode and rotate time mode, if the log file
|
|||
</log>
|
||||
```
|
||||
|
||||
The syntax of the pattern string is specified by [DateTime.ToString()](http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx).
|
||||
The syntax of the pattern string is specified by [DateTime.ToString(String)](https://docs.microsoft.com/dotnet/api/system.datetime.tostring#System_DateTime_ToString_System_String_).
|
||||
For example, in the above example, the log of Jan 1, 2013 gets written to `myapp.20130101.out.log` and `myapp.20130101.err.log`.
|
||||
|
||||
The syntax of the autoRollAtTime is specified by [TimeSpan.ToString()](https://msdn.microsoft.com/en-us/library/1ecy8h51(v=vs.110).aspx).
|
||||
The syntax of the autoRollAtTime is specified by [TimeSpan.ToString(String)](https://docs.microsoft.com/dotnet/api/system.timespan.tostring#System_TimeSpan_ToString_System_String_).
|
||||
For example, in the above example, at the start of the day it will roll the file over.
|
||||
|
||||
The `zipOlderThanNumDays` can only be used in conjection with autoRollAtTime, provide the number of days of files to keep.
|
||||
|
@ -87,7 +87,7 @@ The `zipOlderThanNumDays` can only be used in conjection with autoRollAtTime, pr
|
|||
</log>
|
||||
```
|
||||
|
||||
The zipDateFormat can only be used in conjection with autoRollAtTime, provide the zip file format using the [DateTime.ToString()](http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx).
|
||||
The zipDateFormat can only be used in conjection with autoRollAtTime, provide the zip file format using the [TimeSpan.ToString(String)](https://docs.microsoft.com/dotnet/api/system.timespan.tostring#System_TimeSpan_ToString_System_String_).
|
||||
|
||||
```xml
|
||||
<log mode="roll-by-size-time">
|
||||
|
@ -99,6 +99,6 @@ The zipDateFormat can only be used in conjection with autoRollAtTime, provide th
|
|||
## Error reporting
|
||||
|
||||
WinSW uses WMI underneath, and as such it uses its error code as the exit code.
|
||||
See [Create method of the Win32_Service class](https://docs.microsoft.com/windows/win32/cimwin32prov/create-method-in-class-win32-service) for the complete list of exit code.
|
||||
For the complete list of exit codes, see [return values of the Create method of the Win32_Service class](https://docs.microsoft.com/windows/win32/cimwin32prov/create-method-in-class-win32-service#return-value).
|
||||
|
||||
When winsw is running as a service, more detailed error information is reported to the Windows event log.
|
||||
|
|
|
@ -60,13 +60,13 @@ It can be either absolute path, or you can just specify the executable name and
|
|||
|
||||
This element specifies the start mode of the Windows service.
|
||||
It can be one of the following values: Boot, System, Automatic, or Manual.
|
||||
For more information, see [ChangeStartMode method](https://docs.microsoft.com/windows/win32/cimwin32prov/changestartmode-method-in-class-win32-service).
|
||||
For more information, see the [ChangeStartMode method](https://docs.microsoft.com/windows/win32/cimwin32prov/changestartmode-method-in-class-win32-service).
|
||||
The default value is `Automatic`.
|
||||
|
||||
### delayedAutoStart
|
||||
|
||||
This Boolean option enables the delayed start mode if the `Automatic` start mode is defined.
|
||||
More information about this mode is provided [here](https://blogs.technet.microsoft.com/askperf/2008/02/02/ws2008-startup-processes-and-delayed-automatic-start/).
|
||||
For more information, see [Startup Processes and Delayed Automatic Start](https://techcommunity.microsoft.com/t5/ask-the-performance-team/ws2008-startup-processes-and-delayed-automatic-start/ba-p/372692).
|
||||
|
||||
Please note that this startup mode will not take affect on old Windows versions older than Windows 7 and Windows Server 2008.
|
||||
Windows service installation may fail in such case.
|
||||
|
@ -128,7 +128,7 @@ As such, to specify multiple arguments, you'll specify multiple elements.
|
|||
|
||||
### stoptimeout
|
||||
|
||||
When the service is requested to stop, winsw first attempts to [GenerateConsoleCtrlEvent function](https://docs.microsoft.com/windows/console/generateconsolectrlevent) (similar to Ctrl+C),
|
||||
When the service is requested to stop, winsw first attempts to send a Ctrl+C signal,
|
||||
then wait for up to 15 seconds for the process to exit by itself gracefully.
|
||||
A process failing to do that (or if the process does not have a console),
|
||||
then winsw resorts to calling [TerminateProcess function](https://docs.microsoft.com/windows/win32/api/processthreadsapi/nf-processthreadsapi-terminateprocess) to kill the service instantly.
|
||||
|
@ -162,7 +162,7 @@ In those OSes, all that this does is to allow the user to switch to a separate w
|
|||
|
||||
### beeponshutdown
|
||||
|
||||
This optional element is to emit [simple tone](https://docs.microsoft.com/windows/win32/api/utilapiset/nf-utilapiset-beep) when the service shuts down.
|
||||
This optional element is to emit [simple tones](https://docs.microsoft.com/windows/win32/api/utilapiset/nf-utilapiset-beep) when the service shuts down.
|
||||
This feature should be used only for debugging, as some operating systems and hardware do not support this functionality.
|
||||
|
||||
### download
|
||||
|
@ -173,15 +173,15 @@ This operation runs when the service is started, before the application specifie
|
|||
For servers requiring authentication some parameters must be specified depending on the type of authentication. Only the basic authentication requires additional sub-parameters. Supported authentication types are:
|
||||
|
||||
* `none`: default, must not be specified
|
||||
* `sspi`: Microsoft [authentication](https://en.wikipedia.org/wiki/Security_Support_Provider_Interface) including Kerberos, NTLM etc.
|
||||
* `sspi`: Windows [Security Support Provider Interface](https://docs.microsoft.com/en-us/windows/win32/secauthn/sspi) including Kerberos, NTLM etc.
|
||||
* `basic`: Basic authentication, sub-parameters:
|
||||
* `user="UserName"`
|
||||
* `password="Passw0rd"`
|
||||
* `unsecureAuth="true": default="false"`
|
||||
|
||||
The parameter “unsecureAuth” is only effective when the transfer protocol is HTTP - unencrypted data transfer. This is a security vulnerability because the credentials are send in clear text! For a SSPI authentication this is not relevant because the authentication tokens are encrypted.
|
||||
The parameter `unsecureAuth` is only effective when the transfer protocol is HTTP - unencrypted data transfer. This is a security vulnerability because the credentials are send in clear text! For a SSPI authentication this is not relevant because the authentication tokens are encrypted.
|
||||
|
||||
For target servers using the HTTPS transfer protocol it is necessary, that the CA which issued the server certificate is trusted by the client. This is normally the situation when the server ist located in the Internet. When an organisation is using a self issued CA for the intranet this probably is not the case. In this case it is necessary to import the CA to the Certificate MMC of the Windows client. Have a look to the instructions on this [site](https://technet.microsoft.com/en-us/library/cc754841.aspx). The self issued CA must be imported to the Trusted Root Certification Authorities for the computer.
|
||||
For target servers using the HTTPS transfer protocol it is necessary, that the CA which issued the server certificate is trusted by the client. This is normally the situation when the server ist located in the Internet. When an organisation is using a self issued CA for the intranet this probably is not the case. In this case it is necessary to import the CA to the Certificate MMC of the Windows client. Have a look to the instructions on [Manage Trusted Root Certificates](https://docs.microsoft.com/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc754841(v=ws.11)). The self issued CA must be imported to the Trusted Root Certification Authorities for the computer.
|
||||
|
||||
By default, the `download` command does not fail the service startup if the operation fails (e.g. `from` is not available).
|
||||
In order to force the download failure in such case, it is possible to specify the `failOnError` boolean attribute.
|
||||
|
|
Loading…
Reference in New Issue