新版ChatGPT (Codex) 桌面版启动失败排查与修复记录
ChatGPT (Codex) 桌面版启动失败排查与修复记录

现象
打开 ChatGPT 桌面版(微软商店 MSIX 包 OpenAI.Codex)时报错:
ChatGPT failed to start.
Unable to locate the Codex CLI binary. Set CODEX_CLI_PATH or ensure the Electron resources include bin/codex.
问题根因
-
安装包文件被打上了 EFS 加密属性
通过Get-Item证实:整个app\resources目录与其中的codex.exe(以及ChatGPT.exe)均带有Encrypted属性:CSrcAttr: "Archive, Encrypted"(源文件)- 同时
PkgAppDirAttr: "Directory, Archive, Encrypted"(包含目录)
-
本机 EFS 加密功能不可用
测试[IO.FileInfo]::Encrypt()抛出Exception: "不支持该请求",说明系统不支持进行 EFS 加密操作。 -
复制过程会尝试保持加密状态
Windows 的CopyFileEx(应用使用的 Rustfs::copy底层)在复制带Encrypted属性的文件时,会在目标位置尝试重建加密。由于本机 EFS 不可用,会返回错误码0x80071770=ERROR_ENCRYPTION_FAILED(“无法加密指定的文件”)。 -
结果
应用的「重定位」步骤(从%ProgramFiles%\WindowsApps\...\resources\codex.exe→%LOCALAPPDATA%\OpenAI\Codex\bin\codex.exe)失败,导致所有候选路径均为空,直接抛出你看到的错误对话框。
关键证据链:
- Sentry 日志
bundled_executable_relocation_failed ... copy_file errorCode=UNKNOWN errorMessage="Bundled executable relocation failed during copy_file";- 手动
Copy-Item精确复现0x80071770;- 对照组(npm 版无加密属性的 exe)复制到同一目录成功;
- EFS 探测
Encrypt()报不支持该请求。
修复方案
核心思路
绕过 EFS 加密复制:用流式复制([IO.File]::OpenRead + .CopyTo)生成不带加密属性的普通副本,放到应用期望的 %LOCALAPPDATA%\OpenAI\Codex\bin\,再设置用户级环境变量 CODEX_CLI_PATH 指向它。代码里证实 CODEX_CLI_PATH 为解析器首选来源,直接绕过会失败的「重定位」环节。
具体步骤(已执行)
-
流式复制 4 个 exe 到目标目录
文件 | 目标路径 | 大小 | 校验codex.exe|C:\Users\14429\AppData\Local\OpenAI\Codex\bin\codex.exe| 307,568,432 字节 | SHA256 与源完全一致codex-code-mode-host.exe| 同上 | 65,880,368 字节 | 一致codex-windows-sandbox-setup.exe| 同上 | 15,403,312 字节 | 一致codex-command-runner.exe| 同上 | 8,162,096 字节 | 一致
复制后属性均为
Archive(普通),不再是Encrypted。 -
设置用户级环境变量
[Environment]::SetEnvironmentVariable('CODEX_CLI_PATH', "C:\Users\14429\AppData\Local\OpenAI\Codex\bin\codex.exe", 'User')- 该变量会通过
WM_SETTINGCHANGE广播到所有新进程(包括通过开始菜单/快捷方式启动的应用); - 代码解析器
ece()返回process.env.CODEX_CLI_PATH(已证实),作为首选路径在zi()之前使用,兜底的「重定位」从未被触发。
- 该变量会通过
-
验证效果
- ChatGPT 主窗口正常打开(标题“ChatGPT”);
- 后端
codex.exe进程(PID 27560)从C:\Users\14429\AppData\Local\OpenAI\Codex\bin\codex.exe启动,带正确app-server参数; - 日志中不再出现「Unable to locate」或
transport_connect_failed; - 启动后 Sentry 只留有非致命的
relocation_failed旧警告(可忽略)。
交付物:刷新脚本
在工作区创建 D:\deeplearning\ds_harness\ds_test\refresh-chatgpt-codex-bin.ps1,方便以后每次 ChatGPT 更新后重跑:
# refresh-chatgpt-codex-bin.ps1
$ErrorActionPreference = 'Stop'
$pkg = Get-AppxPackage -Name 'OpenAI.Codex' |
Sort-Object { [version]$_.Version } -Descending |
Select-Object -First 1
if (-not $pkg) { throw '未找到 OpenAI.Codex 包' }
$res = Join-Path $pkg.InstallLocation 'app\resources'
$bin = Join-Path $env:LOCALAPPDATA 'OpenAI\Codex\bin'
New-Item -ItemType Directory -Force -Path $bin | Out-Null
$names = @('codex.exe','codex-code-mode-host.exe','codex-windows-sandbox-setup.exe','codex-command-runner.exe')
foreach ($n in $names) {
$s = Join-Path $res $n
$d = Join-Path $bin $n
if (-not (Test-Path $s)) { Write-Warning "跳过(包内不存在): $n"; continue }
$fsSrc=[IO.File]::OpenRead($s)
$fsDst=[IO.File]::Open($d,[IO.FileMode]::Create,[IO.FileAccess]::Write,[IO.FileShare]::None)
$fsSrc.CopyTo($fsDst); $fsDst.SetLength($fsSrc.Length); $fsSrc.Close(); $fsDst.Close()
Write-Host ("OK: {0} ({1:N0} bytes)" -f $d, (Get-Item $d).Length)
}
[Environment]::SetEnvironmentVariable('CODEX_CLI_PATH', (Join-Path $bin 'codex.exe'), 'User')
Write-Host "CODEX_CLI_PATH = $(Join-Path $bin 'codex.exe') (用户级,已设置/刷新)"
Write-Host '完成。请完全退出并重新打开 ChatGPT。'
用法:powershell -ExecutionPolicy Bypass -File refresh-chatgpt-codex-bin.ps1
- 何时运行:ChatGPT 每次更新后,建议立即跑一次该脚本;环境变量会持久保留(用户级),只有当新版本的包内二进制文件版本显著变化(需要新功能/修复)时才显著需要重跑,否则只要脚本跑过一次、环境变量仍在有效期内即可。
备选:彻底根治(可选)
如果你更倾向于「安装干净」而非「绕过」:
- 卸载 ChatGPT(设置 → 应用 → ChatGPT → 卸载);
- 删除残留的
D:\WindowsApps\OpenAI.Codex_*与C:\Users\<User>\AppData\Local\OpenAI\Codex\bin\(管理员可选,非必须); - 从微软商店重装最新版。
新装的包文件在我们这台机器上不会再带 EFS 加密属性,即使用无脚本也能正常启动。但当前的「流式复制 + 环境变量」方案同样稳定、无需管理员、且无需重装,推荐优先使用。
小结
| 项目 | 状态 |
|---|---|
| 根原因 | 包文件 EFS 加密属性 + 本机 EFS 不可用 → 复制失败 → 启动报错 |
| 修复要点 | 流式复制不带加密属性的副本 → 设 CODEX_CLI_PATH 环境变量 → 重启应用 |
| 持久性 | 环境变量用户级持久;脚本 refresh-chatgpt-codex-bin.ps1 让后续更新一键复现 |
| 影响范围 | 仅本机 ChatGPT 实例;不影响其他应用或系统功能 |
| 残留现象 | 日志里可能仍有 relocation_failed 旧警告,无碍使用 |
记录时间:2026-08-27
更多推荐



所有评论(0)