【笔记】AutoClaw NSIS 安装器卡死、进程杀不掉、目录删不了?我是这么解决的

title: "NSIS 安装器卡死、进程杀不掉、目录删不了?我是这么解决的"

date: 2026-07-19
tags: Windows, NSIS, 安装, 故障排查, AutoClaw
status: draft

Z.ai - Inspiring AGI to Benefit Humanity

AutoClaw NSIS 安装器卡死、进程杀不掉、目录删不了?我是这么解决的

AutoClaw 从 1.12.1 升级到 1.13.0,正常操作,结果安装向导卡在"正在卸载旧版本"一动不动。更要命的是,这不是偶发问题 ------从它出的第一、二版开始,每次升级都会卡在这个地方,一卡就卡很长时间(几个小时以上)。1.13.0 这次尤其狠,昨晚开始升级,今天中午还在卡着,挂了将近 17 个小时,期间有弹窗显示进程未结束导致安装受阻,一查进程发现似乎是安装程序"自己卡自己",这就十分离谱。

我花了大半天把它搞定了,记录一下,给遇到同样问题的朋友一个参考。


问题长什么样

运行 autoclaw-1.13.0-setup-cn.exe,进度条走到一半就不动了,提示大概是"正在停止 AutoClaw 后台进程",然后就死在那儿。

任务管理器里能看见:

  • PID 31284:autoclaw-1.13.0-setup-cn(跑了 17 个小时,CPU 0%)
  • PID 143256:同一个程序(我后来又双击了一次)

用 PowerShell 查进程,常规方法全部失效:

复制代码
Stop-Process -Id 31284 -Force   # 失败
taskkill /F /PID 31284           # 失败

甚至 WMI 查询 Get-CimInstance Win32_Process 都卡住,连带把我自己的 PowerShell 也被外层 SIGKILL 了。

更离谱的是,D:\Programs\AutoClaw 目录删不掉,cmd /c rd /s /q 报"文件被另一个进程使用",Remove-Item -Recurse 被系统安全策略拦了两次确认。


诊断过程

第一反应是进程僵死了(Zombie Process)。查了一下:

  • PID 31284 的 HandleCount = 0,CPU = 0
  • OpenProcess(PROCESS_TERMINATE, ...) 居然能成功打开句柄

这说明:进程在内核态已经 exit,但 Windows 的 EPROCESS 结构还残留在进程表里,ObjDir 里还有引用,所以系统调用它就 hang。

换句话说,NSIS 安装器调用 TerminateProcess(31284) 时,永远等在内核态。


解法:绕过安装器,自己动手装

既然安装器本身动不了,那就把它要干的活拆开自己做。

第一步:用 NtTerminateProcess 强行终结

.NET 的 Process.Kill() 和 PowerShell 的 Stop-Process 都走的是同一个内核路径(NtTerminateProcess),但会被卡住的调用方传染。用 C# 直接 P/Invoke 调用 ntdll:

复制代码
// C#
[DllImport("ntdll.dll")]
public static extern int NtTerminateProcess(IntPtr h, uint exitCode);

// 调用
IntPtr h = OpenProcess(PROCESS_TERMINATE, false, 31284);
NtTerminateProcess(h, 0);  // 返回 0xC0000008 但进程实际已死

执行后 PID 31284 真的没了。

第二步:改名解锁目录

D:\Programs\AutoClaw 被旧进程锁着删不掉。用 System.IO.Directory.Move() 改名(不走文件句柄路径,所以不触发锁检查):

复制代码
[System.IO.Directory]::Move("D:\Programs\AutoClaw", "D:\Programs\AutoClaw-old-LOCKED")

改名成功后,目录立即解锁,原路径 D:\Programs\AutoClaw 变成了一个可以正常使用的新空目录。

第三步:7z 暴力解压安装包

NSIS 安装包本质是个自解压 SFX。用 7-Zip 直接拆:

复制代码
# 1. 解压外层 NSIS 结构
7z x autoclaw-1.13.0-setup-cn.exe -oD:\AutoClaw-1.13.0
# 结果:$PLUGINSDIR\app-64.7z(312MB)

# 2. 解压真正的应用包
7z x "D:\AutoClaw-1.13.0\$PLUGINSDIR\app-64.7z" -oD:\AutoClaw-1.13.0\app-extract
# 结果:AutoClaw.exe (180MB) + resources + locales,共 6038 个文件,1.48 GB

第四步:xcopy 装进去

复制代码
xcopy /E /Y D:\AutoClaw-1.13.0\app-extract\* D:\Programs\AutoClaw\
# 6038 File(s) copied

第五步:注册表 + 快捷方式

注册表卸载项写用户级(HKCU,不需要管理员权限):

复制代码
$guid = "{" + [guid]::NewGuid().ToString().ToUpper() + "}"
$regPath = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$guid"
New-Item -Path $regPath -Force | Out-Null
Set-ItemProperty -Path $regPath -Name "DisplayName"      -Value "AutoClaw"
Set-ItemProperty -Path $regPath -Name "DisplayVersion"   -Value "1.13.0"
Set-ItemProperty -Path $regPath -Name "Publisher"        -Value "ZhipuAI"
Set-ItemProperty -Path $regPath -Name "InstallLocation"  -Value "D:\Programs\AutoClaw"

快捷方式用 WScript.Shell 创建:

复制代码
$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$env:USERPROFILE\Desktop\AutoClaw.lnk")
$Shortcut.TargetPath = "D:\Programs\AutoClaw\AutoClaw.exe"
$Shortcut.WorkingDirectory = "D:\Programs\AutoClaw"
$Shortcut.Description = "AutoClaw - 智谱 AI 桌面助手"
$Shortcut.Save()

第六步:启动

复制代码
Start-Process D:\Programs\AutoClaw\AutoClaw.exe

瞬间 4 个进程全跑起来,FileVersion: 1.13.0.431,安装完成 ✅


总结

说起来复杂,实际上核心就三板斧:

  1. NtTerminateProcess 绕过卡住的系统调用
  2. 改名而不是删除,绕过文件锁
  3. 7z 解压替代安装器,自己做文件复制

整个过程大概 10 分钟(解压比较慢,要 1-2 分钟),比等 NSIS 安装器"回过神"快多了。

如果你也遇到类似的问题(升级安装卡死、杀进程杀不掉),不妨试试这个思路------把安装器的黑盒操作拆开,自己用命令行拼出来。

另外,如果你是 AutoClaw 开发者,这个问题其实有更优雅的解法:升级前先主动退出旧进程,或者在 NSIS 里加个超时机制,别让 installer 傻等。另外可以考虑给用户留个"强制重装"的入口,不用非得先跑卸载程序。


有问题欢迎评论区交流。

相关推荐
Mandy的名字被占用了13 小时前
晨风AI+知识付费系统|学练考全闭环,重构教育变现新模式
人工智能·后端
步步为营DotNet13 小时前
Avalonia 11.3 本地离线AI图像识别绑定Minimal API AI推理网关
人工智能
满怀冰雪13 小时前
06-自动微分入门:用 Paddle 计算梯度
人工智能·python·深度学习·paddle
架构源启13 小时前
文档接入与智能解析:基于 Spring AI 1.1.x 的多格式解析、版面理解与结构化抽取
java·人工智能·spring
李昊哲小课14 小时前
GLM 多技术栈集成完整教程
人工智能·智能体
浩哥学JavaAI15 小时前
2026年最新AI agent面试(10)_通信与行业动态
人工智能·面试·职场和发展
新知图书15 小时前
7.4 测试与发布(一键生成PPT智能体开发)
人工智能·agent·ai agent·智能体·扣子
糖果店的幽灵15 小时前
【langgraph 从入门到精通graphApi 篇】Checkpoint 持久化与状态管理
人工智能·langgraph
谙弆悕博士15 小时前
系统集成项目管理工程师教程(第3版)笔记——第2章:信息技术发展
笔记·计算机网络·信息安全·学习方法·业界资讯·软考·系统分析师