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.
