LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

[点晴永久免费OA]WinSW(Windows Service Wrapper):Windows服务包装器将exe程序包上一层壳塞进Windows服务里

admin
2026年5月22日 16:36 本文热度 104

平时用Windows,想把一个命令行程序开机自启,最土的办法是什么?写个bat脚本,扔到启动文件夹里。然后你就发现——一个黑乎乎的CMD窗口永远挂在那,关了程序就没了,看着就烦。

Windows系统自带“服务”这个功能,能让程序在后台默默跑、开机自启、挂了还能自动重启。但问题是,这玩意儿只有程序员写代码的时候专门适配了才能用。你随便一个exe就想变成服务?没门儿。

于是有人搞出了WinSW——Windows Service Wrapper,翻译过来就是“Windows服务包装器”。名字听着挺正经,但干的事儿特实在:把你手头任何exe程序,包上一层壳,塞进Windows服务里

这玩意儿跟NSSM有啥不一样?

上回咱们聊过NSSM,也是干同样的事的。那WinSW跟它什么关系?简单说就是两种风格

NSSM走的是“极简风”——下载一个exe,命令行敲一句nssm install 服务名,弹个窗口填几项就完事了,主打一个快。

WinSW走的是“配置文件流”——你得写一个XML文件,把所有配置都写进去,然后用命令行安装。看着步骤多了,但好处是这个XML文件可以放进Git里管理,换台机器直接复制粘贴,配置一模一样。

打个比方:NSSM像路边摊,现点现做,吃完就走;WinSW像带菜谱的餐馆,你提前写好菜单,厨师照着做,换哪个厨师做出来都一样。

怎么用?三步搞定

假设你有一个Java程序,叫myapp.jar,想让它变成服务。

第一步:下载WinSW

去GitHub的release页面下载WinSW-x64.exe,放到你的程序目录里。

第二步:重命名(这步很关键)

WinSW-x64.exe重命名,要和你的程序对应。比如你要搞的服务叫myapp,就改成myapp.exeXML配置文件的名称必须跟这个exe一样,所以得建一个myapp.xml

第三步:写配置文件

打开myapp.xml,往里填内容:

<service>

  <id>myapp</id>

  <name>我的Java应用</name>

  <description>这货是个后台Java程序</description>

  <executable>C:\Program Files\Java\jre\bin\java.exe</executable>

  <arguments>-jar C:\myapp\myapp.jar</arguments>

  <logpath>C:\myapp\logs</logpath>

  <startmode>Automatic</startmode>

</service>

第四步:安装

管理员身份打开命令行,cd到目录下,敲:

myapp.exe install

myapp.exe start

完事儿!去services.msc里看一眼,你的程序已经在服务列表里乖乖躺着了。

常用命令就这几个:

  • install - 安装服务
  • uninstall - 卸载服务
  • start - 启动
  • stop - 停止
  • restart - 重启
  • status - 看状态

凭啥不用NSSM要用它?

这么说吧,如果你只是临时把一个脚本变成服务,NSSM确实更快。但如果你要做正经的生产环境部署,WinSW的优势就出来了。

日志管理是它的一绝。你的程序里打的console.log(),它能自动帮你抓到文件里,还能按大小或时间自动切分,比如每10MB切一个文件,保留最近8个。NSSM只能一股脑往一个文件里写,时间长了日志文件大到打不开。

服务依赖也很有用。比如你的程序依赖数据库,你可以写在配置文件里:先启动MySQL,再启动我的程序。这样Windows启动的时候就不会乱序。

权限管理做得更细。如果你需要用特定域账号跑服务(比如DOMAIN\svc_user),WinSW可以在XML里配置,密码还能加密存储。NSSM虽然也能指定账号,但密码是明文的,不够安全。

钩子脚本是另一个实用功能。你可以在服务启动前跑个批处理检查环境,或者在停止后跑个脚本清理临时文件。NSSM没这功能。

它有个小毛病

WinSW依赖.NET Framework。Windows 10以上系统自带,基本不用担心。但如果你的服务器是Windows Server 2008这种老古董,可能需要确认一下.NET版本够不够。

另外它比NSSM体积大不少——NSSM才300多KB,WinSW有17MB+。不过现在硬盘都按TB算了,这点空间谁在乎呢。

谁在用WinSW?

Jenkins——就是那个做持续集成的工具,官方推荐的Windows服务方案就是WinSW。你装Jenkins的时候看到的“Install as Service”选项,底层就是它。

Nginx——很多人用它把Nginx注册成服务,然后就能像Linux一样service nginx restart了,再也不用在任务管理器里手动杀进程。

Spring Boot应用——Java圈的标配。开发完打成一个jar包,用WinSW包成服务,扔到服务器上开机自启,稳得很。

CloudBees CI——企业级CI/CD平台,官方文档里写的就是用WinSW来跑Windows Agent。

跟NSSM到底选哪个?

说人话版本:

  • 想快速跑起来、不想折腾 → 选NSSM。三分钟搞定,适合自己捣鼓、临时用。
  • 要做正儿八经的生产部署、团队协作 → 选WinSW。配置文件能进Git,日志能轮转,依赖能管理,这才是正规军的玩法。

如果你团队有规范、要代码评审、要版本控制,那WinSW的XML配置文件就是王道。毕竟“真正的运维自动化,始于放弃GUI”嘛。

WinSW的故事其实挺有意思的——它最开始就是给Jenkins写的,后来发现大家都有这个需求,就独立出来了。一个为解决具体问题而生的小工具,慢慢变成了Windows运维圈的“标配”。

下次你想把Nginx、Node、Java、Python、随便什么exe变成Windows服务的时候,记住这个名字:WinSW。下载、重命名、写XML、安装,四步走,以后你的程序就能像正经服务一样,开机自启、后台运行、挂了自动重启。


该文章在 2026/5/22 16:36:01 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-2  粤公网安备44030602007207号