Как исправить ошибки при установке обновлений Windows 8 с помощью встроенного восстановления компонентов

Рубрики: Windows 7. Windows 8. Windows Vista. Вопрос - Ответ Обновлено: 08.09.2013 Комментариев достаточно

В преддверии поступления Windows 8 в продажу Microsoft выпустила большое кумулятивное обновление KB2756872. чего никогда раньше не делала для клиентских операционных систем. Однако при установке обновления меня ждал неприятный сюрприз — ошибка 80073712.

Увеличить рисунок

Сегодня я расскажу о том, как победить эту и ряд других ошибок при установке обновлений Windows 8 с помощью новой возможности обслуживания – встроенного восстановления компонентов (in-box corruption repair).

Эта запись открывает серию статей о нововведениях в обслуживании Windows 8. И нет, оно не имеет ничего общего с автоматическим обслуживанием с помощью планировщика. Сначала я покажу, как решил проблему с установкой обновления, а потом расскажу о технологии.

Устранение ошибок Windows Update, вызванных повреждением хранилища компонентов

В справке предыдущих ОС Microsoft для ошибки 80073712 есть описание. из которого следует, что причиной является повреждение хранилища компонентов. Для Windows Vista и Windows 7 была выпущена утилита System Update Readiness Tool (CheckSUR), призванная устранить целый ряд ошибок Windows Update.

Для исправления этих ошибок в Windows 8 утилита CheckSUR не нужна, потому что все необходимое уже встроено в систему! Вы можете восстановить поврежденные компоненты с помощью командлета PowerShell (рекомендуемый способ) или утилиты DISM.exe.

Этап 1 – восстановление поврежденного хранилища компонентов

Восстановление можно выполнить без установочного диска Windows 8, но в некоторых случаях он может вам понадобиться.

Восстановление без установочного диска

В этом случае используются файлы хранилища на локальном диске и Windows Update.

Запустите PowerShell от имени администратора и выполните команду:

Альтернативно, вы можете выполнить в командной строке, запущенной с правами администратора, команду:

Длительность процедуры восстановления зависит от конфигурации ПК и степени повреждения хранилища. У меня она заняла около 7 минут, а ее результат вы видите на рисунке ниже.

Увеличить рисунок

Состояние хранилища компонентов обозначается параметром Image Health State. Если его значение Healthy. переходите к проверке целостности системных файлов. Если же повреждение хранилища не исправлено, нужно попробовать сделать это с помощью установочного диска.

Восстановление с помощью установочного диска

Когда системе не удается восстановить какие-либо компоненты, вам может помочь оригинальный установочный диск.

  1. Щелкните правой кнопкой мыши по ISO-образу и выберите в менюПодключить. Обратите внимание на букву диска, которую получил подключенный образ.
  2. В PowerShell выполните команду:
Здесь буква «E» соответствует букве подключенного образа, а цифра «1» — индексу издания в образе (в примере используется образ Windows 8 Enterprise с единственным изданием).
  • По окончании процедуры убедитесь, что хранилище компонентов в порядке (Healthy).
  • Этап 2 – проверка целостности системных файлов

    Строго говоря, этот этап не имеет отношения к восстановлению компонентов. Однако техническая поддержка Microsoft рекомендует после проверки целостности хранилища компонентов также проверить и целостность системных файлов. Для этого в командной строке, запущенной от имени администратора, выполните команду:

    У меня один из файлов был поврежден, и утилита SFC успешно восстановила его.

    Увеличить рисунок

    Случаи, когда системе не удалось восстановить какие-либо файлы, выходят за рамки этой статьи (я разберу их в другой раз).

    Этап 3 – установка обновления

    Итак, две команды восстановили целостность хранилища компонентов и системных файлов. Самое время попробовать установить обновление заново.

    Увеличить рисунок

    Как видите, на сей раз у меня все сработало!

    Что такое обслуживание Windows и зачем оно нужно

    Не путайте понятие обслуживания Windows (servicing) с планируемым автоматическим обслуживанием. о котором я рассказывал ранее. Под обслуживанием понимается состояние компонентов и пакетов Windows, включая все файлы системы и реестр. Устанавливая драйвер или обновление системы, вы изменяете состояние ее компонентов.

    Обслуживание Windows служит для достижения двух целей:

    1. Разработчики ОС создают единообразный код, используя стандартный манифест.
    2. Устойчивый механизм обслуживания позволяет добавлять и удалять компоненты, поддерживая при этом процедуру возврата к предыдущему состоянию системы.

    Из чего состоят хранилища компонентов и пакетов

    Начиная с Windows Vista, развертывание и обслуживание операционных систем Microsoft полностью построено на компонентах и пакетах, определяемых манифестами. Так, если вы хоть раз создавали файл ответов для этих ОС, вы видели в диспетчере образов графическое представление структуры компонентов и пакетов.

    В диспетчер образов подключается автономный WIM-образ или его каталог, но установленная система с точки зрения обслуживания фактически является таким же образом. Более того, начиная с Windows 8, возможности инструментов обслуживания распространяются и на образы операционных систем в формате VHD.

    Основные понятия обслуживания

    Обслуживание — это сложная техническая тема, которая вряд ли представляет для нас практический интерес. Поэтому я ограничусь лишь определениями для основных понятий.

    Хранилище компонентов

    В дисковой структуре — это папка \Windows\winsxs, размер которой вызывает беспокойство у многих пользователей Windows.

    В этом хранилище размещены все файлы операционной системы, включая предыдущие версии. При этом текущие версии файлов с помощью жестких ссылок отображаются в нужном месте, например, папке System32.

    Хранилище пакетов

    Эту роль играет папка \Windows\servicing\packages, в которой хранятся все пакеты и их манифесты.

    В качестве пакета может выступать исправление для операционной системы, драйвер и т.п. Новые манифесты добавляются в хранилище по мере обновления пакетов.

    Компоненты является кирпичиками, на которых строятся все операции обслуживания. Они служат контейнерами для исполняемых файлов, параметров реестра, служб и дескрипторов безопасности. Каждому компоненту присваивается уникальное имя на основе принятого в Microsoft стандарта.

    Манифест представляет собой текстовый файл в формате XML, где задаются определения для компонентов и элементов развертывания.

    Увеличить рисунок

    Существует два типа манифестов:

    • Манифест пакета или обновления всегда имеет расширение .mum и может играть роль контейнера для элементов развертывания, контролировать возможность включения и отключения компонента, а также служит для определения зависимости от других пакетов.
    • Манифест компонента – это базовый элемент для описания любого компонента Windows. В нем указываются требуемые ресурсы – исполняемые файлы, параметры реестра, службы и т.д.

    Полезные файлы

    Этот термин (в оригинале — “payload”) означает совокупность всех файлов компонента Windows или роли сервера.

    Преимущества встроенного восстановления компонентов Windows 8

    Давайте сравним ключевые моменты восстановления компонентов в разных операционных системах.

    Windows Vista и Windows 7

    Утилита CheckSUR представляет собой набор полезных файлов, который регулярно обновляется по мере выхода новых исправлений. Таким образом, при возникновении проблем нужно скачивать утилиту заново, а между тем, сентябрьский пакет весит 350 Мб.

    Но даже при таком размере в пакет не входят файлы для всех исправлений, выпущенных Microsoft (предположу, что файлов необязательных обновлений там нет). Это означает, что утилита не может устранить повреждения некоторых компонентов. И хотя обходной путь существует. он является костылем, требующим дополнительных телодвижений.

    После запуска утилита распаковывает содержимое пакета в папку \Windows\CheckSUR\. Поскольку большинство файлов в пакете имеет очень небольшой размер, этот процесс получается длительным и занимает до 75-80% процентов от общего времени работы утилиты. Оставшееся время уходит на проверку компонентов и создание журнала.

    И все это делается лишь ради того, чтобы восстановить манифесты и дать возможность системе обновиться…

    Windows 8

    Повреждение, как правило, означает пропажу манифеста или каталога. В отличие от CheckSUR, встроенная функция системы способна восстанавливать не только манифесты, но и все прочие составляющие компонентов. Это одно из важнейших преимуществ!

    Кроме того:

    1. Все необходимые компоненты автоматически загружаются с Windows Update. С одной стороны – это самый актуальный источник компонентов, а с другой -  от вас не требуется дополнительных действий.
    2. В дополнение к Windows Update или вместо него можно указать несколько источников компонентов, перечисляя WIM-образы в качестве параметров командной строки. Именно такой путь я описал выше для тех, кому не удастся обойтись только Windows Update. Например, если из г-сборки вырезаны необходимые компоненты, сочетание оригинального дистрибутива с Windows Update должно решить проблему.
    3. Windows 8 периодически проверяет состояние компонентов в фоновом режиме и в случае неполадок помечает повреждение специальным флагом. Благодаря этому, с помощью консольных инструментов можно выполнить моментальную диагностику состояния хранилища компонентов.

    Консольные средства для восстановления компонентов

    Начиная с Windows 8, управление обслуживанием можно осуществлять не только с помощью утилиты DISM.exe, но и командлетов PowerShell, причем второй способ является рекомендуемым.

    Я не любитель дублировать справку, но на русском языке ее пока нет. Поэтому я покажу вам основные возможности командлета Repair-WindowsImage. а для параметра Cleanup-Image утилиты DISM.exe ограничусь ссылкой на документацию .

    Цель проверки (работающая система и образы)

    Целью проверки может являться как установленная система, так и образ в формате WIM или VHD.

    -Online

    Проверяет работающую систему.

    -Path

    Проверяет подключенный автономный образ по указанному после параметра пути.

    Проверка и восстановление хранилища

    Для определения состояния и восстановления компонентов в командлете Repair-WindowsImage предусмотрены три параметра, выполняющих проверку хранилища. Результатом сканирования может быть:

    • отсутствие повреждений (Healthy)
    • наличие повреждений, которые можно восстановить (Repairable)
    • наличие повреждений, которые нельзя восстановить (Not repairable)

    Однако функции параметров отличаются.

    -CheckHealth

    Моментально проверяет, присутствует ли в системном реестре маркер, обозначающий повреждение. Этот маркер может появиться в процессе работы системы обслуживания.

    -ScanHealth

    Проверяет хранилище на предмет повреждений. Эта операция занимает больше времени, чем простая проверка маркера.

    -RestoreHealth

    Проверяет хранилище на предмет повреждений и выполняет их восстановление. Эта операция является самой длительной из трех.

    Источник компонентов для восстановления

    Чтобы восстановить компоненты, их нужно откуда-то взять. Когда источник не указан. при проверке автоматически используется локальное хранилище компонентов и Windows Update.

    Этот момент нигде не задокументирован, и вы должны понимать, что при проверке автономного образа Windows 8 из-под другого издания или версии Windows источник нужно указывать обязательно.

    В обоих случаях вы можете указывать более одного источника и даже блокировать Windows Update при этом. Приведенные ниже параметры предназначены только для восстановления, и поэтому допустимы только в связке с -RestoreHealth .

    -Source

    В качестве источника можно использовать путь к:

    • работающей системе, к которой имеется доступ по сети
    • автономному образу, причем его предварительное подключение необязательно

    Здесь любопытна возможность указать путь непосредственно к изданию в WIM-образе без его предварительного копирования на локальный диск и последующего подключения. Она является тайным знанием, пока не отраженным в документации ;) Это работает благодаря функции автоматического подключения WIM, реализованной на последних стадиях разработки Windows 8.

    Вы можете перечислить несколько путей через запятую. Дополнительные источники задействуются только в том случае, если в предыдущих не нашлось подходящих компонентов.

    Когда в качестве источника используется WIM-образ, необходимо указать его индекс:

    -LimitAccess

    Блокирует доступ к Windows Update во время проверки.

    Примеры команд PowerShell

    Я приведу несколько примеров практического использования командлета Repair-WindowsImage с разными целями и источниками проверки. Первые два вы уже видели в начале статьи.

    Восстановление хранилища работающей системы, используя локальные файлы и Windows Update в качестве источника:

    Восстановление хранилища работающей системы, используя Windows Update и WIM-образ в качестве источников:

    Проверка хранилища автономного VHD-образа. Сначала он подключается в папку C:\mount (это происходит очень быстро), а затем выполняется проверка.

    Восстановление хранилища автономного VHD-образа, используя в качестве источника WIM-образ. Сначала VHD подключается в папку, затем выполняется восстановление образа, после чего VHD отключается с сохранением изменений.

    Результаты проверки и восстановления

    Помимо результатов в консоли вы можете найти подробный отчет ближе к концу файла %WinDir%\Logs\DISM\dism.log

    В первой половине приведенного фрагмента видны конкретные компоненты и результат их восстановления (успех или неудача), а во второй – сводка об операции, включая время ее выполнения.

    Как видите, у меня были повреждены 7 манифестов, относящихся языковому пакету, что и стало препятствием к установке обновления Windows. Все повреждения были исправлены.

    Безусловно, этот материал не подразумевает моментального практического применения, хотя проверить состояние хранилища компонентов Windows 8 вы можете прямо сейчас. Более того, за три года работы в Windows 7 у меня ни разу не возникало проблем с установкой обновлений.

    Однако ошибки Windows Update, связанные с повреждением хранилища, вовсе не редкость, даже если судить только по форуму OSZone. Поэтому важно знать, как бороться с ними.

    Мне показалось, что часть аудитории блога откровенно заскучала от серии статей о современном интерфейсе Windows 8 и приложений. Конечно, там все примитивно, никаких технических тонкостей, а главное – у некоторых людей создается ощущение, что кроме Modern UI в Windows 8 нет ничего нового. Это не так…

    Я давно планировал серию записей об изменениях в обслуживании Windows, а возникшая проблема с установкой обновления лишь форсировала публикацию, заодно вынудив меня изменить порядок статей в серии.

    Вам хватило технических тонкостей сегодня? ;)

    Если нет, в следующей записи из этой серии вас ждет не только экскурс в историю инструментов обслуживания ОС Microsoft, но и уникальная возможность попробовать себя в роли г-сборщика Windows 8! Но до этого в блоге появятся записи на другие темы.

    Об авторе

    Вадим является владельцем этого блога, и большинство записей здесь вышло из-под его пера. Он также давно и успешно занимается развитием сообщества OSZone.net. Подробнее обо всем этом здесь .

    Источник: www.outsidethebox.ms

    Категория: Программное обеспечение

    Похожие статьи: