Codex 安装卡在 Microsoft Store 0x80080005?用 winget 与 App Installer 修复并配好 TaoToken
1. 先搞清楚 0x80080005 到底卡在哪一环Codex 在 Windows 上的安装链路很多人以为是「下载一个 exe 双击就完事」实际上它依赖 Microsoft Store 的 App Installer 组件来分发和更新。当你在 Store 里点安装 Codex或者用 winget 拉取 Codex 包时如果系统里的 Store 本体处于半损坏状态就会抛出0x80080005。这个错误码的官方解释是「服务器执行失败」但在实际排障中它几乎总是指向 Store 缓存队列、Windows Update 服务、AppX 部署服务三者之间的状态不一致。我遇到的现象很典型Codex 安装进度条走到一半直接消失Store 的「库」页面里 Codex 条目显示「正在开始下载」但永远不动手动点「重试」也没反应。更奇怪的是Store 自己的更新也卡住了版本号停留在旧版12107.1001.15.0。这说明问题不在 Codex 安装包本身而是 Store 的更新通道被堵死了。适合谁看这篇如果你在 Windows 10/11 上装 Codex、Cursor、或者任何通过 Store 分发的开发工具时遇到0x80080005或者 Store 本身无法更新、下载卡在「正在开始下载」这篇的步骤可以直接照做。核心思路是先把 Store 和 App Installer 的依赖链路修好再用 winget 强制重装 Codex最后把 TaoToken 的统一 Key 写进config.toml验证连通。需要提前说明下面所有 PowerShell 命令都建议在「管理员 PowerShell」里执行。普通权限下wuauserv可能报0x80070005拒绝访问导致服务起不来后面步骤全白搭。2. 修复前先把 TaoToken 的接入信息准备好Store 修好之后Codex 能不能跑起来取决于你有没有一个稳定的 API 通道。TaoToken 在这里的角色是统一 Key 和 API 入口你不需要在 Codex 里分别填多个厂商的 Key而是把 TaoToken 的 API 地址和 Key 写进config.tomlCodex 的所有模型请求都走这一条通道。先做两件事。第一打开官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册并登录。第二进控制台创建 API Key地址是https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content在「API Keys」页面点新建复制那串sk-开头的 Key先存到记事本里。如果你后面要跑长期编码任务或者 Agent 流程建议顺手看一下 Coding Plan 页面https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content它针对高频调用场景做了额度优化。只是想先验证模型通不通用模型对话页https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content手动发一条消息最快。API 的基础地址是https://taotoken.net/api这个地址后面要写进config.toml。注意它不带任何查询参数就是纯 API 根路径。Key 的权限范围在创建时可以选建议先给最小权限验证通过后再按需放开。提示Key 只显示一次关掉页面就看不到了。如果没存直接删掉重建一个不要试图找回。3. 可复制的 Store 修复与 Codex 重装命令这一章是全文的核心操作区。按顺序执行不要跳步。每一步执行完可以停一下看输出确认没有红色报错再继续。3.1 关闭 Store 和 winget 相关进程先清掉卡住的 Store 窗口、后台任务和 winget 安装队列。这些进程如果还在跑后面停服务会失败。Get-Process -Name WinStore.App,StoreExperienceHost,backgroundTaskHost,winget,WindowsPackageManagerServer -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue执行后没有输出是正常的说明这些进程本来就没在跑或者已经被杀掉了。3.2 停止五个关键服务Store 更新依赖的服务不止一个逐个停掉$services BITS,wuauserv,InstallService,ClipSVC,AppXSvc foreach ($svc in $services) { Stop-Service $svc -Force -ErrorAction SilentlyContinue }BITS负责后台下载wuauserv是 Windows Update 主服务InstallService管 Store 安装ClipSVC管许可证授权AppXSvc管 AppX/MSIX 部署。这五个里任何一个状态异常0x80080005都可能出现。3.3 清理 Store 和 Windows Update 缓存缓存路径分两类Store 自己的本地缓存和 Windows Update 的下载/数据库缓存。用循环一次性清掉$cachePaths ( $env:LOCALAPPDATA\Packages\Microsoft.WindowsStore_8wekyb3d8bbwe\LocalCache, $env:LOCALAPPDATA\Packages\Microsoft.WindowsStore_8wekyb3d8bbwe\LocalState, $env:LOCALAPPDATA\Packages\Microsoft.StorePurchaseApp_8wekyb3d8bbwe\LocalCache, $env:SystemRoot\SoftwareDistribution\Download, $env:SystemRoot\SoftwareDistribution\DataStore ) foreach ($path in $cachePaths) { if (Test-Path -LiteralPath $path) { Remove-Item -LiteralPath $path -Recurse -Force -ErrorAction Continue } }LocalCache和LocalState是 Store 的本地状态StorePurchaseApp的缓存管购买体验组件SoftwareDistribution\Download和DataStore是 Windows Update 的下载队列和数据库。清掉之后 Store 会重建这些目录。3.4 重新启动服务并确认状态foreach ($svc in $services) { Start-Service $svc -ErrorAction Continue }启动后立刻检查状态Get-Service $services | Select-Object Name,Status | Format-Table -AutoSize正常输出应该是五个服务全部Running。如果wuauserv还是Stopped说明权限不够回到管理员 PowerShell 重试。3.5 重新注册 Microsoft Store这一步修复 Store 半安装或注册状态异常$store Get-AppxPackage Microsoft.WindowsStore -ErrorAction SilentlyContinue if ($store) { $manifest Join-Path $store.InstallLocation AppxManifest.xml if (Test-Path -LiteralPath $manifest) { Add-AppxPackage -DisableDevelopmentMode -Register $manifest -ErrorAction Continue } }3.6 重置 Store 并触发安装通道wsreset -i这个命令会重置 Store 缓存并重新初始化安装通道。执行后 Store 窗口可能会自动弹出等它自己关掉或者手动关掉都行。3.7 用 winget 强制重装 Store这是修复0x80080005的关键一步。9WZDNCRFJBMP是 Microsoft Store 在 msstore 源里的包 IDwinget install --id 9WZDNCRFJBMP --source msstore --accept-source-agreements --accept-package-agreements --force成功时输出类似已找到 Microsoft Store [9WZDNCRFJBMP] 正在启动程序包安装... 已成功安装3.8 验证 Store 和 App Installer 版本Microsoft.WindowsStore,Microsoft.StorePurchaseApp,Microsoft.DesktopAppInstaller | ForEach-Object { Get-AppxPackage $_ -ErrorAction SilentlyContinue | Select-Object Name,Version,PackageFullName } | Format-Table -AutoSize修复后我这边看到的版本是Store22606.1401.6.0购买体验主机22605.1401.3.0App Installer / winget1.29.280.0。你的版本号可能更新只要不是旧版12107那种就行。3.9 重新安装 CodexStore 修好后Codex 的安装链路就通了。如果你之前用 Store 装失败现在重新在 Store 里点安装即可。也可以用 winget 直接拉winget install --id Codex --source msstore --accept-source-agreements --accept-package-agreements如果 winget 提示找不到 Codex 的包 ID回到 Store 搜索 Codex 手动安装效果一样。4. 写入 config.toml 并验证 TaoToken 连通Codex 装好之后默认配置不会指向 TaoToken。你需要手动改config.toml。这个文件的位置通常在%USERPROFILE%\.codex\config.toml如果目录不存在就手动建一个。4.1 config.toml 骨架# Codex 配置文件 # TaoToken 统一 API 通道 [api] base_url https://taotoken.net/api api_key sk-你的TaoTokenKey model gpt-4o [request] timeout 60 max_retries 3 [log] level info把sk-你的TaoTokenKey替换成第 2 章里创建的那串 Key。base_url必须是https://taotoken.net/api不要加斜杠结尾也不要带任何查询参数。model字段填你实际要用的模型名TaoToken 支持的模型列表可以在模型对话页https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content里查。4.2 用 PowerShell 快速写入如果你不想手动找目录可以直接用命令生成$configDir $env:USERPROFILE\.codex if (-not (Test-Path $configDir)) { New-Item -ItemType Directory -Path $configDir -Force } $configContent [api] base_url https://taotoken.net/api api_key sk-你的TaoTokenKey model gpt-4o [request] timeout 60 max_retries 3 [log] level info Set-Content -Path $configDir\config.toml -Value $configContent -Encoding UTF8执行完用Get-Content $env:USERPROFILE\.codex\config.toml检查内容是否正确。4.3 验证请求是否走通最直接的验证方式是用 curl 发一条最小请求。在 PowerShell 里执行$headers { Authorization Bearer sk-你的TaoTokenKey Content-Type application/json } $body { model gpt-4o messages ({ role user; content ping }) max_tokens 10 } | ConvertTo-Json -Depth 5 Invoke-RestMethod -Uri https://taotoken.net/api/v1/chat/completions -Method Post -Headers $headers -Body $body如果返回里包含choices字段和一段回复内容说明 TaoToken 通道已经通了。如果返回401检查 Key 是否复制完整返回404检查base_url是否写成了https://taotoken.net/api而不是别的路径。4.4 在 Codex 里跑一次真实请求打开 Codex新建一个会话输入一句简单指令比如「用 Python 写一个读取 CSV 并打印前五行的脚本」。如果 Codex 正常返回代码说明config.toml被正确加载TaoToken 的 Key 和 API 地址都生效了。注意改完config.toml后需要重启 Codex配置不会热加载。如果 Codex 有缓存关掉进程再开。5. 本篇常见错排查5.1 wuauserv 启动报 0x80070005 拒绝访问这是权限问题。确认你用的是「管理员 PowerShell」不是普通窗口。如果已经是管理员还报这个错先执行sc config wuauserv start demand把启动类型改成手动再Start-Service wuauserv。5.2 winget install 报「找不到与输入条件匹配的已安装程序包」说明 winget 的源列表里没有 msstore 源。先执行winget source list检查如果没有 msstore用winget source add msstore https://storeedgefd.dsx.mp.microsoft.com/v9.0添加。添加后再重试安装命令。5.3 Store 重装后 Codex 还是装不上先确认 Store 本身能正常打开和更新。如果 Store 能打开但 Codex 安装仍失败检查 App Installer 版本是否低于1.29。低于这个版本的话用winget install --id 9NBLGGH4NNS1 --source msstore --force单独升级 App Installer。5.4 config.toml 改了但 Codex 不生效三个可能文件路径不对、编码不对、Key 失效。路径必须是%USERPROFILE%\.codex\config.toml不是 Codex 安装目录。编码用 UTF-8 无 BOMPowerShell 的Set-Content -Encoding UTF8默认带 BOM如果 Codex 解析报错改用[System.IO.File]::WriteAllText()写入。Key 失效的话重新创建一个。5.5 请求返回 429 或额度不足说明 Key 的额度用完了或者触发了速率限制。去控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content查看用量必要时在 Coding Plan 页面https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content调整套餐。5.6 Store 修复后其他 UWP 应用异常清理SoftwareDistribution缓存后部分系统应用的更新状态会重置。等 Windows Update 自己跑一轮或者手动执行Get-AppxPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register $($_.InstallLocation)\AppXManifest.xml}重新注册所有 AppX 包。这条命令耗时较长只在确实出问题时用。6. 修好 Store 之后把 Key 和通道固定下来Store 的0x80080005本质上是 Windows 更新链路的状态不一致不是 Codex 本身的问题。修好 Store 和 App Installer 之后Codex 的安装会顺畅很多。但装好只是第一步真正让 Codex 跑起来的是config.toml里那条 TaoToken 通道。如果你只是临时验证用模型对话页https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content手动发消息最快不用改配置文件。如果你要长期在 Codex 里跑编码任务建议把 Key 写进config.toml后固定下来同时去 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content给这个 Key 设一个合理的额度上限避免意外超支。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content里面有各语言 SDK 的配置示例遇到参数不确定的时候直接对照。最后提醒一句config.toml里的 Key 是明文存储的不要把这份配置提交到 Git 仓库。如果多人共用一台机器考虑用环境变量注入 KeyCodex 支持从TAOTOKEN_API_KEY读取。