HOWTO: 使用 SetupDiag Tool 诊断 Windows 10 升级故障

        之前我们已经了解如何使用 Windows 10 安装程序 Setup.exe 执行升级验证,并学习了如何分析 Windows 10 安装日志,如果你无法专注于那些错误信息,那么不要气馁!微软为我们带来了 SetupDiag 工具,它是一个独立的诊断工具,可获取有关 Windows 10 升级失败原因的详细信息。(PS:微软真是太贴心了,记住这款诊断工具是免费的!)

        SetupDiag 支持 Windows 7 SP1 to Windows 10;Windows 8.1 同 Windows 10;以及 Windows 10 to Windows 10。

        SetupDiag 会检查 Windows 安装程序的相关日志,并识别出导致 Windows 10 安装或升级失败的关键日志信息。此外,SetupDiag 还支持离线模式,对于那些已经遭遇安装或升级失败的设备,我们也可以使用 SetupDiag 找出失败的根因。

        SetupDiag 需要 .NET Framework 4.6,如果你在为满足需求的环境下执行,则会遇到错误提示,所以请先确保您的系统环境已经安装了 dotNET4,对于 Windows 7 是需要额外安装该组件的。

Req_dotNet4

        从微软官方下载:SetupDiag,可直接双击运行,但 gOxiA 建议你以管理员模式在 CMD 下手工执行,如下图所示:

setupdiag

        SetupDiag 会从相关的目录下查找日志以进行自动化的诊断,如果找到匹配的信息,则会给出诊断结果,在本例中 SetupDiag 找到了“Processing rule: CompatScanOnly”,并给出了相关的建议和参考信息,最后还会生成名为 SetupDiagResults.log 的日志文件,以供我们事后参考。此外,还会生成一个 Logs.zip 的压缩包,其中包含了相关的日志文件。

SetupDiagResults

        如果要执行脱机诊断,需要收集相关的日志到一个文件下,并为 SetupDiag 附加命令参数,参考如下:

SetupDiag.exe /LogsPath:c:\setuplog

        在 SetupLog 文件夹下应该包含相关的日志文件,你可以从以下位置复制。

\$Windows.~bt\sources\panther

\$Windows.~bt\sources\rollback

\Windows\panther

\Windows\Panther\NewOS

HOWTO: 分析 Windows 10 安装日志

[ 2019/07/11 13:56 | by gOxiA ]

HOWTO: 分析 Windows 10 升级安装日志

        如果你在关注 gOxiA 前几天分享的日志“HOWTO: 使用 Windows 10 安装程序 Setup.exe 执行升级验证”,那么应该已经收集到了相关的日志,我们会重点分析“MoSetup”下的“BlueBox”日志,以及“Panther”下的“setuperr”和“setupact”日志。

setuplog

        如下面截图中 BlueBox 日志记录了 0xC190010A,它表示“MOSETUP_E_UNKNOWN_CMD_LINE”,即命令行未知,排查后发现是 gOxiA 执行的 Setup.exe 命令行参数存在错误。

BlusBox_log

        当然以上的错误并不常见,只是为了本文说明,但是在遇到具体的升级故障时我们还需要分析 setuperr.log,该日志中包含了很多错误信息,但并不是所有的错误都会导致升级失败,如下图所示:

setuperr_log

        虽然包含了很多错误日志,但并不会真正影响 Windows 10 升级安装,所以我们需要查找那些会导致“Shell 应用程序请求终止”,或“由于对象的错误而放弃应用”的错误,此外 IT 人员还需要根据实际情况对 setupact.log 进行分析。这些日志通常包含四个等级的日志:Info, Warning, Error, Fatal Error;组件主要包含:CONX (Compatibility Information), MOUPG (Modern Upgrade), PANTHR, SP (Setup Platform), IBSLIB, MIG (Migration Engine), DISM, CSI, CBS。

HOWTO: 使用 Windows 10 安装程序 Setup.exe 执行升级验证

        当我们要在 Windows 7 或 Windows 8.1 系统环境上升级安装 Windows 10 时,可能会因为现有系统环境的一些兼容性问题,导致升级安装失败,这会耗费很多的时间和精力。所以,建议先使用 Windows 10 的安装程序 - Setup.exe 执行升级验证,以便在未正式升级安装 Windows 10 前进行评估,并对发生的错误进行分析和排错。

        Setup.exe 位于 Windows 10 安装源根目录下,我们可以附加一系列的命令参数执行升级验证,为此请执行如下指令:

setup.exe /auto upgrade /quiet /noreboot /dynamicupdate disable /compat scanonly

        其中 upgrade 表示以就地升级的方式来执行 Windows 10 安装;而 scanonly 则表示 Windows 安装程序通过兼容性扫描运行,然后退出并带有退出代码,以指示是否存在兼容性问题。如果返回的退出代码是 0xC1900210,则表示没有发现兼容性问题;如果发现兼容性问题将返回 0XC1900208,或其他代码。

        那么我们该如何获取退出代码呢?!最为简单的办法就是编写一个批处理脚本,执行升级验证命令行,然后输出退出代码,如下图所示:

echo_errorlevel

        在本例中,执行升级验证后得到的退出代码是“-1047526896”,其代表“0xC1900210”。如果得到的是其他异常代码则需要进行分析和排错,所以建议使用如下的命令行收集日志,当然我们也可以直接查找相关目录下产生的日志文件进行分析。

setup.exe /auto upgrade /quiet /noreboot /dynamicupdate disable /compat scanonly /copylogs c:setuplog

        命令执行完成后会在指定的目录收集相关日志,我们便可以做进一步的分析,有关如何分析日志的方法将在下次与大家分享。

Setup_Compat_Scanonly

Windows 10 Setup.exe 命令参数:https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-setup-command-line-options

本文参考了 Michael Niehaus 的文章:“Windows 10 Pre-Upgrade Validation using SETUP.EXE

分页: 22/147 第一页 上页 17 18 19 20 21 22 23 24 25 26 下页 最后页 [ 显示模式: 摘要 | 列表 ]