我正在尝试将操作系统升级从 Windows 8.1 Pro -> Windows 10 Pro。
问题
安装程序除了说它在大约 23% 时失败之外没有给出任何消息,打开 setuperr.log,我最后得到了这个,前两行似乎指向了问题:
2016-07-22 13:23:14, Error SP SPMountWIMCallback: Error mounting/unmouting C:\$WINDOWS.~BT\Sources\SafeOS\SafeOS.Mount\Windows\WinSxS\Temp\PendingDeletes\7a3a0cd544a0d101300100002017d421.CbsMsg.dll. GLE [87][gle=0x00000057]
2016-07-22 13:23:24, Error SP CMountWIM::DoExecute: Failed to mount WIM file C:\$WINDOWS.~BT\Sources\SafeOS\winre.wim. Error 0x80070057[gle=0x00000057]
2016-07-22 13:23:24, Error SP Operation failed: Mount WIM file C:\$WINDOWS.~BT\Sources\SafeOS\winre.wim, index 1 to C:\$WINDOWS.~BT\Sources\SafeOS\SafeOS.Mount. Error: 0x80070057[gle=0x000000b7]
2016-07-22 13:23:24, Error MOUPG MoSetupPlatform: ExecuteCurrentOperations reported failure!
2016-07-22 13:23:24, Error MOUPG MoSetupPlatform: Using action error code: [0x80070057]
2016-07-22 13:23:24, Error MOUPG CDlpActionImageDeploy::ExecuteRoutine(329): Result = 0x80070057
2016-07-22 13:23:25, Error MOUPG CDlpActionImpl<class CDlpErrorImpl<class CDlpObjectInternalImpl<class CUnknownImpl<class IMoSetupDlpAction> > > >::Execute(441): Result = 0x80070057
2016-07-22 13:23:25, Error MOUPG CDlpTask::ExecuteAction(3243): Result = 0x80070057
2016-07-22 13:23:25, Error MOUPG CDlpTask::ExecuteActions(3397): Result = 0x80070057
2016-07-22 13:23:25, Error MOUPG CDlpTask::Execute(1631): Result = 0x80070057
2016-07-22 13:23:25, Error MOUPG CSetupManager::ExecuteTask(2024): Result = 0x80070057
2016-07-22 13:23:25, Error MOUPG CSetupManager::ExecuteTask(1987): Result = 0x80070057
2016-07-22 13:23:25, Error MOUPG CSetupManager::ExecuteInstallMode(804): Result = 0x80070057
2016-07-22 13:23:25, Error MOUPG CSetupManager::ExecuteDownlevelMode(389): Result = 0x80070057
2016-07-22 13:23:31, Error MOUPG CSetupManager::Execute(232): Result = 0x80070057
2016-07-22 13:23:31, Error MOUPG CSetupHost::Execute(371): Result = 0x80070057
特别是,好像无法安装 winre.wim 映像。我不知道源文件夹中的匹配文件名是什么,所以我尝试使用 273MB 的 boot.wim。
在我想要升级的计算机上安装此映像失败。DISM.exe /Mount-Image /ImageFile:c:\temp\boot.wim /Index:1 /MountDir:C:\Temp\offline /ReadOnly
错误报告与 SetFileSize 有关。有足够的可用空间,而且我检查了该文件的路径总共只有 128 个字符。
2016-07-22 19:52:19, Info DISM DISM Provider Store: PID=9648 TID=3564 Provider has previously been initialized. Returning the existing instance. - CDISMProviderStore::Internal_GetProvider
[9648] Caller did not request sparse mount
[9648] Mounting new image.
Wim: [c:\temp\boot.wim]
Image Index: [1]
Mount Path: [C:\Temp\o]
[9648] [0xc144012e]
2016-07-22 19:52:21, Error DISM DISM WIM Provider: PID=9648 [CreateDestinationFileEx:(5082) -> SetFileSize failed] C:\Temp\o\Windows\WinSxS\x86_microsoft-windows-b..d-bootfix.resources_31bf3856ad364e35_10.0.10586.0_de-de_7d99a6b16a9ee7bb\bootfix.bin (HRESULT=0x80070057) - CWimManager::WimProviderMsgLogCallback
[9648] [0x80070057] RestoreFileNodeList:(3490): Falscher Parameter.
[9648] [0xc144012e]
2016-07-22 19:52:21, Error DISM DISM WIM Provider: PID=9648 C:\Temp\o\Windows\WinSxS\x86_microsoft-windows-b..d-bootfix.resources_31bf3856ad364e35_10.0.10586.0_de-de_7d99a6b16a9ee7bb\bootfix.bin (HRESULT=0x80070057) - CWimManager::WimProviderMsgLogCallback
[9648] [0x80070057] RestoreFilesCallback:(5201): Falscher Parameter.
[9648] [0x80070057] EnumImageDataEntries:(1591): Falscher Parameter.
[9648] [0x80070057] RestoreAllData:(2551): Falscher Parameter.
[9648] [0x80070057] WIMApplyImageInternal:(1189): Falscher Parameter.
[9648] [0x80070057] ImageStubMountDirectory:(296): Falscher Parameter.
[9648] [0x80070057] WIMMountImageHandle:(1061): Falscher Parameter.
2016-07-22 19:52:23, Error DISM DISM WIM Provider: PID=9648 TID=3564 Failed to mount the image. - CWimImageInfo::Mount(hr:0x80070057)
我认为这是我在操作系统升级时遇到的同一个错误。
法尔舍尔参数方法无效的参数。
我已经尝试修复的问题
修复系统文件
sfc /scannow DISM.exe /Online /Cleanup-image /Scanhealth && DISM.exe /Online /Cleanup-image /Restorehealth
安装 WADK(评估和部署工具包),然后从那里启动 dism
在 C:\ 驱动器上释放了大量可用空间 (200GB)
在另外 2 个 Win 8.1 Pro 系统上使用相同语法和文件在相同位置进行安装即可(德语和英语版本)。
检查日期/时间设置,当前设置为德语,我也尝试了英语(. 和 , 交换)
错误依旧。
我该如何修复 dism/wim 以便再次允许安装映像?
答案1
如果您设法完全安装 Windows 10,则安装程序将有 2 次以百分比形式计数。
第一次计数时,在重新启动之前,它会复制必要的安装文件,大约 23% 时,它会使用 dism/wim 安装映像。
查看安装日志文件,我发现图像安装存在问题。
2016-07-22 13:23:24, Error SP CMountWIM::DoExecute: Failed to mount WIM file C:\$WINDOWS.~BT\Sources\SafeOS\winre.wim. Error 0x80070057[gle=0x00000057]
在我的例子中,映像安装机制已损坏,我通过将 Windows_10_pro_de_Upgrade.exctracted.iso\sources\boot.wim 从安装源文件夹复制到 C:\temp,然后执行来验证
DISM.exe /Mount-Image /ImageFile:c:\temp\boot.wim /Index:1 /MountDir:C:\Temp\offline /ReadOnly
尝试安装该映像,但失败,错误代码为 87。(必须手动创建文件夹 C:\Temp\offline。请注意,成功安装映像后,应通过以下方式再次手动卸载它
dism /unmount-Wim /MountDir:c:\temp\offline /discard
)
然后,我可以将故障机器上的行为与我拥有的 Win 8.1 Pro VM 进行比较,后者的安装工作正常。查看日志文件后,我注意到文件存在问题
Windows\WinSxS\x86_microsoft-windows-b..d-bootfix.resources_31bf3856ad364e35_10.0.10586.0_de-de_7d99a6b16a9ee7bb\bootfix.bin
使用Sysinternal 的进程监视器我可以记录 dism.exe 的操作并将其与所需的操作进行比较。我注意到,在正常工作的安装情况下,失败的操作 (SetFileSize) 发生了一次,而在失败的安装情况下,发生了两次。我查看了失败操作的堆栈跟踪,发现在过滤器驱动程序 cbftlsfs4.sys 中还有一个额外的调用。
谷歌搜索显示该文件属于 Cloudfogger。卸载 Cloudfogger(我之前在遇到 Cloudfogger 的各种问题后转到了 viivo,因此卸载没有问题)可以解决过滤器驱动程序和安装问题。
之后 Windows 10 升级成功。
可能很少有人遇到同样的问题。在另一台使用旧版 Cloudfogger 的机器上,我没有遇到这个问题。对我来说,这是两天的工作和调查,也许这对其他人有帮助,所以我详细地写下了我的步骤。