使用 NSSM 將 EXE 包裝成 Windows 服務

NSSM(Non-Sucking Service Manager)是一個強大的工具,可以輕鬆地將任何可執行文件(EXE)轉換為 Windows 服務。本教學將指導您完成整個過程,從安裝 NSSM 到配置和管理您的服務。

目錄

  1. NSSM 簡介
  2. 下載和安裝 NSSM
  3. 基本使用:創建服務
  4. 高級配置選項
  5. 管理服務
  6. 常見問題解決
  7. 最佳實踐和注意事項

1. NSSM 簡介與SC命令的比較

NSSM 是一個免費的開源工具,它允許您將幾乎任何應用程序作為 Windows 服務運行。與SC命令比較

SC命令的優點:

1. Windows 內建,無需額外安裝

2. 命令簡單,適合基本需求

SC命令的限制:

1. 功能相對簡單,缺乏高級選項

2. 對於複雜的啟動參數或環境設置,可能需要額外的腳本

3. 錯誤處理和日誌記錄功能有限

NSSM的優點:

1. 圖形介面:易於使用,不需要記憶複雜的命令列語法

2. 豐富的組態選項:

- 可以設置啟動目錄、環境變量

- 支援複雜的啟動參數

- 可以組態服務依賴關係

3. 錯誤處理:可以設置在程序崩潰時自動重啟

4. 日誌功能:可以捕獲並記錄標準輸出和錯誤輸出

5. 關機行為控制:可以設置如何優雅地關閉服務

6. I/O 重新導向:可以將輸入輸出重新導向到檔案

7. 支援互動式程序:某些需要用戶輸入的程序也可以作為服務運行

8. 服務監控:提供了更好的方式來監控服務狀態

總的來說,雖然 SC 命令對於簡單的需求來說已經足夠,但 NSSM 提供了更多的靈活性和功能,特別適合那些需要更精細控制的複雜場景。如果您的程序需要特殊的啟動條件、錯誤處理或日誌記錄,NSSM 可能是更好的選擇。

2. 下載和安裝 NSSM

  1. 訪問 NSSM 官方網站:https://nssm.cc/download
  2. 下載最新版本的 NSSM(選擇適合您系統的版本,32 位或 64 位)
  3. 解壓下載的壓縮文件
  4. 將 nssm.exe 放置在一個便於訪問的位置,如 C:\Program Files\NSSM\
  5. 可選:將 NSSM 的路徑添加到系統的 PATH 環境變量中

3. 基本使用:創建服務

以管理員身份打開命令提示符,然後按照以下步驟操作:

  1. 創建新服務:

    1
    nssm install <服務名稱>

    這將打開 NSSM 的圖形界面。

  2. 在彈出的窗口中,設置以下內容:

    • Path: 您的 EXE 文件的完整路徑
    • Startup directory: EXE 文件所在的目錄
    • Arguments: 如果需要,添加命令行參數
  3. 點擊 "Install service" 按鈕

您也可以使用命令行直接創建服務:

1
nssm install <服務名稱> <EXE 路徑> [參數]

例如:

1
nssm install MyService C:\MyApp\MyProgram.exe -config C:\MyApp\config.ini

4. 高級配置選項

NSSM 提供了許多高級配置選項:

  1. 設置服務顯示名稱和描述:

    1
    2
    nssm set <服務名稱> DisplayName "My Service Display Name"
    nssm set <服務名稱> Description "This is my service description"
  2. 配置啟動類型:

    1
    nssm set <服務名稱> Start SERVICE_AUTO_START
  3. 設置環境變量:

    1
    nssm set <服務名稱> AppEnvironment PATH=C:\MyApp;%PATH%
  4. 配置錯誤處理:

    1
    nssm set <服務名稱> AppExit Default Restart
  5. 設置日誌文件:

    1
    2
    nssm set <服務名稱> AppStdout C:\Logs\MyService.log
    nssm set <服務名稱> AppStderr C:\Logs\MyService.err

5. 管理服務

  1. 啟動服務:

    1
    nssm start <服務名稱>
  2. 停止服務:

    1
    nssm stop <服務名稱>
  3. 重啟服務:

    1
    nssm restart <服務名稱>
  4. 查看服務狀態:

    1
    nssm status <服務名稱>
  5. 編輯現有服務:

    1
    nssm edit <服務名稱>
  6. 刪除服務:

    1
    nssm remove <服務名稱> confirm

6. 常見問題解決

  1. 服務無法啟動

    • 檢查 EXE 路徑是否正確
    • 確保 NSSM 和您的應用程序有足夠的權限
    • 查看 Windows 事件日誌和 NSSM 日誌文件
  2. 服務啟動後立即停止

    • 檢查您的應用程序是否設計為長時間運行
    • 確保所有必要的依賴項都可用
  3. 無法與服務通信

    • 檢查防火牆設置
    • 確保服務帳戶有適當的網絡權限

7. 最佳實踐和注意事項

  1. 始終使用管理員權限運行 NSSM 命令
  2. 為您的服務使用描述性的名稱
  3. 定期檢查服務日誌以確保正常運行
  4. 考慮使用服務帳戶而不是系統帳戶來運行服務
  5. 定期更新 NSSM 到最新版本
  6. 在生產環境中部署之前,在測試環境中徹底測試您的服務配置

通過遵循本教學,您應該能夠成功地使用 NSSM 將您的 EXE 文件包裝成 Windows 服務,並有效地管理它。NSSM 提供了一種靈活且強大的方式來確保您的應用程序作為服務持續運行,無需用戶干預。