Theo vòng đời Windows 10, người dùng phải cài gói cập nhật lớn (feature updates) thường xuyên hơn các phiên bản Windows trước. Windows 10 nâng cấp hai lần một năm. Hiện tại, phiên bản Windows 10 mới nhất là Windows 10 1809 (October 2018 Update). Nâng cấp phiên bản Windows 10 có thể so sánh với cài Service Pack trong Windows cũ. Thành viên chương trình Windows 10 Insider Preview cài build này thường xuyên hơn – build hệ thống cập nhật 3-4 lần/tháng.
Nâng cấp Windows 10 không luôn thành công. vì nhiều lý do, cài đặt build mới có thể thất bại. Tuy nhiên, không phải lúc nào cũng hiểu được tại sao cập nhật không cài được (Windows không hiển thị thông tin có ý nghĩa). Tuy nhiên, tất cả thông tin cần thiết về quá trình nâng cấp build lưu trong file log. Thông tin này có thể hữu ích khi chẩn đoán và sửa lỗi nâng cấp Windows 10. Đây là file text thuần túy, và để tìm thông tin có ý nghĩa, bạn phải là chuyên gia Windows thực sự.
Công cụ SetupDiag.exe của Microsoft
May mắn thay, Microsoft gần đây phát hành công cụ chẩn đoán mới, SetupDiag.exe, cho phép lấy thông tin chi tiết về lý do build Windows 10 không được nâng cấp trên máy tính của bạn. Đây là công cụ dòng lệnh và phải chạy trực tiếp trên máy Windows 10 không được nâng cấp, hoặc ở chế độ offline trên máy khác, mà bạn phải copy file log từ máy gặp vấn đề trước.
SetupDiag quét log cài đặt Windows và tìm lỗi cụ thể trong chúng chỉ ra vấn đề nâng cấp Windows cụ thể.
SetupDiag.exe chạy trên Windows 10, yêu cầu .NET Framework 4.6 trở lên cài trên máy (Kiểm tra phiên bản .NET Framework cài trên máy). Bạn dùng công cụ cả chẩn đoán lỗi nâng cấp build Windows 10 và khi nâng cấp từ Windows 7 SP1 hoặc Windows 8.1 lên Windows 10. (Phải copy log nâng cấp sang máy chạy Windows 10 để phân tích.)
Tải SetupDiag tại link https://go.microsoft.com/fwlink/?linkid=870142 và chạy trong cmd nâng cao. Khi chạy không tham số, công cụ thử tìm file log Windows 10 tạo trong quá trình nâng cấp.

SetupDiag tìm kiếm theo đường dẫn chuẩn do hệ thống tạo ở các giai đoạn cài đặt build Windows 10 mới. Mặc định file log nằm ở thư mục:
\$Windows.~bt\Sources\Rollback– file nâng cấp xuất hiện ở thư mục này nếu nâng cấp Windows 10 kết thúc lỗi và phải rollback về build trước;\$Windows.~bt\sources\panther\Windows\Panther\Windows\Panther\NewOS
Sau khi phân tích log, công cụ tạo file results.log trong thư mục chạy. File chứa danh sách lỗi xảy ra khi nâng cấp (bạn có chỉ định vị trí file kết quả dùng tham số /Output). Tiện ích cũng tạo archive ZIP với file log nguồn.
Bạn có thể chạy SetupDiag ở chế độ offline quét file log copy từ máy khác. Ví dụ, để tìm log offline trong thư mục xác định và lưu kết quả vào file chỉ định, chạy lệnh:
SetupDiag.exe /Output:C:\SetupDiag\Results.log /Mode:Offline /LogsPath:D:\Logs
SetupDiag có thể dùng phân tích file memory dump (minidump) tạo trong Windows 10 khi BSOD xuất hiện (WinDbg phải cài). File setupmem.dmp tạo ở %SystemDrive%$Windows.~bt\Sources\Rollback hoặc %WinDir%\Panther\NewOS\Rollback tùy giai đoạn nâng cấp build Windows 10 bị ngắt.
Để phân tích setupmem.dmp trong thư mục chỉ định, chạy lệnh:
SetupDiag.exe /Output:C:\SetupDiag\Dumpdebug.log /Mode:Offline /LogsPath:D:\Dump
Các quy tắc (Rules) của SetupDiag
Khi chạy SetupDiag, bạn thấy thông điệp sau trong console:
SetupDiag: processing rule: CompatScanOnly. No match.
SetupDiag: processing rule: BitLockerHardblock. No match.
SetupDiag: processing rule: VHDHardblock. No match.
SetupDiag: processing rule: PortableWorkspaceHardblock. No match.
SetupDiag: processing rule: AuditModeHardblock. No match.
SetupDiag: processing rule: SafeModeHardblock. No match.
SetupDiag dùng các pattern định sẵn (rules) tìm các vấn đề nâng cấp Windows 10 đã biết. Tức là SetupDiag chỉ giúp tìm những lỗi nâng cấp được xác định trong các pattern này. Chuỗi No match nghĩa là vấn đề chỉ định không tìm thấy trong log.

Tập quy tắc SetupDiag đang mở rộng. Ví dụ, SetupDiag v1.00 (03/30/2018) có 26 rule, và SetupDiag v1.4.0.0 (12/18/2018) có 53 template. Mỗi rule có tên và identifier duy nhất. Hãy xem qua các rule SetupDiag và lỗi nâng cấp Windows 10 liên quan.
- CompatScanOnly — FFDAFD37-DB75-498A-A893-472D49A1311D – setup.exe được gọi ở chế độ tương thích, không phải chế độ nâng cấp.
- BitLockerHardblock — C30152E2-938E-44B8-915B-D1181BA635AE – hệ thống nguồn có BitLocker bật không được hỗ trợ ở hệ thống đích.
- VHDHardblock — D9ED1B82-4ED8-4DFD-8EC0-BE69048978CC – hệ thống boot dưới dạng ảnh VHD (chế độ nâng cấp này không hỗ trợ Windows 10).
- PortableWorkspaceHardblock — 5B0D3AB4-212A-4CE4-BDB9-37CA404BB280 – hệ thống boot từ thiết bị Windows To-Go USB (nâng cấp trong môi trường Windows To-Go không hỗ trợ).
- AuditModeHardblock — A03BD71B-487B-4ACA-83A0-735B0F3F1A90 – OS boot vào Audit Mode.
- SafeModeHardblock — 404D9523-B7A8-4203-90AF-5FBB05B6579B — OS boot vào Safe Mode.
- InsufficientSystemPartitionDiskSpaceHardblock — 3789FBF8-E177-437D-B1E3-D38B4C4269D1 – phân vùng hệ thống không đủ dung lượng cho nâng cấp.
- CompatBlockedApplicationAutoUninstall – BEBA5BC6-6150-413E-8ACE-5E1EC8D34DD5 – tìm thấy app không tương thích phải gỡ trước nâng cấp build.
- CompatBlockedApplicationDismissable — EA52620B-E6A0-4BBC-882E-0686605736D9 – khi cài đặt chế độ quiet (với key /quiet), xảy ra lỗi yêu cầu tương tác user và chặn cài đặt.
- CompatBlockedApplicationManualUninstall — 9E912E5F-25A5-4FC0-BEC1-CA0EA5432FF4 – tìm thấy ứng dụng không chuẩn không có entry Add/Remove Programs. File của nó phải gỡ thủ công.
- HardblockDeviceOrDriver — ED3AEFA1-F3E2-4F33-8A21-184ADF215B1B – một driver cài không tương thích OS mới và phải gỡ.
- HardblockMismatchedLanguage — 60BA8449-CF23-4D92-A108-D6FCEFB95B45 – ngôn ngữ hệ thống nguồn và đích không khớp.
- HardblockFlightSigning — 598F2802-3E7F-4697-BD18-7A6371C8B2F8 – bạn cài pre-release (phần chương trình Windows Insider) trên máy có Secure Boot bật. Pre-release không boot ở chế độ này.
- DiskSpaceBlockInDownLevel — 6080AFAC-892E-4903-94EA-7A17E69E549E – hệ thống hết dung lượng ổ khi nâng cấp.
- DiskSpaceFailure — 981DCBA5-B8D0-4BA7-A8AB-4030F7A10191 – hệ thống hết dung lượng ổ sau reboot vào release mới.
- DeviceInstallHang — 37BB1C3A-4D79-40E8-A556-FDA126D40BC6 – hệ thống treo hoặc thất bại (BSOD) khi cài nâng cấp.
- DebugSetupMemoryDump — C7C63D8A-C5F6-4255-8031-74597773C3C6 – BSOD khi cài đặt. Memory dump phải phân tích thêm để debug.
- DebugSetupCrash — CEEBA202-6F04-4BC3-84B8-7B99AED924B1 – lỗi cài đặt yêu cầu debug memory dump.
- DebugMemoryDump — 505ED489-329A-43F5-B467-FCAAF6A1264C – rule debug file memory.dmp tạo khi setup/nâng cấp.
- BootFailureDetected — 4FB446C2-D4EC-40B4-97E2-67EB19D1CFB7 – lỗi boot xảy ra ở giai đoạn cụ thể nâng cấp.
- FindDebugInfoFromRollbackLog — 9600EB68-1120-4A87-9FE9-3A4A70ACFC37 – cung cấp info về BSOD không cần cài debug package.
- AdvancedInstallerFailed — 77D36C96-32BE-42A2-BB9C-AAFFE64FCADC — lỗi installer nghiêm trọng.
- FindMigApplyUnitFailure — A4232E11-4043-4A37-9BF4-5901C46FD781 – lỗi trong đơn vị migration.
- FindMigGatherUnitFailure — D04C064B-CD77-4E64-96D6-D26F30B4EE29 – thông tin chi tiết về đơn vị migration thất bại.
- CriticalSafeOSDUFailure — 73566DF2-CA26-4073-B34C-C9BC70DBF043 – thất bại cập nhật ảnh SafeOS.
- UserProfileCreationFailureDuringOnlineApply — 678117CE-F6A9-40C5-BC9F-A22575C78B14 – lỗi tạo hoặc sửa hồ sơ user trong giai đoạn online nâng cấp.
- WimMountFailure — BE6DF2F1-19A6-48C6-AEF8-D3B0CE3D4549 – không gắn kết file WIM khi nâng cấp.
- FindSuccessfulUpgrade — 8A0824C8-A56D-4C55-95A0-22751AB62F3E – build Windows 10 nâng cấp thành công.
- FindSetupHostReportedFailure — 6253C04F-2E4E-4F7A-B88E-95A69702F7EC – thất bại giai đoạn đầu nâng cấp trong setuphost.exe.
- FindDownlevelFailure — 716334B7-F46A-4BAA-94F2-3E31BC9EFA55 – lỗi trong SetupPlatform.
- FindAbruptDownlevelFailure — 55882B1A-DA3E-408A-9076-23B22A0472BD – thông tin về lỗi mới nhất, khi entry log kết thúc bất ngờ.
- FindSetupPlatformFailedOperationInfo — 307A0133-F06B-4B75-AEA8-116C3B53C2D1 – thông tin về giai đoạn và lỗi nếu SetupPlatform thất bại nghiêm trọng.
- FindRollbackFailure — 3A43C9B5-05B3-4F7C-A955-88F991BB5A48 – hành động mới nhất và giai đoạn vấn đề trước rollback về Windows 10 trước.
- AdvancedInstallerGenericFailure – 4019550D-4CAA-45B0-A222-349C48E86F71 – lỗi đọc/ghi AdvancedInstaller.
- OptionalComponentFailedToGetOCsFromPackage – D012E2A2-99D8-4A8C-BBB2-088B92083D78 – thông tin lỗi thành phần tùy chọn khi lấy danh sách thành phần gói.
- OptionalComponentOpenPackageFailed – 22952520-EC89-4FBD-94E0-B67DF88347F6 – thất bại khi mở thành phần tùy chọn.
- OptionalComponentInitCBSSessionFailed – 63340812-9252-45F3-A0F2-B2A4CA5E9317 – installer hoặc thành phần cụ thể không chạy.
- UserProfileCreationFailureDuringFinalize – C6677BA6-2E53-4A88-B528-336D15ED1A64 – lỗi tạo hồ sơ user giai đoạn cuối nâng cấp.
- WimApplyExtractFailure – 746879E9-C9C5-488C-8D4B-0C811FF3A9A8 – thất bại ảnh WIM khi giải nén.
- UpdateAgentExpanderFailure – 66E496B3-7D19-47FA-B19B-4040B9FD17E2 — thất bại DPX khi cập nhật qua Windows Update.
- FindFatalPluginFailure – E48E3F1C-26F6-4AFB-859B-BF637DA49636 – lỗi trong một plugin.
- AdvancedInstallerFailed – 77D36C96-32BE-42A2-BB9C-AAFFE64FCADC – chỉ ra thất bại nghiêm trọng trong AdvancedInstaller khi chạy gói installer.
- MigrationAbortedDueToPluginFailure – D07A24F6-5B25-474E-B516-A730085940C9 – thất bại nghiêm trọng trong plugin migration khiến setup hủy migration.
- DISMAddPackageFailed – 6196FF5B-E69E-4117-9EC6-9C1EAB20A3B9 – thất bại nghiêm trọng trong thao tác DISM add package.
- PlugInComplianceBlock – D912150B-1302-4860-91B5-527907D08960 – phát hiện tất cả compat block từ plugin tuân thủ Server.
- AdvancedInstallerGenericFailure – 4019550D-4CAA-45B0-A222-349C48E86F71 – kích hoạt khi thất bại advanced installer ở nghĩa chung.
- FindMigGatherApplyFailure – A9964E6C-A2A8-45FF-B6B5-25E0BD71428E – hiển thị lỗi khi Migration Engine thất bại ở thao tác gather hoặc apply.
- OptionalComponentFailedToGetOCsFromPackage – D012E2A2-99D8-4A8C-BBB2-088B92083D78 – chỉ ra thao tác migration thành phần tùy chọn thất bại liệt kê optional components từ gói optional component.
- OptionalComponentOpenPackageFailed – 22952520-EC89-4FBD-94E0-B67DF88347F6 – chỉ ra thao tác migration thành phần tùy chọn thất bại mở gói optional component.
- OptionalComponentInitCBSSessionFailed – 63340812-9252-45F3-A0F2-B2A4CA5E9317 – chỉ ra hỏng servicing stack trên hệ thống down-level.
- DISMproviderFailure – D76EF86F-B3F8-433F-9EBF-B4411F8141F4 – kích hoạt khi DISM provider (plugin) thất bại ở thao tác quan trọng.
- SysPrepLaunchModuleFailure – 7905655C-F295-45F7-8873-81D6F9149BFD – chỉ ra sysPrep plugin thất bại ở thao tác quan trọng.
- UserProvidedDriverInjectionFailure – 2247C48A-7EE3-4037-AFAB-95B92DE1D980 – driver cung cấp cho setup (qua dòng lệnh) thất bại theo cách nào đó.
Ví dụ file results.log cung cấp thông tin về OS, phiên bản Windows 10 nguồn và đích và lỗi FindFatalPluginFailure:
Matching Profile found: FindFatalPluginFailure - E48E3F1C-26F6-4AFB-859B-BF637DA49636
System Information:
Machine Name = Offline
Manufacturer = VMware, Inc.
Model = VMware Virtual Platform
HostOSArchitecture = x64
FirmwareType = PCAT
BiosReleaseDate = 20160921000000.000000+000
BiosVendor = PhoenixBIOS 4.0 Release 6.0
BiosVersion = 6.00
HostOSVersion = 10.0.16299
HostOSBuildString = 16299.15.amd64fre.rs3_release.170928-1534
TargetOSBuildString = 10.0.17134.1 (rs4_release.180410-1804)
HostOSLanguageId = 1049
HostOSEdition = Professional
RegisteredAV =
FilterDrivers =
UpgradeStartTime = 4/10/2019 9:17:59 PM
UpgradeEndTime = 4/10/2019 10:10:36 PM
UpgradeElapsedTime = 00:52:37
ReportId = 004db4ee-17f9-4b6f-bc46-a8bd9877ccd8
Error: SetupDiag reports fatal migration plug-in failure. Plug-in Name = %windir%\system32\migration\CntrtextMig.dll, Migration Operation = IPostApply->ApplySuccess, Plug-in Error: 0x00000032
Trong ví dụ này SetupDiag tìm thấy cài đặt nâng cấp thất bại do lỗi trong plugin %windir%\system32\migration\CntrtextMig.dll.

Nếu hệ thống nâng cấp thành công, results.log chứa thông báo:
Matching Profile found: FindSuccessfulUpgrade - 8A0824C8-A56D-4C55-95A0-22751AB62F3E
Lỗi SetupDiag: Main() failed with an unhandled exception
Trong một số trường hợp chạy SetupDiag, bạn có thể gặp lỗi: "SetupDiag: Main() failed with an unhandled exception" trong log
10:20:58 - SetupDiag: Main() failed with an unhandled exception:
Could not find a part of the path 'C:\$Windows.~bt\sources\rollback'.
Exception System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\$Windows.~bt\sources\rollback'.
Source: mscorlib
Stack: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileSystemEnumerableIterator`1.CommonInit()
at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
at System.IO.DirectoryInfo.InternalGetFiles(String searchPattern, SearchOption searchOption)
at System.IO.DirectoryInfo.GetFiles(String searchPattern, SearchOption searchOption)
at Microsoft.Internal.Deployment.SetupDiag.CSetupAPIParser.GetCorrectSetupApiLog(String logsPath, DateTime dtSetupActLogTime)
at Microsoft.Internal.Deployment.SetupDiag.Directive.DirectiveDetermineDeviceInstallHang()
at Microsoft.Internal.Deployment.SetupDiag.Directive.DoDirective()
at Microsoft.Internal.Deployment.SetupDiag.CSetupDiag.RunDiag(String strRulesFile, String strlogsPath, String strMode, String strOutPut, String strFormat, String resLevel, Boolean fCreateLogs)
at Microsoft.Internal.Deployment.SetupDiag.Program.Main(String[] args)

Trong trường hợp tôi, do một thư mục log bị thiếu. Tôi giải quyết bằng cách copy log còn lại vào thư mục xác định và chạy SetupDiag ở chế độ offline:
SetupDiag.exe /Output:C:\tools\Results.log /Mode:Offline /LogsPath:c:\Logs\
Một số lỗi dễ sửa (như thiếu dung lượng ổ hệ thống), số khác khó hơn. Dù sao, SetupDiag cho phép chẩn đoán và sửa lỗi nâng cấp nhanh hơn trên máy chạy Windows 10 và tiết kiệm rắc rối admin phân tích log thủ công.