[点晴永久免费OA]WinSW(Windows Service Wrapper):Windows服务包装器将exe程序包上一层壳塞进Windows服务里
当前位置:点晴教程→点晴OA办公管理信息系统
→『 经验分享&问题答疑 』
平时用Windows,想把一个命令行程序开机自启,最土的办法是什么?写个bat脚本,扔到启动文件夹里。然后你就发现——一个黑乎乎的CMD窗口永远挂在那,关了程序就没了,看着就烦。 Windows系统自带“服务”这个功能,能让程序在后台默默跑、开机自启、挂了还能自动重启。但问题是,这玩意儿只有程序员写代码的时候专门适配了才能用。你随便一个exe就想变成服务?没门儿。 于是有人搞出了WinSW——Windows Service Wrapper,翻译过来就是“Windows服务包装器”。名字听着挺正经,但干的事儿特实在:把你手头任何exe程序,包上一层壳,塞进Windows服务里。 这玩意儿跟NSSM有啥不一样?上回咱们聊过NSSM,也是干同样的事的。那WinSW跟它什么关系?简单说就是两种风格。 NSSM走的是“极简风”——下载一个exe,命令行敲一句 WinSW走的是“配置文件流”——你得写一个XML文件,把所有配置都写进去,然后用命令行安装。看着步骤多了,但好处是这个XML文件可以放进Git里管理,换台机器直接复制粘贴,配置一模一样。 打个比方:NSSM像路边摊,现点现做,吃完就走;WinSW像带菜谱的餐馆,你提前写好菜单,厨师照着做,换哪个厨师做出来都一样。 怎么用?三步搞定假设你有一个Java程序,叫 第一步:下载WinSW 去GitHub的release页面下载 第二步:重命名(这步很关键) 把 第三步:写配置文件 打开
第四步:安装 管理员身份打开命令行,cd到目录下,敲:
完事儿!去 常用命令就这几个:
凭啥不用NSSM要用它?这么说吧,如果你只是临时把一个脚本变成服务,NSSM确实更快。但如果你要做正经的生产环境部署,WinSW的优势就出来了。 日志管理是它的一绝。你的程序里打的 服务依赖也很有用。比如你的程序依赖数据库,你可以写在配置文件里:先启动MySQL,再启动我的程序。这样Windows启动的时候就不会乱序。 权限管理做得更细。如果你需要用特定域账号跑服务(比如 钩子脚本是另一个实用功能。你可以在服务启动前跑个批处理检查环境,或者在停止后跑个脚本清理临时文件。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一样 Spring Boot应用——Java圈的标配。开发完打成一个jar包,用WinSW包成服务,扔到服务器上开机自启,稳得很。 CloudBees CI——企业级CI/CD平台,官方文档里写的就是用WinSW来跑Windows Agent。 跟NSSM到底选哪个?说人话版本:
如果你团队有规范、要代码评审、要版本控制,那WinSW的XML配置文件就是王道。毕竟“真正的运维自动化,始于放弃GUI”嘛。 WinSW的故事其实挺有意思的——它最开始就是给Jenkins写的,后来发现大家都有这个需求,就独立出来了。一个为解决具体问题而生的小工具,慢慢变成了Windows运维圈的“标配”。 下次你想把Nginx、Node、Java、Python、随便什么exe变成Windows服务的时候,记住这个名字:WinSW。下载、重命名、写XML、安装,四步走,以后你的程序就能像正经服务一样,开机自启、后台运行、挂了自动重启。 该文章在 2026/5/22 16:36:01 编辑过 |
关键字查询
相关文章
正在查询... |