Repository navigation
Replies: 1 comment
|
Same failure here on Windows, with the same signature — and the cause is confirmed: the app's own runtime child process still holds the install directory when the installer tries to move it. Environment
Installer log4 attempts (18:49, 18:53, 18:59, 19:05), all identical: It is our own process, not AV or a stale handle
Workaround that worked
Suggestion
|
0 replies
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 上通过应用内入口升级到 0.2.2-rc.2(nightly 通道)失败:点击升级后 DSH 自动退出,安装器在“备份旧安装目录”这一步被 Windows 以
ERROR_SHARING_VIOLATION (32)拒绝,重试 10 次后回滚并重启旧版本。环境
channel: nightly)https://download.deepseek.com/dsh-desk/feeds/win-x64/(generic provider)D:\App\AI\DeepSeek Harness(per-user 安装,安装器 manifest 为asInvoker,无需管理员)%LOCALAPPDATA%\@deepseek-aidsh-desktop-updaterdeepseek-harness-0.2.2-rc.2-win-x64.exe(286 MB,SHA-512 与update-info.json完全一致,签名有效)复现步骤
现象
.old-目录,现有安装本身完好。已排除的因素
update-info.json中记录完全一致,数字签名有效(Hangzhou DeepSeek Artificial Intelligence Co., Ltd.),isAdminRightsRequired: false。requestedExecutionLevel level="asInvoker",卸载项在 HKCU,安装目录可写。报错日志
安装器每次尝试都会在
%LOCALAPPDATA%\@deepseek-aidsh-desktop-updater\installer-logs\写入一份directory-failure-<时间>.log,三份内容一致(仅 GUID 与时间不同):另外两次的日志:
对应的
update-info.json:{"fileName":"deepseek-harness-0.2.2-rc.2-win-x64.exe","sha512":"5rRAkVruKkm4KELAbTqV8ZFrMwSo3oESnzXb9ebkJWPCMe6WuHORQZR63uY+BqAc6sBdyBtwSelsCGh0k1NcJA==","isAdminRightsRequired":false}原因推测(附验证情况)
直接原因:rc.2 的安装器在解压新版之前,会先把整个旧安装目录重命名为
…old-{GUID}做备份;该MoveFileExW被 Windows 以ERROR_SHARING_VIOLATION (32)拒绝,重试 10 次后放弃并回滚。Restoration error: 0说明回滚成功。为什么会被拒绝:安装器进程的工作目录(cwd)恰好就是它要重命名的那个目录,形成“自占用”。
已验证的依据:
electron-updater的spawnLog()启动,参数仅为{ stdio: "ignore", detached: true },没有传cwd,因此继承父进程(DSH 主进程)的工作目录。D:\App\AI\DeepSeek Harness\;开始菜单快捷方式的“起始位置”同样是该目录。window-frame.dll插件(包含InstallerReportDirectoryFailure、MoveFileExW、Attempts:等字符串)没有导入SetCurrentDirectoryW,运行期间不会切换工作目录。MoveFileExW让一个进程重命名自己的 cwd,稳定复现errno=32和同一句中文错误文案。由此可以解释为什么每次 10 次重试全部失败:占用者不会随时间释放。问题不属于更新包、网络、权限或杀毒软件,也不像是残留进程导致。
为什么不是所有用户都会遇到:只有从“起始位置为安装目录”的快捷方式(或类似方式)启动 DSH 时,安装器才会继承到安装目录作为 cwd;从其他工作目录启动 DSH 的用户升级不受影响。这也提供了一个反证实验:从非安装目录启动 DSH 后再升级,应当能够成功。
临时规避方式(已验证可行)
DeepSeek Harness.exe残留),然后在资源管理器中进入%LOCALAPPDATA%\@deepseek-aidsh-desktop-updater\pending,双击deepseek-harness-0.2.2-rc.2-win-x64.exe覆盖安装。此时安装器的 cwd 是pending目录而非安装目录,备份改名可以成功。C:\下用命令行启动 DSH,再使用应用内升级:建议的修复方向
略,你们专业的肯定比我用AI写出来的建议专业
附:从v0.2.1或者更早开始,左侧工作区中的最新对话都无法自动移动到对应文件夹最上方,是bug吗?
All reactions