设置程序以服务启动-WinSW

本文最后更新于:2023年8月21日 上午

项目地址 👈

winsw/winsw: A wrapper executable that can run any executable as a Windows service, in a permissive license. (github.com)

前言 👈

WinSW 可以将任何应用程序包装和管理为 Windows 服务。

下载建议 👈

我的电脑上是 Windows Server 2022,下载的版本是 WinSW-net461.exe
为了方便后续的操作,下载后建议重命名为 winsw.exe。

编写配置文件 👈

官方提供了XML 配置文件规范和一些配置文件示例,里面有所有配置项和详细的注释。对于简单的使用不需要那么复杂,所以我对其进行了精简:

1
2
3
4
5
6
7
8
9
<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 - 服务的ID。必须在所有服务中是唯一的,由字母数字字符组成。

  • name - 服务的显示名称。可以和 id 一样,也需要在所有服务中是唯一的,可以包含空格和其他字符。

  • description - 描述。随便写,自己明白就行,或者不写也行。

  • env - 环境变量,按需填写。

  • executable - 可以是程序文件名,也可以是绝对路径。推荐放和程序在一起,直接写文件名就行。

  • arguments - 程序的启动参数,有就写,没有就删除。

  • log mode - 日志模式。默认是追加模式(append),即无限制写入。如果不想让日志变得无限大建议设置为 reset。不需要日志则设置为 none

创建一个与 winsw 程序本体名称一致的.xml 后缀的空白文档,如果 winsw 程序本体是 winsw.exe,那么配置文件命名为 winsw.xml,放在一起,然后把上面的内容复制进去,然后按需求进行修改。

下面是我编写的某个配置文件:

1
2
3
4
5
6
7
<service>
<id>UnblockNeteaseMusic</id>
<name>UnblockNeteaseMusic</name>
<description>UnblockNeteaseMusic Background Service</description>
<executable>UnblockNeteaseMusic.bat</executable>
<log mode="reset"></log>
</service>

注册服务 👈

默认配置文件注册

写完配置文件,确定程序和 winsw.exewinsw.xml 在同一路径下,在这个路径以管理员权限打开 cmd 或者 Powershell ,输入 winsw.exe install ,如果不出意外,会输出一下信息:

1
2
Installing service 'UnblockNeteaseMusic (UnblockNeteaseMusic)'...
Service 'UnblockNeteaseMusic (UnblockNeteaseMusic)' was installed successfully.

UnblockNeteaseMusic 这里的字符应该是你自己写的程序的 id ,这里仅用于演示。

指定配置文件注册

与默认配置不同一点是,指定配置文件只需在 winsw.exe install 命令后加上 xml 文件名称,如 winsw.exe install myapp.xml

winsw.exe 不在同目录下需要加上文件路径可在命令后加入自定义选项,选项详情参考官方示例

启动服务 👈

输入 winsw.exe start 启动服务,这样程序就在后台无窗口运行了,重启开机也会无窗口自动启动。停止运行则输入 winsw.exe stop。你也可以在 Win­dows 的任务管理器或者服务中管理这个程序的服务。

同样,指定配置文件启动,请输入 winsw.exe start myapp.xml

查看服务状态 👈

输入 winsw status 即可查看服务状态。

同样,指定配置文件查看,请输入 winsw.exe status myapp.xml

卸载服务 👈

如果不再需要这个服务,先停止服务,然后输入 winsw.exe uninstall 即可卸载服务。

同样,指定配置文件卸载,请输入 winsw.exe uninstall myapp.xml

文章出处

开机启动并隐藏 cmd 窗口程序在后台运行 - winsw 使用教程


设置程序以服务启动-WinSW
https://blog.xuven.xyz/post/WinSW/
作者
Xuven Li
发布于
2022年11月21日
许可协议