【自动更新失败】Inno Updater 仅终止主进程未终止 shared_client 子进程, 导致 .lock 文件锁冲突,更新持续失败

Issue Description

更新器 inno_updater.exe (v0.17.1) 在静默更新时,仅强制终止了主进程 Qoder.exe(PID: 25012),但 未终止 shared_client 子进程(位于 D:\Qoder\.qoder\shared_client\bin\2026.709.1\x86_64_windows\Qoder.exe),导致 .lock 文件被持续锁定。更新器经过 32 次重试(约 138 秒)后报错:

Failed to create file handle: 另一个程序正在使用此文件,进程无法访问。

此外,kill 进程(03:41:05.557)与开始文件操作(03:41:05.567)之间仅间隔 10ms,Windows NT 内核来不及清理文件句柄。更新器也无 stale lock 检测机制,无法判断 .lock 持有者是否已崩溃。

Steps to Reproduce

  1. 启动 Qoder IDE,保持运行状态(有活跃 AI 对话或代码索引任务)
  2. 等待自动更新触发(凌晨)或手动 帮助 → 检查更新
  3. 更新器检测到 Qoder.exe 进程仍在运行,等待 30 秒后强制终止
  4. shared_client 子进程未终止,.lock 文件持续锁定,更新失败

Expected Behavior

更新器应通过进程树枚举终止所有 Qoder.exe 子进程(包括 shared_clientsandbox.exe),在 kill 后至少等待 3 秒,并从 .info.json 验证 PID 存活状态,若 lock 为 stale 则删除后继续。

Actual Behavior

更新器仅终止了单个 PID 25012,其余 14 个 Qoder.exe 进程仍存活。kill 后 10ms 即尝试获取 .lock 句柄,在子进程持续持有锁的情况下永远无法成功。

Qoder 下载 - AI 编程助手免费下载 | Windows/Mac/Linux | Qoder 您可以先手动下载覆盖安装下,不耽误您使用;安装前辛苦右上角上报下问题报告,我们查下日志