Repository navigation
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。