通过 winsw 把相关服务配置windows自启动
文章目录
- 描述
- winsw 项目地址
- 使用 WinSW 作为全球工具
- 使用 WinSW 作为捆绑工具
- 配置文件详解
- id
- name
- description
- env
- executable
- interactive
- arguments
- log
- startmode
- delayedAutoStart
- depend
- 本地系统帐户
- 本地服务帐户
- 网络服务帐户
- 工作目录

文章目录
- 描述
- winsw 项目地址
- 使用 WinSW 作为全球工具
- 使用 WinSW 作为捆绑工具
- 配置文件详解
- id
- name
- description
- env
- executable
- interactive
- arguments
- log
- startmode
- delayedAutoStart
- depend
- 本地系统帐户
- 本地服务帐户
- 网络服务帐户
- 工作目录
描述
WinSW(Windows Service Wrapper)是一个开源工具,旨在帮助在Windows操作系统上将任意可执行文件作为Windows服务运行。它特别适用于那些本身不支持直接安装为Windows服务的应用程序。通过使用WinSW,用户可以更容易地管理这些应用程序的生命周期,包括启动、停止和监控等操作。
以下是WinSW的一些主要特点和功能:
- 简化服务安装与卸载:通过简单的配置文件设置,即可轻松地将程序安装为Windows服务。
- 灵活的日志选项:允许用户自定义日志记录方式,如将输出重定向到文件或标准输出/错误流。
- 多种服务行为控制:提供了对服务失败后的重启策略、依赖项和服务状态检查等高级功能的支持。
- 跨平台兼容性:虽然名为WinSW,但其.NET版本也支持在Linux和macOS上运行(需要Mono框架支持),不过主要用途还是在Windows平台上。
- 与Java服务的集成:对于基于Java的应用程序,WinSW提供了一个专门的分支(winsw/java),以更好地支持这类应用的部署。
- 要使用WinSW,你需要准备一个可执行文件以及一个XML格式的配置文件,该配置文件中包含了如何运行该服务的具体指令,比如服务名称、描述、可执行命令行等信息。之后,你可以使用WinSW提供的命令来安装、启动、停止或卸载服务。
winsw 项目地址
https://github.com/winsw/winsw
使用 WinSW 作为全球工具
- 从分发版中获取WinSW.exe或WinSW.zip 。
- 编写myapp.xml(有关更多详细信息,请参阅XML 配置文件规范和示例)。
- 运行winsw install myapp.xml [options]以安装服务。
- 运行winsw start myapp.xml以启动该服务。
- 运行winsw status myapp.xml以查看您的服务是否已启动并正在运行。
使用 WinSW 作为捆绑工具
- 从发行版中获取WinSW.exe或WinSW.zip ,然后根据您的喜好重命名.exe(例如myapp.exe)。
- 编写myapp.xml(有关更多详细信息,请参阅XML 配置文件规范和示例)。
- 将这两个文件并排放置,因为这是 WinSW 发现其相关配置的方式。
- 运行myapp.exe install [options]以安装服务。
- 运行myapp.exe start以启动该服务。
配置文件详解
<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>
id
必需 指定 Windows 内部用来识别服务的 ID。此 ID 在系统中安装的所有服务中必须是唯一的,并且应完全由字母数字字符组成。
name
可选 服务的简短显示名称,可以包含空格和其他字符。此名称不应太长,例如<id>
,并且必须在给定系统的所有服务中保持唯一
description
可选的 较长且易于理解的服务描述。选择服务后,该描述将显示在 Windows 服务管理器中。
env
如果需要指定要为子进程设置的环境变量,可以多次指定此可选元素。语法为:
<env name="HOME" value="c:\abc" />
executable
必需 此元素指定要启动的可执行文件。它可以是绝对路径,也可以只指定可执行文件名称并让其从中进行搜索PATH(但请注意,服务通常在不同的用户帐户中运行,因此它可能与PATH您的 shell 不同。)
interactive
如果指定了此可选元素,则允许服务与桌面交互,例如显示新窗口和对话框。如果您的程序需要 GUI,请按如下方式设置它:
<interactive>true</interactive>
arguments
可选 元素<arguments>
指定要传递给可执行文件的参数。
<arguments>arg1 arg2 arg3</arguments>
log
startmode
可选 此元素指定 Windows 服务的启动模式。它可以是以下值之一:Automatic 或 Manual。有关更多信息,请参阅ChangeStartMode 方法。默认值为Automatic。
delayedAutoStart
可选Automatic如果定义了启动模式, 则此布尔选项启用延迟启动模式。有关更多信息,请参阅启动过程和延迟自动启动。
请注意,此启动模式不会对 Windows 7 和 Windows Server 2008 之前的旧 Windows 版本生效。在这种情况下,Windows 服务安装可能会失败。
<delayedAutoStart>true</delayedAutoStart>
depend
可选 指定此服务所依赖的其他服务的ID。当服务X依赖于服务时Y,X只有Y正在运行才能运行。
可以使用多个元素来指定多个依赖项。
<depend>Eventlog</depend>
<depend>W32Time</depend>
本地系统帐户
要明确使用LocalSystem 帐户,请指定以下内容:
<serviceaccount><username>LocalSystem</username>
</serviceaccount>
请注意,此帐户没有密码,因此任何提供的密码都会被忽略。
本地服务帐户
要使用LocalService 帐户,请指定以下内容:
<serviceaccount><username>NT AUTHORITY\LocalService</username>
</serviceaccount>
请注意,此帐户没有密码,因此任何提供的密码都会被忽略。
网络服务帐户
要使用NetworkService 帐户,请指定以下内容:
<serviceaccount><username>NT AUTHORITY\NetworkService</username>
</serviceaccount>
工作目录
某些服务需要在指定的工作目录下运行。为此,请指定如下元素:
<workingdirectory>C:\application</workingdirectory>