dsh-app-updater:在 DSH 裏一鍵檢測並靜默更新本機應用

前言

在 Windows 或 macOS 上維護開發環境,常見做法是分別打開 winget、Homebrew 或各軟件自帶的更新入口。應用一多,很難在一次操作裏看清「哪些已裝軟件有新版本、安裝包從哪來、能否靜默裝完」。DeepSeek Harness(DSH)把能力拆成插件;dsh-app-updater 由社區維護者 19952730389 發佈,歸類爲「聯網工具」,在 DSH 內完成「列清單 → 查新版本 → 從發佈方官網拉全量安裝包 → 靜默安裝」,檢測過程不需要啓動被測應用。社區目錄頁:SkillHub - dsh-app-updater;源碼與說明:GitHub - 19952730389/dsh-app-updater。

這是什麼

一句話:檢測本機已安裝應用是否有新版本,並從各自官網下載完整安裝包,在 DSH 裏一鍵靜默更新;自動識別 Windows / macOS 以及 ARM64 / x64(Intel),按當前系統與芯片選包。Windows 側依賴 winget 與註冊表只讀掃描;macOS 側以 Homebrew 管理的一鍵更新爲主,並對非 Homebrew 應用提供只讀「官網版本」探測(Sparkle / Electron 等)。許可證爲 MIT(見倉庫 README)。

核心功能

Windows:winget + 註冊表,官網安裝包優先

步驟 實現(摘自 README)
列出已裝應用 winget list,並讀註冊表三處 Uninstall 鍵,補齊 winget 未收錄項;全程只讀,不啓動應用。
判斷新版本 winget upgrade --include-unknown,與清單按 Id 合併。
一鍵更新 winget download 把發佈方官網完整安裝包下到指定目錄,按清單核對 SHA-256;執行前插件再本地複覈哈希(1.3.5 起);解析清單中的靜默參數後靜默安裝;裝完用 winget list --id 複覈版本。
失敗兜底 哈希與目錄不一致或無法直接下載時,退回 winget upgrade --id <id> --exact --silent。

安裝包 URL 來自 winget 清單裏的 InstallerUrl(如 Git for Windows、Chrome、各廠商 CDN);默認下載目錄爲 %USERPROFILE%\Downloads\DSH App Updater,同目錄會留 .yaml 清單便於覈對 InstallerUrl / InstallerSha256 / 靜默開關。

macOS:Homebrew 可更新項 + 非 brew 應用的展示與邊界

  • 從 /Applications 等枚舉應用,再反查是否由 Homebrew cask 管理;僅 Homebrew 管理的項計入默認可一鍵更新。拖 DMG / 手動安裝的應用會列出,但不算「可更新」——一臺全是拖裝應用的 Mac 上出現「0 個可更新」是預期結論。
  • 1.3.10 起:能對上 cask 且 cask 版本更新的非 Homebrew 應用,可執行 brew install --cask --force <token> 收編並升級(README 說明爲何不用 --adopt 做升級)。
  • 1.3.9 起:對非 Homebrew 應用只讀讀取 Sparkle(SUFeedURL → appcast)或 Electron(app-update.yml)判斷官網是否有新版,界面顯示「官網有新版 / 需手動」;不會因此變成可一鍵更新。開關 checkOfficialSources(默認 true)可關閉這類探測及對應網絡請求。

界面與操作

入口:DeepSeek Harness → 設置 → 應用更新。不會自動後臺掃描,需點 刷新檢測。列表可按「有新版本」排序,支持搜索與 全部 / 僅可更新 / 未收錄(及 macOS 上「需手動」等)篩選;可勾選批量更新或單行 更新;進度條與日誌可見,取消 僅停止尚未開始的項。打開下載目錄 可在資源管理器 / Finder 中查看已下載的官網包。同一頁 插件設置 可改下載目錄、保留安裝包、演練模式等。

狀態含義(Windows 爲主,macOS 有額外文案)包括:有新版本、已是最新、未收錄;未收錄原因含軟件目錄未收錄、商店管理、版本未知、系統組件等。若掃描依據失效(如 Homebrew 命令失敗),界面會出現紅色警告橫幅,此時「0 個可更新」不能當作「全部最新」。

安裝與啓用

推薦通過 npm 包安裝(插件中心亦可一鍵安裝):

dsh plugin --profile web add dsh-app-updater

新版本若被 pnpm 的 minimumReleaseAge 暫緩,可顯式指定版本,例如:

dsh plugin --profile web add dsh-app-updater@1.2.0

也可從 GitHub 源碼或 Release 的預構建包安裝:

dsh plugin --profile web add github:19952730389/dsh-app-updater
dsh plugin --profile web add https://github.com/19952730389/dsh-app-updater/releases/latest/download/dsh-app-updater.tgz

裝好後重啓 DSH,在 設置 → 應用更新 使用。README 註明:桌面端(Electron 託管的 desktop profile)不允許 dsh plugin 直接改寫,需在 profile 的 node_modules 下建 junction 並手動補 bundles。

運行環境(package.json):Node ^22.19.0 || >=24.0.0;DSH >=0.1.5-rc.1 <0.2.0-0 || >=0.2.0-rc.2 <0.3.0-0。

典型用法

  1. 安裝插件並重啓 DSH,打開 設置 → 應用更新。
  2. 點 刷新檢測,等待列表出現本機應用與版本狀態。
  3. 在 僅可更新 分段下勾選目標,點 全部更新 或行尾 更新;需要先看會下載什麼時,在插件設置裏打開 演練模式(dryRun,只下載不安裝)。
  4. 更新完成後,如需留檔安裝包,保持 keepInstallers 爲默認 true,或用 打開下載目錄 查看。

通過 HTTP API 改設置(與設置面板等價,適合腳本;須帶 DSH 會話准入,見下節):

curl -X POST -H "Content-Type: application/json" \
  -d '{"confirm":true,"settings":{"dryRun":true}}' \
  http://127.0.0.1:<port>/dsh-app-updater/settings

狀態與偏好保存在:

%USERPROFILE%\.dsh\dsh-app-updater\state.json

(macOS 爲對應用戶目錄下的 .dsh/dsh-app-updater/state.json。)

常用設置鍵(默認值見 README):includeStoreApps、includeRegistryOnly(Windows)、includeUnmanagedApps(macOS)、checkOfficialSources(macOS)、downloadDir、keepInstallers、hashFallbackUpgrade、dryRun、matchSystemArch、autoElevate。

適用場景與注意

適合誰:在本機集中維護大量桌面應用、希望用 winget / Homebrew 目錄對齊「官網全量包 + 靜默安裝」的 DSH 用戶;不想爲每次更新單獨開 winget 終端或 brew 的人。

權限與安全:插件以當前 DSH 進程權限運行;Windows 上 autoElevate 默認開啓時,需要管理員的包會通過 UAC 提權。寫操作(掃描、更新、改設置等)須請求體帶 confirm: true;路由默認走宿主 connection.admit,未授權返回 401/403/409。1.3.1 起不再僅憑 127.0.0.1 放行;舊宿主需顯式 allowLegacyLoopback 或環境變量 DSH_APP_UPDATER_ALLOW_LEGACY_LOOPBACK=1(README「安全邊界」有說明)。安裝前建議自行閱讀 倉庫源碼 與 MIT 許可證。

平臺差異:Windows 側 winget 未收錄的註冊表軟件只能展示,不能由插件驅動更新;MSIX / 商店應用請用 Microsoft Store。macOS 側非 Homebrew 且對不上 cask 的項仍需應用內或官網手動升級,即使界面顯示「官網有新版」。

結尾

dsh-app-updater 把「本機應用有沒有新版本」和「從發佈方官網拿完整安裝包並靜默裝完」收進 DSH 同一頁,Windows 走 winget 與哈希複覈,macOS 以 Homebrew 爲主並補充只讀官網版本信息。DeepSeek Harness 生態強調「一切皆插件」;SkillHub 等社區目錄獨立於 DeepSeek / 幻方,並非官方應用商店。

  • 目錄頁:https://www.skillhub.cn/plugins/19952730389/dsh-app-updater
  • GitHub:https://github.com/19952730389/dsh-app-updater
羽毛球分组比赛记分
小程序二维码

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

小夜