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
羽毛球分组比赛记分
小程序二维码

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

小夜