Repository navigation
[Bug][Desktop][Windows] 自动更新 100% 失败:安装器 MoveFileExW error 32,10 次重试后回滚且不重启 #13037
ElsaArendelle
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
环境
0.2.2-rc.1(resources/app.asar内 package.json;dshBuildCommit=c59d10aff167ad7eefead4b3a9082fb57c8fbfe8)https://download.deepseek.com/dsh-desk/feeds/win-x64/%LOCALAPPDATA%\Programs\DeepSeek Harness(CurrentUser 安装)ZhuDongFangYu)运行中现象
从 GUI 触发更新后,每次都停在同一处:
0.2.2-rc.2安装包下载完成(299 MB,sha512 与nightly.yml一致,pending\update-info.json也一致)0.2.2-rc.1,再次提示有更新已连续失败 4 次(00:02、00:10、12:12、12:17),不是偶发。
证据
%LOCALAPPDATA%\@deepseek-aidsh-desktop-updater\installer-logs\directory-failure-*.log共 4 份,内容一致(节选):时间线(12:17 那次):
%TEMP%\nsaCE7B.tmp(NSIS$PLUGINSDIR)创建directory-failure-20261112-121748.log写入0.2.2-rc.1补充:
resources\app.asar的修改时间仍是安装时的2026-11-04 17:30,说明这 4 次从未真正替换成功。本地排查
pending\deepseek-harness-0.2.2-rc.2-win-x64.exe的 sha512 与 feed 的nightly.yml完全一致;排除下载损坏。0.2.2-rc.2 > 0.2.2-rc.1。InstallerFindProcess(apps/desktop/installer/window-frame.cpp:98)按 exe 完整路径匹配DeepSeek Harness.exe,因此桌面端的 gpu / renderer / utility / desktop-host 子进程都会被识别。dshPromoteDirectories(apps/desktop/scripts/installer-directories.nsh)在两次MoveFileExW之前只执行了SetOutPath $PLUGINSDIR(注释写明是释放 NSIS 自己的目录句柄),没有再次调用InstallerCheckAppRunning;而apps/desktop/packaging/README.zh.md写的是「通过同卷目录改名替换前,安装器会再次检查」。.onInit/InstallerBeforeInstall的检查通过 → 解压约 34 秒 → 才进入改名。检查通过到真正改名之间有一个几十秒的窗口,这期间任何重新持有安装目录句柄的进程(桌面端自动重启、残留子进程、安全软件实时扫描)都会让 10 次 / 11.25 秒的重试全部失败。复现
0.2.2-rc.1(CurrentUser)0.2.2-rc.2installer-logs出现directory-failure-*.log期望
建议
dshPromoteDirectories的两次MoveFileExW前再次调用InstallerCheckAppRunning,与 README 的「替换前再次检查」保持一致。desktop-host及其子进程全部终止并释放app.asar句柄后,再交给安装器;如果这与 Windows desktop: GUI update always fails — Host never exits (koffi keeps the event loop alive) #9963 的 Host 退出问题同源,建议一并处理。DeepSeek Harness.exe进程退出"的前置条件,或提示用户关闭安全软件后重试。说明:以上时间线与日志来自我本机(可复现),路径中的用户名已替换为
<user>。All reactions