В преддверии поступления Windows 8 в продажу Microsoft выпустила большое кумулятивное обновление KB2756872, чего никогда раньше не делала для клиентских операционных систем. Однако при установке обновления меня ждал неприятный сюрприз — ошибка 80073712.
Сегодня я расскажу о том, как победить эту и ряд других ошибок при установке обновлений Windows 8 с помощью новой возможности обслуживания – встроенного восстановления компонентов (in-box corruption repair).
Эта запись открывает серию статей о нововведениях в обслуживании Windows 8. И нет, оно не имеет ничего общего с автоматическим обслуживанием с помощью планировщика. Сначала я покажу, как решил проблему с установкой обновления, а потом расскажу о технологии.
Устранение ошибок Windows Update, вызванных повреждением хранилища компонентов
Для исправления этих ошибок в Windows 8 утилита CheckSUR не нужна, потому что все необходимое уже встроено в систему! Вы можете восстановить поврежденные компоненты с помощью командлета PowerShell (рекомендуемый способ) или утилиты DISM.exe.
Этап 1 – восстановление поврежденного хранилища компонентов
Восстановление можно выполнить без установочного диска Windows 8, но в некоторых случаях он может вам понадобиться.
Восстановление без установочного диска
В этом случае используются файлы хранилища на локальном диске и Windows Update.
Запустите PowerShell от имени администратора и выполните команду:
Repair-WindowsImage -Online -RestoreHealth
Альтернативно, вы можете выполнить в командной строке, запущенной с правами администратора, команду:
Dism /Online /Cleanup-Image /RestoreHealth
Длительность процедуры восстановления зависит от конфигурации ПК и степени повреждения хранилища. У меня она заняла около 7 минут, а ее результат вы видите на рисунке ниже.
Состояние хранилища компонентов обозначается параметром Image Health State. Если его значение Healthy, переходите к проверке целостности системных файлов. Если же повреждение хранилища не исправлено, нужно попробовать сделать это с помощью установочного диска.
Восстановление с помощью установочного диска
Когда системе не удается восстановить какие-либо компоненты, вам может помочь оригинальный установочный диск:
{gcontent}скачать Windows 8.1 x86 Professional{/gcontent}
{gcontent}скачать Windows 8.1 x64 Professional{/gcontent}
- Щелкните правой кнопкой мыши по ISO-образу и выберите в меню Подключить. Обратите внимание на букву диска, которую получил подключенный образ.
- В PowerShell выполните команду:
Repair-WindowsImage -Online -RestoreHealth -Source Е:\sources\install.wim:1
Здесь буква «E» соответствует букве подключенного образа, а цифра «1» — индексу издания в образе (в примере используется образ Windows 8 Enterprise с единственным изданием).
- По окончании процедуры убедитесь, что хранилище компонентов в порядке (Healthy).
Этап 2 – проверка целостности системных файлов
Строго говоря, этот этап не имеет отношения к восстановлению компонентов. Однако техническая поддержка Microsoft рекомендует после проверки целостности хранилища компонентов также проверить и целостность системных файлов. Для этого в командной строке, запущенной от имени администратора, выполните команду:
sfc /scannow
У меня один из файлов был поврежден, и утилита SFC успешно восстановила его.
Случаи, когда системе не удалось восстановить какие-либо файлы, выходят за рамки этой статьи (я разберу их в другой раз).
Этап 3 – установка обновления
Итак, две команды восстановили целостность хранилища компонентов и системных файлов. Самое время попробовать установить обновление заново.
Как видите, на сей раз у меня все сработало!
Что такое обслуживание Windows и зачем оно нужно
Не путайте понятие обслуживания Windows (servicing) с планируемым автоматическим обслуживанием. Под обслуживанием понимается состояние компонентов и пакетов Windows, включая все файлы системы и реестр. Устанавливая драйвер или обновление системы, вы изменяете состояние ее компонентов.
Обслуживание Windows служит для достижения двух целей:
- Разработчики ОС создают единообразный код, используя стандартный манифест.
- Устойчивый механизм обслуживания позволяет добавлять и удалять компоненты, поддерживая при этом процедуру возврата к предыдущему состоянию системы.
Из чего состоят хранилища компонентов и пакетов
Начиная с Windows Vista, развертывание и обслуживание операционных систем Microsoft полностью построено на компонентах и пакетах, определяемых манифестами. Так, если вы хоть раз создавали файл ответов для этих ОС, вы видели в диспетчере образов графическое представление структуры компонентов и пакетов.
В диспетчер образов подключается автономный WIM-образ или его каталог, но установленная система с точки зрения обслуживания фактически является таким же образом. Более того, начиная с Windows 8, возможности инструментов обслуживания распространяются и на образы операционных систем в формате VHD.
Основные понятия обслуживания
Обслуживание — это сложная техническая тема, которая вряд ли представляет для нас практический интерес. Поэтому я ограничусь лишь определениями для основных понятий.
Хранилище компонентов
В дисковой структуре — это папка \Windows\winsxs, размер которой вызывает беспокойство у многих пользователей Windows.
В этом хранилище размещены все файлы операционной системы, включая предыдущие версии. При этом текущие версии файлов с помощью жестких ссылок отображаются в нужном месте, например, папке System32.
Хранилище пакетов
Эту роль играет папка \Windows\servicing\packages, в которой хранятся все пакеты и их манифесты.
В качестве пакета может выступать исправление для операционной системы, драйвер и т.п. Новые манифесты добавляются в хранилище по мере обновления пакетов.
Компонент
Компоненты является кирпичиками, на которых строятся все операции обслуживания. Они служат контейнерами для исполняемых файлов, параметров реестра, служб и дескрипторов безопасности. Каждому компоненту присваивается уникальное имя на основе принятого в Microsoft стандарта.
Манифест
Манифест представляет собой текстовый файл в формате XML, где задаются определения для компонентов и элементов развертывания.
Существует два типа манифестов:
- Манифест пакета или обновления всегда имеет расширение .mum и может играть роль контейнера для элементов развертывания, контролировать возможность включения и отключения компонента, а также служит для определения зависимости от других пакетов.
- Манифест компонента – это базовый элемент для описания любого компонента Windows. В нем указываются требуемые ресурсы – исполняемые файлы, параметры реестра, службы и т.д.
Полезные файлы
Этот термин (в оригинале — “payload”) означает совокупность всех файлов компонента Windows или роли сервера.