WindowsUpdate Error 80070011
В чём причина
В Windows операционных системах, базирующихся на MS Windows Vista (7, 2008, 2008 R2) появился новый алгоритм обновления. Не буду глубоко вдаваться в подробности. В двух это выглядит так: Апдейты распаковываются в папку {WindowsDir}\winsxs\. Затем в рабочих директориях создаются ссылки на эти файлы, а не сами файлы. По крайней мере это снижает объём файлов на диске, возможно есть и другие причины такого поведения. Ссылки на файлы в Windows могут быть только «жесткими». Одной из особенностей «жестких» является то, что они должны располагаться на одном логическом диске с FS нодом, на который они ссылаются.
Некоторым людям нравиться выносить папку Program Files (а также Program Files (x86)) на выделенный диск. Я тоже так люблю делать. В соответствии с вышеприведёнными особенностями обновлений в windows, возникают проблемы при обновлении системных приложений. Таких как Internet Explorer или например Windows Media Player. Хотя не всех. MS Office при всем при этом обновляется нормально.
Код ошибки: WindowsUpdate Error 80070011
Собственно ошибка: ERROR_NOT_SAME_DEVICE
MS стоило бы проверять файл на возможность создания «жёсткой» ссылки и при отсутствии такой делать копию исходного файла. Хотя, повторюсь, возможно у создателей такой схемы были другие причины. В ответах на запросы пользователей они ссылаются на то, что в Windows не предусмотрен перенос папки Program Files на другой раздел. Грубо говоря исправлять этот баг они не собираются, ибо даже багом его не считают.
Как исправить
Что в этой ситуации делать нам?
Всё довольно просто. Системные программы нужно вернуть обратно на системный раздел. Удобнее всего это делать через «Мягкие» ссылки (mklink /j). Самое сложное определить какую программу в этот раз не может обновить тот или иной KB.
Поэтому буду публиковать все KB с которыми у меня возникли проблемы и какую папку нужно вернуть на место (для Win7 x64 ENG):
- Microsoft .NET Framework 3.5 SP1 Update for Windows 7 and Windows Server 2008 R2 (KB982526)
Папка: Reference Assemblies