1、下載winsw
下載地址:https://github.com/kohsuke/winsw/releases
我這里下載的是2.3.0版。

下載sample-minimal.xml和WinSW.NET4.exe兩個文件。

2、將三個文件放在同一個文件夾中
WinSW.NET4.exe
sample-minimal.xml
springboot jar包

3、修改文件名字
需要將winsw執行程序跟xml改成同樣的名字,推薦使用項目名+Service的命名方式,比如:
WinSW.NET4.exe修改為rexel-middleware-0.0.1.exe
sample-minmal.xml修改為rexel-middleware-0.0.1.xml

4、編輯xml文件

配置內容
<configuration> <!--安裝成Windows服務后的服務名--> <id>rexel-middleware</id> <!--顯示的服務名稱--> <name>rexel-middleware</name> <!--對服務的描述--> <description>rexel-middleware for hzzg project</description> <!--這里寫java的路徑,如何配置了環境變量直接寫"java"就行--> <executable>java</executable> <!---jar后面的是項目名,可以配置內存限制如-Xmx256m代表堆內存最大值為256MB --> <arguments>-jar rexel-middleware-0.0.1.jar</arguments> <!--日志模式--> <logmode>rotate</logmode> </configuration>
5、執行命令安裝服務
打開系統命令行窗口,進入到rexel-middleware-0.0.1.exe所在文件夾,
然后執行命令安裝服務命令:rexel-middleware-0.0.1.exe install。
執行發現報錯如下:

錯誤日志:
D:\MyWork\22_Github\rexel-cn\rexel-jarvis\rexel-middleware\install>rexel-middleware-0.0.1.exe install 2019-12-02 10:25:24,938 INFO - Installing the service with id 'myapp' 2019-12-02 10:25:24,964 FATAL - WMI Operation failure: AccessDenied WMI.WmiException: AccessDenied 在 WMI.WmiRoot.BaseHandler.CheckError(ManagementBaseObject result) 在 WMI.WmiRoot.ClassHandler.Invoke(Object proxy, MethodInfo method, Object[] args) 在 winsw.WrapperService.Run(String[] _args, ServiceDescriptor descriptor) 在 winsw.WrapperService.Main(String[] args) WMI.WmiException: AccessDenied 在 WMI.WmiRoot.BaseHandler.CheckError(ManagementBaseObject result) 在 WMI.WmiRoot.ClassHandler.Invoke(Object proxy, MethodInfo method, Object[] args) 在 winsw.WrapperService.Run(String[] _args, ServiceDescriptor descriptor) 在 winsw.WrapperService.Main(String[] args)
解決方法:
使用管理員權限重新打開cmd窗口,重新執行rexel-middleware-0.0.1.exe install

6、啟動服務
命令提示符界面輸入命令啟動服務。
命令:net start rexel-middleware

7、查看是否啟動成功
打開系統服務功能:運行——輸入services.msc
即可看見自己命名的服務rexel-middleware。

我的java程序是一個從外部接口定時拉取數據,並寫入到mysql的程序,
可以看到已經在開始寫入數據了,證明程序運行成功。

8、重啟測試
重啟電腦后該服務會自動啟動,執行第6步(net start rexel-middleware)可檢查是否成功。
9、刪除服務
分為兩步:
步驟1:停止服務
命令提示符界面輸入命令停止運行服務:net stop rexel-middleware

步驟2:刪除服務
命令提示符界面輸入命令可刪除服務:rexel-middleware-0.0.1.exe uninstall

10、修改為批處理文件
上面所有的命令都可以寫在批處理文件中,部署的時候就可以實現一鍵部署了。
例如start.bat內容如下:
rexel-middleware-0.0.1.exe install net start rexel-middleware
例如stop.bat內容如下:
net stop rexel-middleware rexel-middleware-0.0.1.exe uninstall
--END--
