winsw服务封装程序体验

winsw服务封装程序体验

周末抽时间搭建frp内网穿透服务,frps直接提供systemd脚本,部署和管理一步到位。windows客户端部署之后需要手动用命令行启动,在开机后不能人为干预的情境下无法满足需求,所以在网络上搜索一番选择了WinSW

winsw介绍

访问winsw的github页面[1]了解到,winsw可以将任何应用程序包装和管理为一个Windows服务。它要求.NET Framework 4.6.1及以上支持,还可以选择基于.Net Core的封装版本。winsw使用MIT License,非常容易在商业应用程序中使用。

winsw使用

winsw依赖xml格式的配置文件对需要包装的程序进行描述。下面是将frpc包装为一个服务的配置示例:

1
2
3
4
5
6
7
8
9
<service>
<id>frpc</id>
<name>frpc</name>
<description>frpc service</description>
<executable>C:\Users\daiqianying\Documents\cmdtool\frp\frpc.exe</executable>
<arguments>-c frpc.ini</arguments>
<workingdirectory>C:\Users\daiqianying\Documents\cmdtool\frp</workingdirectory>
<log mode="roll"></log>
</service>

winsw的角色有两种方式:

  1. winsw作为全局工具。
    这个我没有配置成功,winsw始终提示需要同名配置文件
1
2
3
4
5
C:\Users\daiqianying\Downloads>winsw install C:\Users\daiqianying\Documents\cmdtool\frp\frpc.xml
System.IO.FileNotFoundException: Unable to locate winsw.[xml|yml] file within executable directory
at WinSW.Program.GetServiceDescriptor()
at WinSW.Program.Run(String[] argsArray, IWinSWConfiguration descriptor)
at WinSW.Program.Main(String[] args)
  1. winsw作为捆绑工具。
    将winsw.exe改名为frpc-service.exe,并将frpc的服务描述文件命名为frpc-service.xml。使用管理员启动命令行执行frpc-service.exe install即可安装服务。

总结

总的来说winsw配置简单,xml描述性强,可以满足frpc配置为服务的需求。不依赖.Net框架的版本最大可达35MB,还是比较大,frpc本身只有9.4MB。总的来说使用体验优秀,仍然是一款好工具。

参考


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!