
https://learn.microsoft.com/en-us/windows/deployment/update/media-dynamic-update
微软官方给ISO集成最新补丁的步骤共28个,太过繁琐,但基本流程确实得这样按部就班来,著名的uupdump就是遵循这个
红色圈出的必不可少

微软这个URL上的示例代码并不兼容Server2016(比如: Add-WindowsCapability -Name "NetFX3~~~~" ,是从Server2019开始才有"NetFX3~~~~"这种写法),但基本流程是适用NT10系列的包括Server2016~2025以及Win10/Win11

另外就是关于dotnet4.8/4.8.1
Server2016在2018年2月是最后一次镜像,不包含4.8,得先离线安装dot4.8(KB4486129,2020.1.14)再集成dotnet4.8的补丁
Server2019在2022.11是最后一次镜像,包含dot4.8,直接集成dot4.8补丁就行;如果用的2020.1之前的ISO,不包含4.8,得先离线安装dot4.8(KB4486153,2020.1.14)再集成dotnet4.8的补丁
Server2022最新的ISO已经集成dot4.8.1,直接集成dot4.8.1补丁就行;如果用的2023.10之前的ISO,不包含4.8.1,得先离线安装dot4.8.1(KB5011048,2023.10.10)再集成dotnet4.8.1的补丁微软集成补丁更新ISO的文档上提到的从boot.wim分支2提取setup.exe和setuphost.exe替换到sources目录的步骤,从其代码逻辑判断是不适用<24H2(26100)系统的,但我目前实测2026年5月补丁,按此法集成是适用Server2019系统的,其他系统我没有测试。
注意事项:
Server2016 ISO最好用这一版集成补丁,其他版本有问题
其他版本patch 补丁时,虽然boot.wim不会报错,但patch后,ISO只能用于新装,无法就地升级
这一版既能用于新装,也能用于就地升级
2018年2月 Windows Server 2016 [14393.1884] (Updated February 2018)
SW_DVD9_Win_Server_STD_CORE_2016_64Bit_ChnSimp_-4_DC_STD_MLF_X21-70525.ISO 别名cn_windows_server_2016_vl_x64_dvd_11636695.iso
SW_DVD9_Win_Server_STD_CORE_2016_64Bit_English_-4_DC_STD_MLF_X21-70526.ISO 别名en_windows_server_2016_vl_x64_dvd_11636701.iso
Server2019 ISO最好用这一版集成补丁,其他版本有问题
其他版本patch 补丁时,boot.wim会报错,这一版OK
2018年9月 Windows Server 2019 [17763.1] (Updated September 2018)
SW_DVD9_Win_Server_STD_CORE_2019_64Bit_ChnSimp_DC_STD_MLF_X21-91652.ISO
SW_DVD9_Win_Server_STD_CORE_2019_64Bit_English_DC_STD_MLF_X21-91656.ISO我借助AI研读微软给ISO集成补丁的逻辑,进行了代码重写
终极通用版powershell(只改 1 行)
# —— 每次只改这一行 ——
$os = 'Server2016CN'
# —— 下面全部通用,原样跑 ——
# 1. 复制 ISO 内容
xcopy 'W:\' "E:\IsoPatch\media\$os\" /E /H /Y /I /Q ; "xcopy exit: $LASTEXITCODE"
attrib -h -s "E:\IsoPatch\media\$os\sources\boot.wim"
attrib -h -s "E:\IsoPatch\media\$os\sources\install.wim"
# 2. 拼 manifest 路径(自动小写)
$cfg = "E:\IsoPatch\$($os.ToLower())_idx4.json"
$skill = 'C:\Users\Administrator\.workbuddy\skills\windows-server-iso-patch-integration\scripts\Invoke-ServerIsoPatch.ps1'
# 3. preflight
& $skill -ConfigPath $cfg -ValidateOnly
# 4. 实跑
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
& $skill -ConfigPath $cfg目前初步测试,已兼容Server2016/2019(高版本系统目前微软每月都还在出ISO,不需要我集成)。
(1) 准备工作目录 + 复制 media
第2、3、4步是Stage A,说白了就是改造.wim集成补丁
############################################################################################################################################
Stage A "Update WIMs" 改 WIM 内容(mount / Add-WindowsPackage / Add-WindowsDriver / Cleanup-Image / Dismount /Save / Export)
############################################################################################################################################
(2) Service-WinRE ── 处理 winre.wim
子步骤:
① 挂 install.wim Index 4 → 抽取 winre.wim → dismount
② 挂 winre.wim → 注 VirtIO 三件套 → SSU → SafeOSDU
③ Cleanup-Image + Wait-ForCleanupComplete
④ Dismount /Save → Export 到 WorkRoot\winre.updated.wim
(3) Service-InstallWim ── 处理 install.wim 各 index
子步骤:
① Mount + Copy winre.updated.wim 替换回 winre.wim
② Add VirtIO(viostor → netkvm → qxldod)
③ Add SSU → Intel Microcode → LCU
④ Add .NET Runtime → .NET CU
⑤ Cleanup-Image
⑥ Dismount /Save → Export → Copy 回 OutputMediaRoot\sources\install.wim
(4) Service-BootWim ── 处理 boot.wim 各 index(1、2)
每个 index 子步骤:
Mount → VirtIO → SSU → LCU → Cleanup + Wait → Dismount → Export
Index 2 内部还会从 mount 抠出 setup.exe / setuphost.exe / bootmgfw.efi / bootmgr.efi 到 bootfiles\
第5步是Stage B,说白了就是改ISO中的install.wim、boot.wim之外的文件,并进行ISO打包
############################################################################################################################################
Stage B "Update servicing stack and other media binaries" 改 ISO 顶层文件(不是 WIM 里的)
############################################################################################################################################
(5) Finalize-Media ── Stage B:Setup DU + 覆盖 setup/bootmgr
子步骤:
① expand.exe 把 Setup DU 解压到 Patched_Media\sources\
② 用 bootfiles\ 显式列表覆盖 setup.exe / setuphost.exe / bootmgfw.efi / bootmgr.efi
③ sanity check:install.wim ≥ 1GB, boot.wim ≥ 200MB(粗检)
(6) New-PatchedIso ── oscdimg 出 ISO
子步骤:
① 检查 etfsboot.com(BIOS)和 efisys_noprompt.bin(UEFI)
② 拼 bootdata:2#p0,e,b<etfsboot>#pEF,e,b<efisys> —— 双引导
③ oscdimg 扫源 → 写 ISO(1) 准备工作目录 + 复制 media

Stage A = 改 WIM 内容(耗时大头),Stage B = 改 ISO 顶层文件让 setup/boot 也用 LCU 版本(极快但极危险)。
Stage B的操作过程: 提前从http://catalog.update.microsoft.com 下载各自的setup du补丁
粗略过滤后,逐一甄别对应版本的setup du
2025- "Windows 10 and later Dynamic Update" x64 -"22H2" -"23H2" -"24H2" -"25H2" -"Safe OS" -"GDR-DU" -drivers
精确匹配Server2016的setup du
2025- "Windows 10 and later Dynamic Update" 1607 x64 -"Safe OS" -"GDR-DU" -drivers
精确匹配Server2019的setup du
2025- "Windows 10 and later Dynamic Update" 1809 x64 -"Safe OS" -"GDR-DU" -drivers
精确匹配Server2022早期的setup du
2025- "Windows 10 and later Dynamic Update" 21H2 x64 -"Safe OS" -"GDR-DU" -drivers
精确匹配Server2022后期的setup du
"Dynamic Update for Microsoft server" -"Safe OS" -"GDR-DU" -drivers -"22H2" -"23H2" -"24H2" -"25H2"
1、展开setup du
md C:\mediaRefresh\packages\Other\2016_sources
md C:\mediaRefresh\packages\Other\2019_sources
cd C:\mediaRefresh\packages\Other\
$SETUP_DU_PATH2016 = "C:\mediaRefresh\packages\Other\2016_Setup_DU.cab"
expand.exe $SETUP_DU_PATH2016 -F:* ".\2016_sources"
$SETUP_DU_PATH2019 = "C:\mediaRefresh\packages\Other\2019_Setup_DU.cab"
expand.exe $SETUP_DU_PATH2019 -F:* ".\2019_sources"2016的部分setup du展开后可以看到2016_sources里面没有setup.exe和setuphost.exe,如果提取替换了,得到的新ISO,能通过光驱全新安装,但就地升级可能会报错0xC1900101 - 0x30017,只需要从其中提取boot manager files替换到ISO的相应位置即可。
2019的setup du展开后可以看到2019_sources里面有setup.exe和setuphost.exe。
2、提取替换
假设boot.wim的分支2,挂载到C:\boottmp2目录,则
从C:\boottmp2\sources\ 拷贝setup.exe和setuphost.exe替换到ISO的sources目录
从C:\boottmp2\Windows\boot\efi\拷贝出bootmgfw.efi、bootmgr.efi注: ISO中的bootmgfw.efi、bootx64.efi,都用拷贝出来的bootmgfw.efi替换,保留原文件名不变 ISO中的bootmgr.efi都用拷贝出来的bootmgr.efi替换,保留原文件名不变
最终,ISO中的\efi\boot\bootx64.efi还是bootx64.efi名称、\bootmgr.efi还是bootmgr.efi名称,只是内容换成了从更新后的boot.wim分支2中提取的东西
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。