В этой инструкции мы покажем, как интегрировать новые пакеты обновлений системы в установочный офлайн образ Windows 10 / Windows 8.1 с помощью встроенных средств системы. Аналогичным образом вы можете добавить последние обновления безопасности в дистрибутив Windows Server 2012 R2 / 2016.
В этом примере мы покажем процесс добавления последних кумулятивных обновлений безопасности (от декабря 2018 года) в установочный образ Windows 10 1803. Итак, нам понадобятся:
- Установочный образ Windows 10 в ISO формате или его WIM файл;
- Обновления в формате .msu, которые нужно скачать с сервера обновлений Microsoft (как вручную скачать msu файлы обновлений).
На вашем компьютере создайте следующую структуру каталогов:
- C:\updates\mnt – папка, в которую нужно смонтировать файл install.wim с установочным образом Windows;
- C:\updates\msu – каталог, в который нужно поместить обновления для вашей версии Windows в формате MSU (в этом примере мы скачали 2 обновления безопасности для Windows 10 1803, вышедших в декабря 2018 в рамках Patch Tuesday — KB4471331 и KB4471324) ;
- C:\updates\Win10Image\ — в этот каталог нужно скопировать файл install.wim из вашего установочного образа Windows 10. В этом примере мы смонтировали и распаковали в него содержимое iso образа оригинального дистрибутива Windows10x64-1803.iso. Однако это может быть и wim файл из виртуальной машины, ее шаблона, образа WDS или образа, хранящегося в другой системе автоматического развертывания ОС (например, SCCM) и т.д.Если в вашем ISO образе Windows 10 есть только файл c:\sources\install.esd, вы сможете сконвертировать файл ESD в формат WIM с помощью утилиты DISM:
dism /export-image /SourceImageFile:"C:\updates\Win10Image\install.esd" /SourceIndex:4 /DestinationImageFile:C:\updates\Win10Image\win10pro.wim /Compress:max /CheckIntegrity
Смонтируйте файл c установочным образом Windows 10 (install.wim) в каталог C:\updates\mnt , выполнив в командной строке с правами администратора команду:
dism /mount-wim /wimfile:C:\updates\Win10Image\install.wim /index:1 /mountdir:C:\updates\mnt
DISM /Get-WimInfo /WimFile:C:\updates\Win10\install.wim
В нашем примере образ содержит только одну редакцию ОС — версию Windows 10 Pro с индексом 1, поэтому в команде мы указываем install.wim /index:1.
Теперь вы можете запустить процесс интеграции в образ Windows подходящих MSU обновлений, расположенных в указанном каталоге.
dism /image:C:\updates\mnt /add-package /packagepath:C:\updates\msu
Если система обнаружит неподходящее обновление (не соответствует версия ОС, разрядность или если обновление уже установлено), оно будет пропущено, а в лог C:\Windows\Logs\DISM\dism.log будет записана соответствующая информация.
Чтобы уменьшить размер образа за счет удаления файлов неиспользуемых обновлений (см. статью об очистке папки WinSxS), выполните команду:
dism /image:C:\updates\mnt /Cleanup-Image /StartComponentCleanup /ResetBase /ScratchDir:C:\Temp
Если в вашем распоряжении уже имеется компьютер с аналогичной версией Windows 10, на котором уже установлены последние обновления безопасности, вы можете получить все необходимые файлы обновления непосредственно с него. В этом случае вам не нужно вручную выбирать и скачивать MSU файлы обновлений из каталога обновлений Microsoft в Интернете. Дело в том, что Windows сохраняет все cab файлы обновлений, полученные с серверов Windows Update или сервера WSUS в каталог C:\Windows\SoftwareDistribution\Download.
Смонтируйте установочный Wim образ Windows, который вы хотите обновить:
dism /mount-wim /wimfile:C:\updates\Win10\install.wim /index:1 /mountdir:C:\updates\mnt
С помощью следующей команды вы запустите интеграцию в образ install.wim файлов обновлений, которые уже скачаны и установлены на другом компьютере, через локальную сеть:
Start /w for /R \\Win10x64Patched\C$\Windows\SoftwareDistribution\Download\ %f in (*.cab) do dism /image:C:\updates\mnt /add-package /packagepath:”%f”
В этом примере Win10x64Patched – имя компьютера, на котором уже установлены нужные обновления (версия и разрядность ОС должны совпадать). Естественно, что данный компьютер был доступен по сети, а ваша учетная запись должна обладать на нем правами администратора. В результате запуска команды, откроется новое окно, в котором можно наблюдать за процессом установки обновлений в офлайн образ Windows. DISM попробует добавить в ваш WIM образ Windows каждый найденный CAB файл на удаленном компьютере.
И последний шаг – нужно сохранить изменения и отключить смонтированный образ.
dism /unmount-wim /mountdir:C:\updates\mnt /commit
dism /Cleanup-Wim
Осталось скопировать полученный образ в install.wim в исходный каталог/виртуальную машину или пересобрать установочный iso образ, например, с помощью oscdimg), UltraISO или Dism++.
Если размер полученного install.wim файла более 4 Гб при установке образа Windows UEFI системе вы можете столкнуться с ошибкой «Windows cannot open the required file D:\sources\install.wim. Error code: 0x8007000D». В этом случае нужно разделить исходный install.wim на более маленькие файлы командой
dism /split-Image /imagefile:C:\Update\Win10Image\install.wim /swmfile:C:\Update\Win10Image\install.swm /filesize:4096
(см. статьи Создаем загрузочную USB флешку для UEFI с Windows 7 и Windows Server 2016).
После этого оригинальный install.wim можно удалить.
Теперь вы можете использовать ваш дистрибутив с интегрированными последними обновлениями безопасности для установки на компьютеры в вашей сети. Регулярно интегрируя последние обновления безопасности в ваш образ Windows, разворачиваемый на новых компьютерах, вы повышаете уровень защищенности своей инфраструктуры от последних уязвимостей и снижаете риски заражения новых компьютеров до того момента, когда они начнут обновляться со WSUS.
Спасибо. Отличные у Вас статьи..Вопрос вот в чем
Команда на Windows 8.1
Путь ”%U” не находит при интеграции.. Не подскажите как изменить??
Сергей, похоже в скрипте ошибка, вместо %U надо писать %f
Спасибо за статью!
Пробовал применить данный способ интеграции обновлений на ОС Windows 7 Enterprise с помощью скрипта:
Start /w for /R \\Win8x64Patched\C$\Windows\SoftwareDistribution\Download\ %f in (*.cab) do dism /image:C:\updates\mnt /add-package /packagepath:”%f”
Однако, при запуске скрипта открывается еще одно окно командной строки и там ничего не происходит. Приходится прерывать процесс.
Применим ли вообще данный метод для ОС Windows 7?
Методика для Win 8 и выше only
Start /w for /R \\lsm\C$\Windows\SoftwareDistribution\Download\ %f in (*.cab) do dism /image:C:\updates\mnt /add-package /packagepath:”%F”
У меня Windows 8.1 и тоже после применения данного скрипта открывается дополнительное окно консоли.
lsm имя моего ПК
Вся процедура выглядит так
1) монтируем wim файл
dism /mount-wim /wimfile:C:\updates\install.wim /index:1 /mountdir:C:\updates\mnt
2) Интегрируем обновления:
Start /w for /R \\lsm\C$\Windows\SoftwareDistribution\Download\ %f in (*.cab) do DISM /image:C:\updates\mnt /add-package /packagepath:”%f”
3) Отключаем wim файл
dism /unmount-wim /mountdir:C:\updates\mnt /commit
Коллеги, а в случае с WSUS как? Просто натравить на папку WsusContent в сети, а DISM сам разберет какие апдейты нужны (у меня на wsus для 7, 8, 2012R2, Office)?
Думаю, не получится, т.к. WSUS не хранит файлы обновлений в msu формате.
не работает у меня, ошибка при попытке открыть xxx.cab. ошибка 0x80070003 🙁
у меня тоже такая же ошибка, ошибка при попытке открыть xxx.cab. ошибка 0x80070003 что делать?
Можни ли интегрировать обновления установленные на другом разделе на том же компьютере?
Имеются в виду обновления из другой копии Windows на другом разделе? Если да, то можно при условии совпадении ОС и разрядности ОС.
Большое спасибо за статью! Интегрирую по этой инструкции обновления в Windows Server 2012 R2 ST. Интеграция обновлений из локальной папки (C:\updates\upd) выполняется у меня командой Start /w for /R D:\Win2012upd\Upd %f in (*.cab) do dism /image:D:\Win2012upd\mnt /add-package /packagepath:%f
, то есть, без кавычек у последнего симола %f.
У меня к вам вопрос, у меня WIM образ содержит 4 редакции системы, как я могу интегрировать обновления сразу во всех редакции? аргументы /index* и /index:* не подходят.
В своём ответе запутался в путях, реально у меня используются D:\Win2012upd\mnt и .\upd
Кстати, в случае добавления скачанных обновлений (скачивал с помощью WSUS Offline Update) в образ, лучше пользоваться командой Dism /Image:***\mnt /LogPath:AddPackage.log /Add-Package /PackagePath:****\upd\. Добавляются всё *.cab и *.msu файлы из указанной папки «upd».
Файл install.wim общий для всех четырех редакций в дистрибутиве. Так что интегрированные патчи будут актуальными сразу для всех.
Способ, который берёт обновления по сети с обновлённого ПК, не добавляет очень многие обновления.
Установил на виртуале:
IR5_CPRA_X64FREV_RU-RU_DV9
9600.17415.amd64fre.winblue_r4.141028-1500.
Обновил через WU. Применил указанные команды к WIM’y. Добавил его в ISO.
Поставил из ISO винду. Запросил проверку через WU.
Уже установленными оказались 45 обновлений (было в «чистом» образе 34).
При проверке WU показало:
Важных 73 (против 84 в «чистом»).
Необязательных 83 (против 87).
Т.о. интегрировался совершенный мизер — 11 штук.
Попробуйте после перезагрузки повторно выполнить поиск и установку обновлений, может быть дело в зависимостях
К сожалению при выполнении команды
PS C:\Windows\system32> Start /w for /R \2.becon.local\C$\Windows\SoftwareDistribution\Download\ %f in (*.cab) do dism
/image:D:\install\Images\Work\Mount1 /add-package /packagepath:»%f»
выдает ошибку
*.cab : The term ‘*.cab’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:83
+ … wnload\ %f in (*.cab) do dism /image:D:\install\Images\Work\Mount1 /add-package …
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (*.cab:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
может что с синтаксисом не так? подскажите пожалуйста.
Команду запускаете из-под Windows 8?
Поправьте unc путь вместо \2.becon.local\ нужно \\2.becon.local\. Ну и кавычки в конце проверьте (то ли на сайте неверно отобразилось, то ли у вас ошибка)
слеш и ковычки это копипаст так отработал. Я походу сглупил, запускал команды из powershell, там видимо синтаксис другой, из под cmd процесс пошел но на каждое обновление выдает ошибки:
C:\Windows\system32>dism /image:D:\install\Images\Work\mnt /add-package /package
path:»\2.becon.local\C$\Windows\SoftwareDistribution\Download2e6be0eb49e28f5
7286fa457aa70048\outlfltr-x-none.cab»
Deployment Image Servicing and Management tool
Version: 6.3.9600.17031
Image Version: 6.3.9600.17031
Attempting to cancel the operation…
Error: 3
An error occurred trying to open — C:\Windows\system32\»2.becon.local\C$\Windo
ws\SoftwareDistribution\Download2e6be0eb49e28f57286fa457aa70048\outlfltr-x-non
e.cab» Error: 0x80070003
The DISM log file can be found at C:\Windows\Logs\DISM\dism.log
Пока погуглю но если ошибка знакома очень надеюсь на помощь!
запускаю под windows 2012 r2, образ и машина из этого образа с обновами на win8.1
У меня заработало вот так:
Start /w for /R «G:\updates» %f in (*.msu) do dism /image:G:\setup\mnt /add-package /packagepath:%f
Спасибо, что написали о консоли я запускал из повершела!
при интеграции обновлений в Windows 8.1 вываливается ошибка 0xc0000135, не подскажете в чем проблема?
Мне нужно обновить образ виндовс 10 на жёстком диске.
Как это сделать?
Не понял вопроса. Хотите обновить установленный образ в офлайн режиме? Т.е. вы снимаете диск с компьютера, подключаете к другому и хотите обновить там Windows?