Repository navigation
v1.0.1 — 卸载救援脚本与卸载文档
本版没有改动插件运行代码(index.js / client.js 与 v1.0.0 一致),修的是 path 安装的卸载陷阱。
修的问题
从 GitHub clone 后按 path 方式安装,DSH 会把绝对路径写进 profile。直接删掉 clone 出来的目录后,profile 里留下悬空引用:
| 位置 | 内容 |
|---|---|
profiles/<profile>/package.json |
dependencies 的 link:<已删路径> 与 dsh.profile.bundles 条目 |
profiles/<profile>/node_modules/@local/dsh-bundle-session-delete |
指向已删目录的符号链接 |
profiles/<profile>/cordis.yml |
Loader 真正启动的 leaf 配置里那一行 - id: session-delete |
症状:启动异常、插件清单出现失败条目、界面「加载失败;点击重试」、宿主报
dsh: cannot resolve profile bundle "@local/dsh-bundle-session-delete" ...。
机制补充:loadProfileDirectory() 对每个 bundle 逐个 try/catch,解析失败的 bundle 会被跳过并记入
skippedBundles,所以整个 profile 不会因此起不来;界面上看到的异常来自上述残留引用。
新增
scripts/fix-stale-install.py—— 救援脚本。默认 dry-run,--apply才写入,每个被改动的文件先备份为
*.bak-<时间戳>。会清理悬空link:依赖与对应的dsh.profile.bundles条目、profile 私有层的悬空符号链接、
cordis.yml的残留顶层行;锁文件只报告;profiles/node_modules共享挂载层只统计不删。python3 scripts/fix-stale-install.py # 只检查 python3 scripts/fix-stale-install.py --apply # 执行清理
- README「卸载与换设备(必读)」 —— 正确顺序(先在 Plugins 里 Remove 再删目录)、症状与机制、
脚本用法、不想跑脚本时的手工救援步骤,以及两条禁令:别直接rm -rf已启用的插件目录;
别同时装两份(包名/行 id/路由都会撞)。
卸载的正确姿势
- 侧栏 Plugins 页面里 Disable / Remove 本插件
- 再删掉 clone 出来的目录
首次发布见 v1.0.0。