Windows 10 - nejde instalovat aktualizace?

V tomto článku se podíváme na příklad z praxe. Nedávno jsem řešil jeden zapeklitý problém, kdy se na staré instalaci Windows 10 build 1709 nedaří nainstalovat build novější. Nebudu tady popisovat co s tím majitel dělal a co všechno zkoušel, prostě to nešlo.

Jako první určitě udělejte dvě základní opravy! A zkuste to znovu, budete překvapení, jak často příkazy DISM a SFC vyřeší i zdánlivě neřešitelné problémy.

Cíl byl jasný, nainstalovat nějnovější (21H2) build Windows10. Předem se omlouvám, ale už si nepamatuju přené znění chyb v češtině a tak to budu řešit v angličtině. Osvojte si to i vy, google to ocení!

Napřed trocha teorie. Při instalaci se vytvoří skytý adresář na stejném disku kde je instalace Windows (předpokládejme klasický disk C:) - C:\$Windows.~BT, kde jsou kromě samotných souborů i veškeré logy (tedy pokud instalace havaruje, pokud ne, tak se logy přesunou jinam, ale v tom případě nás už nezajímají). Konkrátně se bavíme o cestě a souboru:

C:\$Windows.~BT\Sources\panther\setuperr.log

Cesta může být vyjímečně jiná, jméno souboru však zůstává.

Konec teorie, zpět k praxi. Při prvním spuštění instalace z bootovacího disku skončila při kontrole zda je PC připraveno k instalaci - "Nemůžeme říct, zda je vaše PC připraveno...". Anglicky to je "We can´t tell if your PC is ready to...".

Zde je pak log setuperr.log:

2022-01-18 22:03:21, Error                 CSI    00000001 (F) STATUS_OBJECT_NAME_NOT_FOUND #38# from Windows::Rtl::SystemImplementation::DirectRegistryProvider::SysQueryValueKey(flags = 0, key = a68 ('\REGISTRY\MACHINE\SYSTEM\Setup'), vn = [l:7 ml:8]'Compact', kvic = 2, kvi = 2, disp = 0)[gle=0xd0000034]
2022-01-18 22:03:21, Error                 CSI    00000002 (F) STATUS_OBJECT_NAME_NOT_FOUND #37# from Windows::Rtl::SystemImplementation::CKey::QueryValue(flags = 0, kn = [l:31]'\Registry\Machine\SYSTEM\Setup\', vn = [l:7 ml:8]'Compact', ic = KeyValuePartialInformation, info = {l:0 b:}, disp = 0)[gle=0xd0000034]
2022-01-18 22:03:26, Error                 CSI    00000003 (F) STATUS_OBJECT_NAME_NOT_FOUND #70# from Windows::Rtl::SystemImplementation::DirectRegistryProvider::SysQueryValueKey(flags = 0, key = b24 ('\REGISTRY\MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts'), vn = [l:21 ml:22]'Arial Nova (TrueType)', kvic = 2, kvi = 2, disp = 0)[gle=0xd0000034]
2022-01-18 22:03:26, Error                 CSI    00000004 (F) STATUS_OBJECT_NAME_NOT_FOUND #69# from Windows::Rtl::SystemImplementation::CKey::QueryValue(flags = 0, kn = [l:69]'\Registry\Machine\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts\', vn = [l:21 ml:22]'Arial Nova (TrueType)', ic = KeyValuePartialInformation, info = {l:0 b:}, disp = 0)[gle=0xd0000034]
2022-01-18 22:03:28, Error                 CONX   ConX::Compatibility::CIndividualCompatibilityCheckerT<struct ConX::Compatibility::SecureBootCheckerImpl>::OnInvoke: Failed to determine whether secure boot is blocking Setup.. HRESULT = 0x800703f9[gle=0x00000103]
2022-01-18 22:03:28, Error                 CONX   CSecureBootChecker failed. [] HRESULT = 0x800703f9
2022-01-18 22:03:28, Error                 CONX   ConX::Compatibility::CCompatibilityHost::SetScanResult: Compat scan from provider wsc:setup: failed. HRESULT = 0x800703f9
2022-01-18 22:04:19, Error                 CONX   0xd0000034 Failed to add user mode driver [%SystemRoot%\system32\DRIVERS\UMDF\uicciso.dll]

2022-01-18 22:07:49, Error                 CONX   Windows::Compat::Appraiser::WicaApplicationInventory::AddItemProperty (514):   App Inventory returned duplicate file c:\program files (x86)\intel\intel(r) management engine components\dal\jhi_service.exe.[gle=0x8007000d]
2022-01-18 22:08:13, Error                 MOUPG  CDlpActionCompat::ExecuteInstallReqScan(1813): Result = 0x800703F9
2022-01-18 22:08:13, Error                 MOUPG  CDlpActionCompat::ExecuteRoutine(631): Result = 0x800703F9
2022-01-18 22:08:13, Error                 MOUPG  CDlpActionImpl<class CDlpErrorImpl<class CDlpObjectInternalImpl<class CUnknownImpl<class ICompatAction> > > >::Execute(441): Result = 0x800703F9
2022-01-18 22:08:13, Error                 MOUPG  CDlpTask::ExecuteAction(3259): Result = 0x800703F9
2022-01-18 22:08:13, Error                 MOUPG  CDlpTask::ExecuteActions(3413): Result = 0x800703F9
2022-01-18 22:08:13, Error                 MOUPG  CDlpTask::Execute(1644): Result = 0x800703F9
2022-01-18 22:08:13, Error                 MOUPG  CSetupManager::ExecuteTask(2478): Result = 0x800703F9
2022-01-18 22:08:13, Error                 MOUPG  CSetupManager::ExecuteTask(2441): Result = 0x800703F9
2022-01-18 22:08:13, Error                 MOUPG  CSetupManager::ExecuteInstallMode(780): Result = 0x800703F9
2022-01-18 22:08:13, Error                 MOUPG  CSetupManager::ExecuteDownlevelMode(390): Result = 0x800703F9
2022-01-18 22:08:27, Error                 MOUPG  CSetupManager::Execute(282): Result = 0x800703F9
2022-01-18 22:08:27, Error                 MOUPG  CSetupHost::Execute(400): Result = 0x800703F9

Na první pohled to vypadá na mraky chyb, ale na posledním řádku vidíme chybu kvůli které nelze pokračovat: 0x800703F9. A nyní jdeme od konce nahoru a hledáme první výskyt této chyby. Najdeme:

Failed to determine whether secure boot is blocking Setup.. HRESULT = 0x800703f9

A je to, nějaký trable s nastavení secure boot v BIOSu. Vypínáme secure boot a jdeme na druhé kolo. 

Tentokráte opět bez úspěchu, ale chyba je jiná - instalátor nedokáže říct zda je k dispozici dostatek volného místa pro pokračování instalace. Anglicky pak "We can't tell if your PC has enough space to continue installing windows 10".

Zde je další setuperr.log:

2018-04-06 184552, Error                 CONX   0xd0000034 Failed to add user mode driver [%SystemRoot%system32DRIVERSUMDFuicciso.dll]

2018-04-06 184707, Error                 IBSLIB BCD Failed load key BCD00000000. Flags 0x40 File DeviceHarddiskVolume1EFIMicrosoftBootBCD Status c000014c[gle=0x00000003]
2018-04-06 184707, Error                 IBSLIB BCD Failed to load hive into key BCD00000000 from DeviceHarddiskVolume1EFIMicrosoftBootBCD. Status c000014c[gle=0x00000003]
2018-04-06 184707, Error                 IBSLIB BCD Failed to add system store from file. File DeviceHarddiskVolume1EFIMicrosoftBootBCD Status c000014c[gle=0x00000003]
2018-04-06 184707, Error                 MOUPG  CDlpActionDiskSpaceReqCalculateRequiredDiskSpaceInstallReq(1752) Result = 0x800703F1[gle=0x00000003]
2018-04-06 184707, Error                 MOUPG  CDlpActionDiskSpaceReqExecuteInstallReq(1279) Result = 0x800703F1
2018-04-06 184707, Error                 MOUPG  CDlpActionDiskSpaceReqExecuteRoutine(501) Result = 0x800703F1
2018-04-06 184707, Error                 MOUPG  CDlpActionImplclass CDlpErrorImplclass CDlpObjectInternalImplclass CUnknownImplclass IDiskSpaceAction   Execute(441) Result = 0x800703F1
2018-04-06 184707, Error                 MOUPG  CDlpTaskExecuteAction(3243) Result = 0x800703F1
2018-04-06 184707, Error                 MOUPG  CDlpTaskExecuteActions(3397) Result = 0x800703F1
2018-04-06 184707, Error                 MOUPG  CDlpTaskExecute(1631) Result = 0x800703F1
2018-04-06 184707, Error                 MOUPG  CSetupManagerExecuteTask(2170) Result = 0x800703F1
2018-04-06 184707, Error                 MOUPG  CSetupManagerExecuteTask(2133) Result = 0x800703F1
2018-04-06 184707, Error                 MOUPG  CSetupManagerExecuteInstallMode(715) Result = 0x800703F1
2018-04-06 184707, Error                 MOUPG  CSetupManagerExecuteDownlevelMode(347) Result = 0x800703F1
2018-04-06 184710, Error                 MOUPG  CSetupManagerExecute(237) Result = 0x800703F1
2018-04-06 184710, Error                 MOUPG  CSetupHostExecute(375) Result = 0x800703F1

Tady už je situace kapánek složitější. Chyba 0x800703F1 nám začíná na nic neříkajícím řádku:

CDlpActionDiskSpaceReqCalculateRequiredDiskSpaceInstallReq(1752) Result = 0x800703F1

Ale o pár řádků výš je několik chyb BCD (Boot Configuration Data). Zaměříme se tedy na BCD a jeho opravu. Nabootujeme z flash disku a těmito přikazy staré BCD zazálohujeme a vytvoříme nové:

diskpart

select disk 0 - číslo musí odpovídat bootovacímu disku, typicky disk s instalací Windows

list volume - hledáme partici o velikosti stovek MB a formátovanou FAT32, dalším příkazem ji vybereme (X)

select volume X

assign letter=Z: - připojíme ji jako jednotku Z:

exit

cd  Z:\EFI\Microsoft\Boot

attrib Z:\EFI\Microsoft\Boot\BCD -h -r -s

ren Z:\EFI\Microsoft\Boot\BCD BCD.old

bootrec /rebuildbcd

Potvrdíme přidání instalce Windows a máme hotovo. Jen upozorňuji, že v tomto konkrétním příkladě bylo nastaveno UEFI, pro LEGACY boot je to trošku odlišné.

Při dalším spuštění instalace už vše proběhlo bez problémů a po několika restartech byla instalace WIndows 10 aktualizována na build 21H2.