1. 从 iso 文件中提取出 install.wim 文件
  2. dism 解压 wim 文件到一个干净的 ntfs 分区或文件夹里

查看 wim 的 index id

1
dism /Get-ImageInfo /ImageFile:"C:\Users\iuxt\Desktop\install.wim"

挂载镜像到一个空目录

1
2
3
4
5
6
7
dism /Mount-Wim /WimFile:"C:\Users\iuxt\Desktop\install.wim" /Index:1 /MountDir:"F:\tmp"

# 保存并应用更新
dism /Unmount-Wim /MountDir:"F:\tmp" /Commit

# 不保存,并放弃,主要是为了删除 F:\tmp 里面的文件。
dism /Unmount-Wim /MountDir:"F:\tmp" /Discard

安装 Windows 更新补丁

1
2
3
4
5
# 有ssu的可能需要安装多次。
dism /Image:"F:\tmp" /Add-Package /PackagePath:"F:\build_ltsc\LTSC 更新包\windows10.0-kb5017308-x64_2027053968a06948b45d139d95475ab4feee5654.msu"

dism /Image:"F:\tmp" /Get-Packages

⚠️ 如果忘记执行 /Commit,所有更改都会丢失。如果只想丢弃更改并卸载,则使用 /Discard 替代 /Commit。

清理冗余更新

1
2
3
4
5
# 分析空间
Dism /Image:"F:\tmp" /Cleanup-Image /AnalyzeComponentStore

# 清理冗余更新的核心是使用 DISM /Cleanup-Image 命令。这个操作主要针对 WinSxS 文件夹,它会移除那些被新补丁替换掉的旧版本文件,从而为镜像“减负
Dism /Image:"F:\tmp" /Cleanup-Image /StartComponentCleanup /ResetBase

安装 winappx 软件包

1
2
3
4
5
6
# 带许可证
Dism /Image:"F:\tmp" /Add-ProvisionedAppxPackage /PackagePath:"C:\Appx\MyApp.appx" /DependencyPackagePath:"C:\Appx\Microsoft.VCLibs.x64.14.00.appx" /LicensePath:"C:\Appx\License.xml" /Region:all

# 不带许可证
Dism /Image:"F:\tmp" /Add-ProvisionedAppxPackage /PackagePath:"F:\build_ltsc\Microsoft.HEVCVideoExtension_2.4.45.0_neutral_~_8wekyb3d8bbwe.AppxBundle" /SkipLicense /Region:all

其他常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
dism /Get-MountedWimInfo

里面还显示有挂载项。

这时候通常要修复清理:

dism /Cleanup-Wim

或者先看挂载状态:

dism /Get-MountedWimInfo

正确流程一般是:

dism /Get-MountedWimInfo

如果确认 F:\tmp 是挂载目录,并且不想保留修改:

dism /Unmount-Wim /MountDir:"F:\tmp" /Discard

卸载成功后,再删除空目录:

rmdir "F:\tmp"

制作成 iso 镜像

1
2
3
4
5
6
7
8
robocopy.exe "D:" "F:\iso_tmp" /MIR /COPY:DAT /DCOPY:DAT /R:2 /W:2

del /f /q "F:\iso_tmp\sources\install.wim"
del /f /q "F:\iso_tmp\sources\install.esd"
copy /y "C:\Users\iuxt\Desktop\install.wim" "F:\iso_tmp\sources\install.wim"

"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg\oscdimg.exe" -m -o -u2 -udfver102 -lLTSC_CUSTOM -bootdata:2#p0,e,b"F:\iso_tmp\boot\etfsboot.com"#pEF,e,b"F:\iso_tmp\efi\microsoft\boot\efisys.bin" "F:\iso_tmp" "F:\final_iso.iso"