Skip to content

v2.0.43 — 修复 Windows 自更新后插件消失

Latest

Choose a tag to compare

@Syngnat Syngnat released this 27 Oct 12:18

v2.0.43 — 修复 Windows 自更新后插件消失

根因:Windows 版 helper 编译到包内 �in/dsh-uia.exe。运行中的 exe 被系统锁住映像,在线更新先移除 bundle、再删目录时删不掉(pnpm 报 ERR_PNPM_EPERM,_tmp_* 重命名失败),插件就此消失;之后每次重装都因同一个被锁文件失败。

  • helper 改为编译到 ~/.dsh/dsh-codex-tools/helper/dsh-uia-<源码哈希>.exe,文件名带 native/dsh-uia.cs 的哈希,重建不会覆盖运行中的旧文件。
  • UpdateService.install() 在任何改动前执行 prepare:结束自己的 helper、等待进程退出(2 秒后 SIGKILL),再探测旧包内 bin/dsh-uia.exe 是否仍被占用。仍被占用则以 helper-in-use 在 removeBundle 之前失败,工作安装保持完好;恢复路径同样先释放。
  • AxClient.dispose() 现在等待 helper 退出,而不是发完 SIGTERM 就返回。

从 2.0.42 及更早升级:旧版本的替换逻辑没有这层保护,首次跨越无法自救。若更新失败且插件消失,先执行 taskkill /IM dsh-uia.exe /F,删除残留的 node_modules/@local/dsh-codex-tools,再重新安装;此后 helper 在包外,不会再复发。

离线套件 131 项通过;Windows 上实测 helper 在数据目录编译成功并能应答 list_windows。