# Windows 软件更新失败，卡在下载、安装还是版本检查？

软件列表里提示有新版本，点了更新却一直卡住没动静。别着急反复狂点更新按钮，先看清楚它到底卡在哪个阶段：是正在下载、等管理员授权、后台安装器在等按键，还是装完了但版本号没对上。

## 分清是下载慢还是安装卡住了

Mole 在更新时会清楚标出当前进度。下载时能读到总大小就会显示百分比，读不到也会显示已下载体积，只要数字还在跳，就说明网络还在传输。下载阶段随时可以点取消；但一旦进入了安装阶段，就不能中途强行终止，避免把软件搞成半生不熟的损坏状态。

| 卡在什么地方 | 建议先看这里 |
| --- | --- |
| 下载一直没动静，或提示网络错误 | 检查当前网络或厂商服务器，记录具体报错 |
| 正在请求管理员权限 | 检查 Windows 是否正在等待管理员授权，留意任务栏和授权界面 |
| 显示安装中，但一直不结束 | 任务栏是否有隐藏的安装向导在等点击“下一步”或等关闭旧软件 |
| 安装结束了，列表还提示同一个版本 | 打开软件自己的“关于”页面，看实际版本是否已经更新 |

如果是下载服务器超时，安装包其实根本还没跑起来。先别急着把还能用的旧软件卸载掉，稍等一会儿换个时间重试往往就好了。

## 错误代码先看属于哪种安装器

安装失败不总是一个原因，Windows Installer 的几个代码就很容易被混为一谈。

| MSI 代码 | 含义 | 下一步 |
| --- | --- | --- |
| 1603 | 安装失败的通用结果 | 看同一次安装的日志，代码本身没有指出具体原因 |
| 1618 | 另一项安装正在执行 | 先让那项安装结束，不要同时再启动一份 |
| 3010 | 安装成功，需要重启才能完成 | 保存工作后按提示重启，再核对版本 |

这张表来自[微软的 Windows Installer 代码表](https://learn.microsoft.com/en-us/windows/win32/msi/error-codes)，适用的是 MSI 结果，不能拿相同数字去解释所有厂商的 EXE 安装器。尤其 `3010`，它与“下载失败，需要重新安装”是完全不同的状态。

## 找日志，不需要再跑一次安装

可以先在 PowerShell 执行这行查询，它显示 WinGet 的版本、环境和日志目录，不会开始更新软件。

```powershell
winget --info
```

按输出的位置找到出错时段的日志，对照软件名、包 ID 和时间，先分清错误来自下载请求、安装器退出还是版本检查。日志里可能包含本机用户名和文件路径，发送给支持前删去不想分享的部分，别把一整包日志发到公开评论里。

保留“点击更新的时间、当时的软件版本、完整代码、是否出现授权或重启提示”这几项，就能避免把昨天另一个软件的安装失败当成本次原因。[WinGet 排查说明](https://learn.microsoft.com/en-us/windows/package-manager/winget/troubleshooting)给出了日志查询方法，不需要为了取日志先强制重装。

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-windows-app-update-failures-zh-mobile.webp" type="image/webp" width="768" height="1500">
    <img src="/img/blog/windows-windows-app-update-failures-zh.webp" width="1360" height="454" loading="lazy" alt="更新卡在哪一步，处理就看哪一步">
  </picture>
  <figcaption>按阶段定位更新问题，只有需要权限时才请求授权，安装完成以后再核对实际运行的版本。</figcaption>
</figure>

## 部分软件更新有自己的特殊要求

像 Java 8 这类传统安装包，常常硬性要求先卸载旧版本；全机安装的软件又必须有管理员权限才能覆盖。不同安装程序有自己的退出代码，微软的 [winget 排查说明](https://learn.microsoft.com/en-us/windows/package-manager/winget/troubleshooting)列出了常见的报错原因。遇到具体故障，记下报错代码会比单纯说“更新失败”好查得多。

## 装完了为什么还显示老版本

有些软件在电脑里同时装了“仅当前用户”和“所有用户”两份；还有些软件内置的版本号和包管理器记录并不完全一致。先打开实际使用那份软件的“关于”页面，再核对文件位置和安装范围。像 Edge、Chrome 这类浏览器，在后台更新完毕后，通常要彻底关掉重新打开才会切到新版本。

软件更新的具体机制也可以看看[软件更新指南](/zh/windows/blog/update-windows-apps)。

## 遇到疑难问题如何反馈

记下 Windows 和 Mole 的版本、出问题的软件名称，以及卡在下载还是安装的哪一步，附上报错截图，通过 [Windows 帮助](/zh/windows/help)里的渠道反馈即可。

另外，普通软件更新、Mole 自身的更新以及 Windows Update 是三套独立的机制，某款软件更新报错，不用怀疑是整台电脑的系统出了大毛病。


Canonical: https://mole.fit/zh/windows/blog/windows-app-update-failures
