DSH Web 重啓插件:一鍵重啓 DSH Web 宿主

DSH Web 是常駐宿主進程,修改插件、配置或安裝新 bundle 後必須重啓才能生效。手動重啓通常涉及打開終端、查找 PID、殺進程、拉起服務、自檢以及刷新頁面等多個步驟,過程繁瑣且缺乏實時反饋。本文介紹 lnyuqian/dsh-restart-plugin,通過側邊欄按鈕或對話指令,將上述流程收斂爲靜默的一鍵操作。

核心功能

  • 雙態側邊欄按鈕:支持展開顯示文字 [↻ 重啓] 與收起顯示圖標 ↻,動畫跟手,實時同步側邊欄狀態。
  • 倒計時與狀態反饋:點擊後進入 10 秒倒計時,頁面整體文字變淺灰,按鈕保持醒目,提供清晰的狀態反饋。
  • 靜默執行:通過 wscript 靜默啓動 PowerShell,桌面無彈窗、無終端窗口、不開啓新標籤頁,由原頁面自動刷新收尾。
  • 自檢探針:重啓後自動執行端口(3080)和路由(GET /_dsh/dsh-restart/state)雙重驗證,僅在自檢成功時提示。
  • 對話觸發:支持在對話中使用 dsh_restart 工具,適合在當前回合需要收尾的場景。

前置條件

  • 操作系統:僅支持 Windows(依賴 schtasks / wscript / PowerShell,Linux / macOS 不適用)。
  • DSH Web:建議使用 0.2.0-rc.x 版本(0.1.0 也能運行,但 DSH 0.2.x 可能將其判爲不兼容)。
  • Node.js:需要 Node.js >= 24.11。
  • 權限:當前用戶需有創建計劃任務的權限。

安裝與部署

本插件由兩部分組成,缺一不可:前端插件包和本地重啓腳本鏈。

第 1 步:註冊插件包

在終端執行以下命令,將本地目錄註冊爲 DSH Web profile 的依賴:

dsh plugin --profile web add link:.\\dsh-restart-plugin

註冊完成後,需停止並重新啓動 dsh web,然後在瀏覽器中硬刷新頁面(Ctrl+Shift+R)。此時側邊欄應出現重啓按鈕,且 http://127.0.0.1:3080/_dsh/dsh-restart/state 路由可正常返回狀態。

第 2 步:部署重啓腳本鏈

插件包僅包含前端組件,重啓邏輯(殺進程、拉起、自檢)需通過本地腳本實現。使用官方提供的安裝腳本一鍵部署:

powershell -ExecutionPolicy Bypass -File docs\\setup\\install.ps1 -InstallDir "$env:USERPROFILE\\.dsh-restart" -Seconds 10

此步驟會自動完成三件事:
1. 將模板文件複製到指定目錄,並根據參數替換佔位符。
2. 註冊計劃任務(默認名 dsh-web-restart-20s)。
3. 自動修改插件源碼中的路徑常量。

注意:.ps1 文件需保存爲 UTF-8 帶 BOM,.vbs / .bat 需保存爲 GBK,以確保中文路徑和執行正確。

使用方式

  • 側邊欄操作:點擊側邊欄按鈕,等待 10 秒倒計時結束,頁面自動刷新並在右上角顯示“✅ 重啓成功”。
  • 對話操作:在對話中輸入“重啓”,觸發 dsh_restart 工具。
  • 計劃任務操作:通過命令行手動觸發計劃任務:
    schtasks /Run /TN "dsh-web-restart-20s"

工作原理

  1. 觸發:用戶點擊按鈕或觸發 dsh_restart 工具。
  2. 執行:工具調用 dsh_restart 路由,觸發計劃任務 dsh-web-restart-20s。
  3. 等待:wscript 靜默啓動 PowerShell,執行 10 秒倒計時,頁面整體變灰。
  4. 重啓:倒計時結束後,腳本殺掉舊宿主進程,使用 --no-open 參數拉起新實例。
  5. 自檢:新實例啓動後,腳本驗證 3080 端口監聽及自檢路由。
  6. 收尾:自檢成功則原頁面刷新,失敗則按鈕變紅提示重試。

總結

該插件通過計劃任務與腳本鏈的配合,解決了 DSH Web 重啓操作繁瑣、易出錯且缺乏反饋的問題。安裝前請確保環境符合前置條件,並注意腳本文件的編碼要求。

  • GitHub 倉庫:https://github.com/lnyuqian/dsh-restart-plugin
  • 插件目錄:https://www.skillhub.cn/plugins/lnyuqian/dsh-restart-plugin
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜