Offline интеграция Service Pack в Windows 7 и Windows 2008 R2

SS-2011-03-06_21.54.06
Ситуация

Мы живем в месте где условия подключения к сети интернет не позволяют закачивать 100500 дистрибутивов со свежим пакетом обновлений (Service Pack) и желая сделать это наиболее эффективно, мы решаем скачать только сам Service Pack и интегрировать его уже в имеющиеся дистрибутивы Windows. Есть 2 способа решения данной задачи online и offline интеграция Service Pack, официально Microsoft поддерживается только online интеграция, в статье же пойдет о втором (offline) методе интеграции пакета обновлений.

Инструментарий
Утилита для создания загрузочного .iso образа: oscdimg (является частью пакета WAIK)
Архиватор для распаковки: 7-Zip 9.20 x86 | 7-Zip 9.20 x64 (другие версии доступны на 7-zip.org)
SP1: Пакет обновления 1 (SP1) для Windows 7 и Windows Server 2008 R2 (KB976932)
Последовательность действий
  1. Устанавливаем 7-Zip 9.20 x86 или 7-Zip 9.20 x64
  2. Распаковываем наш ISO образ c OS в папку Win7
  3. Запускаем командную строку с правами администратора.
  4. dism /Get-WimInfo /WimFile:e:\os\Win7\sources\install.wim - cмотрим, какие версии содержаться в образе install.wim
    Administrator_Command_Prompt-2011-03-06_12.45.41
  5. md e:\os\WinSP - cоздаём каталог для монтирования
  6. dism /Mount-Wim /WimFile:e:\os\Win7\sources\install.wim /index:4 /MountDir:e:\os\WinSP - монтируем образ с указанием номера индекса, т.е. той версии, которую хотим проапгрейдить пакетом обновлений (мы узнали номера версий на шаге 4)Administrator_Command_Prompt-2011-03-06_13.09.49
  7. e:\os\SP1\windows6.1-KB976932-X64 /X:e:\os\SP1 - распаковываем наш Service Pack 1 для получения .cab файла из .exe

    Внимание!
    Тут я должен сделать лирическое отступление, если мы попробуем выполнить offline интеграцию SP1 командой dism /Image:e:\os\WinSP /Add-Package /PackagePath:e:\os\SP1\windows6.1-KB976932-X64.cab – нас ждет боль и разочарование от осознания того, что offline интеграция пакета обновления не поддерживается, о чем нам радостно сообщат ошибкой:
    Deployment Image Servicing and Management tool
    Version: 6.1.7600.16385

    Image Version: 6.1.7600.16385
    Processing 1 of 1 - Package_for_KB976932: The specified package cannot be added to an offline image.
    Add this package to a running operating system using the /Online option.
    Error: 0x800f082e

    Error: 0x800f082e
    DISM failed. No operation was performed.
    For more information, review the log file.

    The DISM log file can be found at C:\windows\Logs\DISM\dism.logAdministrator_Command_Prompt-2011-03-06_17.38.15
  8. Т.к. мы упорные, улыбаемся и продолжаем интеграцию, убеждая систему, что для нас нет невозможного. Распаковываем нашу матрешку windows6.1-KB976932-X64.cab в e:\os\sp1\cab\
  9. Заходим в e:\os\sp1\cab\ и распаковываем в каталог e:\os\sp1\cab\ (т.е. просто жмакаем “Распаковать здесь”) NestedMPPContent.cab после распаковки, удаляем исходный cab файл
  10. Распаковываем языковые файлы KB976933-LangsCab0.cab, KB976933-LangsCab1.cab, KB976933-LangsCab2.cab, KB976933-LangsCab3.cab, KB976933-LangsCab4.cab, KB976933-LangsCab5.cab, KB976933-LangsCab6.cab в каталог e:\os\sp1\cab\ , при запросе перезаписи, милосердно соглашаемся, в конце также удаляем исходные архивы.
  11. Пытаемся обмануть систему, и сделать из “нельзя” – “можно”, отредактировав следующие файлы, собственно то, ради чего мы и распаковывали наши архивы:SS-2011-03-06_18.35.30
  12. Правим файл e:\os\SP1\cab\update.ses находим раздел <Tasks operationMode="OfflineInstall"> и меняем параметр targetState="Absent" на targetState="Installed"EosSP1cabupdate.ses_-_Notepad-2011-03-06_18.19.07
  13. Правим файл e:\os\SP1\cab\update.mum находим параметр (находится в конце файла) allowedOffline="false" и меняем его на allowedOffline="true"
    EosSP1cabupdate.mum_-_Notepad-2011-03-06_18.29.50
  14. Повторяем процедуру для файла e:\os\SP1\cab\Windows7SP1-KB976933~31bf3856ad364e35~amd64~~6.1.1.17514.mum (обращаем внимание, что в x86 версии SP1 файл будет называться по-другому в части ~amd64~) находим параметр (находится в конце файла) allowedOffline="false" и меняем его на allowedOffline="true" EosSP1cabWindows7SP1-KB97693331bf3856ad364e35amd646.1.1.17514.mum_-_Notepad-2011-03-06_18.40.52
  15. Наконец мы подошли к долгожданному этапу offline интеграции, выполняем команду:
    dism /Image:e:\os\WinSP /Add-Package /PackagePath:e:\os\SP1\cab Administrator_Command_Prompt_-_dism__ImageeosWinSP_Add-Package_PackagePatheosSP1cab-2011-03-06_18.54.40
    видим, что дело сдвинулось с мертвой точки, и оно “что-то там” делает, процедура заняла у меня 36 минут.
  16. dism /UnMount-Wim /MountDir:e:\os\WinSP /commit  - применяем изменения к образу install.wim и отмонтируем его, это еще минут 10
    Administrator_Command_Prompt-2011-03-06_19.43.34
  17. Повторяем шаги 6, 15, 16 для каждой редакции в нашем образе, а именно:
    Монтируем (изменяя цифру в параметре index: в зависимости от редакции)
    dism /Mount-Wim /WimFile:e:\os\Win7\sources\install.wim /index:4 /MountDir:e:\os\WinSPИнтегрируем: dism /Image:e:\os\WinSP /Add-Package /PackagePath:e:\os\SP1\cabДемонтируем: dism /UnMount-Wim /MountDir:e:\os\WinSP /commit
  18. Создаем загрузочный .iso образ (утилиту мы предварительно скопировали в папку e:\os.  Если удалить файл e:\os\Win7\ei.cfg, все версии перечисленные на шаге 5 станут доступны в меню установки):
    oscdimg.exe -n -m -o -be:\os\Win7\boot\etfsboot.com e:\os\Win7 e:\os\Win7SP1.isoпараметры применяемые в этой команде:
    -n Включает поддержку длинных имен файлов
    -m Игнорирует ограничение максимального размера образа
    -o Оптимизирует хранение путем однократного кодирования дублирующих файлов путем применения алгоритма хеширования MD5 для сравнения файлов.
    -b
    Задает размещение загрузочного файла формата El Torito. Пробелы не допускаются
    Administrator_Command_Prompt-2011-03-06_20.07.59
  19. Пришло время проверить, из какого места у нас растут руки и попробовать поставить нашу систему, дабы убедиться в наличии SP1, как видим, всё отлично установилось и версия именна та, которая должна быть.
    SS-2011-03-06_20.39.18
  20. Для полноты картины, можем записать образ на флэшку при помощи Windows 7 USB/DVD Download Tool
Послесловие: С вариантом online интеграции Service Pack для Windows 7 вы можете ознакомиться в блоге MVP Вадима Стеркина http://www.outsidethebox.ms/11126/

Популярные сообщения из этого блога

Принудительное удаление кластера (Failover Clustering)

Новый функционал конференций в Lync Server 2013: "Вопросы и ответы"

Компьютер просыпается сразу после ухода в спящий режим