Spring Boot 制作 Windows 客户端

1,使用 exe 和 sc 方式

        之前我们使用 Spring Boot 去做 Windows 的客户端,使用 exe4j 这个工具把 jar 包打成 exe 文件,选择“服务”模式,

 最后使用 Windows 的 sc 命令注册该 exe 文件为 windows 服务,并设置为自动模式,失败重启。

.bat 批处理脚本

sc create xxx binpath= %~dp0xxx.exe start= auto  displayname= "xxx"
sc failure xxx reset= 5 actions= restart/3000/run/5000/reboot/8000

其中 jre 选择搜索本目录,"%~dp0"就是本目录的意思。

jre路径一般是相对路径,也可以是绝对路径。一般是 “%~dp0/jre” ,最好“%~dp0\jre”也写上。如果都不行,就试试使用 "/jre",据说这个也是相对路径。

         当客户端更新时就下载一个新的 exe 文件到本地,使用 sc config 修改 exe 文件的地址,然后使用 taskkill 杀死服务,因为该服务有崩溃重启功能,所以过了几秒钟后,服务重启了,服务变为新服务。

sc config xxx binpath= %~dp0xxx_new.exe
taskkill /F /t /IM "xxx.exe"

        这种方式在启动几小时后可能会被操作系统杀死,最后我们找不到原因,也无法解决这个问题,就放弃了这种方式。

2,使用 sc 监控脚本的方式

        基本也和上面差不多的,它有一个监控脚本,这个监控脚本被包装为一个系统服务,一刻不停地运行,它是一个死循环的脚本,中途会睡眠一两分钟,一直监控服务是否存在,如果服务被杀死,就立即重启服务。这个脚本可以监控 exe 程序,也可以监控 jar 包方式启动的 Console 程序。

3,使用 Windows 的计划任务方式

        Windows 的计划任务在控制面板-系统和安全-计划任务,它是一个操作系统级别的定时器。谷歌浏览器 ,Bing浏览器,WPS 软件的自动更新都使用它来实现。但它需要本地管理员权限去执行脚本。需要配置如下。

 只需要一条命令就能创建计划任务。

schtasks /create /sc minute /mo 1 /tn "TaskName" /tr "%~dp0monitor.bat"

它会每隔一分钟去执行当前目录的 monitor 监控脚本。我们在监控脚本里使用 tasklist 去检测我们的进程,当进程被杀死时就会重启进程。 在当前目录有一个 version.txt 文件,它记录了当前进程的版本号,当我们要升级客户端时,先下载好目标客户端,再改写 version.txt 内容为目标客户端的名称,让后让程序停止运行,一分钟内,计划任务要执行的监控脚本就会把新版本的客户端启动起来。     PS:不要使用 jps 去监控 java 程序是否存在,它有可能不准确,应该使用 tasklist 去监控。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值