在 Windows 系統中,有時我們需要將 jar、exe 等檔案作為 Windows 服務執行。本文將介紹如何使用 WinSW 工具來實現這一目的。
一、工具介紹
WinSW 是一個強大的工具,可以將各種程式檔案設定為 Windows 服務。如果使用 sc.exe、nssm 等工具時,程式檔案不符合 Windows 服務要求導致服務無法啟動,那麼 WinSW 可能是你的最佳選擇。
二、工具獲取
WinSW 可從 https://github.com/winsw/winsw/releases 下載。下載後可以根據需要將其命名為“WinSW.exe”(不改名也可,但前後配置需保持一致)。
三、相關檔案說明
1. install.bat 檔案
此檔案用於安裝後臺服務。執行時會顯示提示資訊“請按任意鍵開始安裝後臺服務...”,按下任意鍵後,程式會切換到當前目錄,執行WinSW.exe install
命令進行服務安裝,然後啟動指定的服務,最後提示“請按任意鍵退出...”。需要注意的是,此檔案需以管理員身份執行。
@echo on
:color 2f
chcp 65001
mode con: cols=80 lines=25
@echo 請按任意鍵開始安裝後臺服務...&pause>nul
cd /d %~dp0
WinSW.exe install
net start helloword
@echo 請按任意鍵退出...&pause>nul
2. uninstall.bat 檔案
用於解除安裝後臺服務。執行時會提示“請按任意鍵開始解除安裝後臺服務...”,按下任意鍵後,先停止指定的服務,再執行WinSW.exe uninstall
命令進行服務解除安裝,最後提示“請按任意鍵退出...”。
@echo on
:color 2f
chcp 65001
mode con: cols=80 lines=25
@echo 請按任意鍵開始解除安裝後臺服務...&pause>nul
cd /d %~dp0
net stop helloword
WinSW.exe uninstall
@echo 請按任意鍵退出...&pause>nul
3. WinSW.xml 檔案
這是 WinSW 的配置檔案,採用 XML 格式,遵循 MIT 許可證。配置檔案中包含了服務的各種配置資訊,如服務 ID、顯示名稱、描述、可執行檔案路徑及引數、啟動模式和日誌路徑等。
例如:
<service>
<id>helloword</id>
<name>helloword</name>
<description>helloword</description>
<executable>%BASE%\helloword.exe</executable>
<arguments>server "%BASE%\data"</arguments>
<startmode>Automatic</startmode>
<logpath>%BASE%\logs</logpath>
<log mode="append">rotate</log>
</service>
其中,<id>
定義服務唯一 ID;<name>
和<description>
分別設定服務顯示名稱和描述;<executable>
指定要執行的可執行檔案路徑;<arguments>
為可執行檔案傳遞引數;<startmode>
設定服務啟動模式為自動;<logpath>
定義日誌儲存路徑;<log mode="append">rotate</log>
設定日誌記錄模式為rotate(基於大小)。
四、部署步驟
- 將需要設定為服務的 jar 或 exe 檔案放到當前目錄,並根據實際情況改名為“xxx.jar”或“xxx.exe”。在實際專案配置中,注意替換相關內容中的“helloword”。
- 雙擊
install.bat
檔案進行服務安裝。在執行過程中,會出現提示“按任意鍵繼續...”,按下任意鍵繼續操作,最終會提示安裝成功。 - 若服務已安裝且需要更新 jar 或 exe 檔案,可先雙擊
uninstall.bat
進行服務解除安裝,然後重複步驟 1 和 2。
透過以上步驟,你就可以使用 WinSW 工具將你的程式檔案輕鬆設定為 Windows 服務,方便快捷地進行管理和執行。