Если вы хотите, чтобы образ Windows, которые вы распространяете на компьютеры, всегда содержал последние кумулятивные обновления безопасности, вы можете добавить новые пакеты обновления в установочный офлайн образ Windows с помощью DISM. Этот способ позволит вам обновить установочный ISO/WIM образ Windows 11/10 и Windows Server 2022/2019/2016.
В этом примере мы покажем, как добавить последнее кумулятивное обновление безопасности (от апреля 2023 года) в установочный образ Windows 11 22H2. Мы будем интегрировать в образ кумулятивное обновление KB5025239, которое в том числе добавляет в Windows встроенную поддержку Local Administrator Password Solution (Windows LAPS).
Подготовка к интеграции обновлений безопасности в образ Windows
Итак, нам понадобятся:
- Установочный образ Windows в ISO формате или его WIM файл;
- Файл с обновлениями в формате .MSU, которые нужно скачать с сервера обновлений Microsoft (как вручную скачать msu файлы обновлений). Достаточно скачать последнее кумулятивное обновления для вашей версии Windows.
На вашем компьютере создайте следующую структуру каталогов:
- C:\updates\mnt – – папка, в которую мы будем монтировать файл install.wim с установочным образом Windows;
- C:\updates\msu – каталог, в который нужно скопировать обновления для вашей версии Windows в формате MSU ;
- C:\updates\WinImage\ — в этот каталог нужно скопировать файл install.wim из каталога Sources вашего установочного образа Windows 11 22H2. Также вы можете о скопировать WIM образ с сервера WDS, MDT, SCCM или другого средства развертывания ОС, которое используется для установки Windows по сети через PXE.
Смонтировать WIM образ в Windows
В современных установочных ISO образах Windows, которые генерируются с помощью Media Creating Tool в целях экономии места вместо WIM файла используется формат ESD. Поэтому вам нужно сначала сконвертировать файл ESD в формат WIM с помощью утилиты DISM.
Смонтируйте ISO образ в виртуальный привод:
Mount-DiskImage –ImagePath "C:\DIstr\iso\Windows1122h2.iso"
Выведите список редакций Windows в образе:
DISM /Get-WimInfo /WimFile:"E:\sources\install.esd"
В этом примере мы экспортируем из ESD образа только WIM файл для редакции Windows 10 Pro (ее индекс 6, поэтому в следующей команде мы укажем
/SourceIndex:6
):
dism /export-image /SourceImageFile:"E:\sources\install.esd" /SourceIndex:6 /DestinationImageFile:C:\Updates\WInImage\win11pro.wim /Compress:max /CheckIntegrity
Смонтируйте файл install.wim c установочным образом Windows в каталог C:\updates\mnt с помощью DISM:
dism /mount-wim /wimfile:C:\Updates\WInImage\win11pro.wim /index:1 /mountdir:C:\updates\mnt
/index:1
. Если WIM образ содержит сразу несколько редакций Windows, нужно указать индекс нужной версии ОС, либо выполнить интеграцию обновления для каждого образа по очереди.DISM: Добавляем MSU и CAB обновления в WIM образ Windows
Теперь вы можете запустить процесс интеграции подходящих MSU обновлений из указанного каталога в ваш образ Windows.
dism /image:C:\updates\mnt /add-package /packagepath:C:\updates\msu
Если система обнаружит неподходящее обновление (не соответствует версия ОС, разрядность или если обновление уже установлено), оно будет пропущено, а в лог
C:\Windows\Logs\DISM\dism.log
будет записана соответствующая информация.
Если вы не хотите вручную качать MSU файлы обновлений, вы можете использовать в качестве источника компьютер с аналогичной версией Windows, на котором уже установлены последние обновления безопасности, вы можете получить все необходимые файлы обновления непосредственно с него. Дело в том, что Windows сохраняет все cab файлы обновлений, полученные с серверов Windows Update или сервера WSUS в каталог
C:\Windows\SoftwareDistribution\Download
.
С помощью следующей команды вы запустите интеграцию в образ install.wim файлов обновлений, которые уже скачаны и установлены на другом компьютере (с именем PC1122H2), через локальную сеть:
Start /w for /R \\PC1122H2\C$\Windows\SoftwareDistribution\Download\ %f in (*.cab) do dism /image:C:\updates\mnt /add-package /packagepath:”%f”
В данном примере мы получим доступ к каталогу обновлений на удаленном компьютере через административную шару C$. Появится окно, в котором можно наблюдать за процессом установки обновлений в офлайн образ Windows. DISM будет пытаться добавить в ваш WIM образ Windows каждый найденный CAB файл на удаленном компьютере.
dism /image:C:\updates\mnt /Cleanup-Image /StartComponentCleanup /ResetBase /ScratchDir:C:\Temp
И последний шаг – нужно сохранить изменения и отключить смонтированный образ.
dism /unmount-wim /mountdir:C:\updates\mnt /commit
dism /Cleanup-Wim
После завершения установки обновлений вы можете проверить, что обновления были успешно интегрированы в образ Windows. Вывести список установленных сегодня обновлений в смонтированном WIM образе Windows:
DISM /Image:C:\updates\mnt /Get-Packages /format:table | select-string "4/19/2023"
Или на офлайн WIM образе:
Dism /image:C:\Updates\WInImage\win11pro.wim /Get-Packages
В этом случае нужно разделить исходный install.wim на более маленькие SWM файлы командой:
dism /split-Image /imagefile:C:\Update\Winmage\install.wim /swmfile:C:\Update\WinImage\install.swm /filesize:4096
Осталось скопировать полученный образ в install.wim (или SWM файлы) в исходный каталог/виртуальную машину или пересобрать установочный ISO образ, например, с помощью oscdimg, UltraISO или Dism++.
Пример команды DISM для сборки установочного ISO Windows образа с поддержкой UEFI и BIOS:
oscdimg.exe -h -m -o -u2 -udfver102 -bootdata:2#p0,e,bc:\win11\iso\boot\etfsboot.com#pEF,e,bc:\win11\iso\efi\microsoft\boot\efisys.bin -lWin10 c:\iso c:\win11.iso
Спасибо. Отличные у Вас статьи..Вопрос вот в чем
Команда на 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?
Метод интеграции обновлений с удалённого компьютера больше не работает? Установил с чистого образа Windows 10 LTSB 2016, установил все обновления через Windows Update, но в папке C:\Windows\SoftwareDistribution\Download\ только файлы без расширения, cab файлов нету.
Файлы *.cab в каталоге \SoftwareDistribution\Download\? Возможно они автоматически вычищаются через месяц….
А нормально установщик себя поведёт если файл будет install.swm?
Да, он будет работать корректно. Главное не забыть поместить все swm файлы.
Привет, спасибо огромное за многи статьи!
два варианта
1.Как из install.wim файла образа где уже интегрированы все обновы (*.cab) вытащить все и интегрировать/вставить в свежеустановленную ОС ?
2. Как из install.wim файла образа где уже интегрированы все обновы (*.cab) вытащить все и интегрировать/вставить в новый install.wim ?
(в ручную) без использования дом. сети
Установленные обновления не всегда в cab формате не всегда будут находится в каталоге SoftwareDistribution\Download.
Если вы очищаете образ от предыдущих версий компонентов с помощью clenup manager (есть еще автоматический процесс очистки — раз в 30 дней если не ошибаюсь), то файлов вы не найдете
в каталогр C:\Windows\SoftwareDistribution\Download пусто
Если доступно обновление стека обслуживания (SSU), его необходимо установить перед применением последнего накопительного пакета обновления (LCU).