在 Windows 系统中,有时我们需要将 jar、exe 等文件作为 Windows 服务运行。本文将介绍如何使用 WinSW 工具来实现这一目的。
WinSW 是一个强大的工具,可以将各种程序文件设置为 Windows 服务。如果使用 sc.exe、nssm 等工具时,程序文件不符合 Windows 服务要求导致服务无法启动,那么 WinSW 可能是你的最佳选择。
WinSW 可从 github /winsw/winsw/releases 下载。下载后可以根据需要将其命名为“WinSW.exe”(不改名也可,但前后配置需保持一致)。
此文件用于安装后台服务。运行时会显示提示信息“请按任意键开始安装后台服务...”,按下任意键后,程序会切换到当前目录,执行WinSW.exe install命令进行服务安装,然后启动指定的服务,最后提示“请按任意键退出...”。需要注意的是,此文件需以管理员身份运行。
@echo on
:color 2f
chcp 65001
mode con: cols=80 lines=25
@echo 请按任意键开始安装后台服务...&pause>nul
cd /d %~dp0
WinSW.exe install
net start helloword
@echo 请按任意键退出...&pause>nul
用于卸载后台服务。运行时会提示“请按任意键开始卸载后台服务...”,按下任意键后,先停止指定的服务,再执行WinSW.exe uninstall命令进行服务卸载,最后提示“请按任意键退出...”。
@echo on
:color 2f
chcp 65001
mode con: cols=80 lines=25
@echo 请按任意键开始卸载后台服务...&pause>nul
cd /d %~dp0
net stop helloword
WinSW.exe uninstall
@echo 请按任意键退出...&pause>nul
这是 WinSW 的配置文件,采用 XML 格式,遵循 MIT 许可证。配置文件中包含了服务的各种配置信息,如服务 ID、显示名称、描述、可执行文件路径及参数、启动模式和日志路径等。
例如:
<service>
<id>helloword</id>
<name>helloword</name>
<description>helloword</description>
<executable>%BASE%\helloword.exe</executable>
<arguments>server "%BASE%\data"</arguments>
<startmode>Automatic</startmode>
<logpath>%BASE%\logs</logpath>
<log mode="append">rotate</log>
</service>
其中,<id>定义服务唯一 ID;<name>和<description>分别设置服务显示名称和描述;<executable>指定要执行的可执行文件路径;<arguments>为可执行文件传递参数;<startmode>设置服务启动模式为自动;<logpath>定义日志存储路径;<log mode="append">rotate</log>设置日志记录模式为rotate(基于大小)。
通过以上步骤,你就可以使用 WinSW 工具将你的程序文件轻松设置为 Windows 服务,方便快捷地进行管理和运行。

