Win10镜像集成离线补丁 由于正常安装系统后再打补丁比较漫长,能够事先作好打过补丁的iso,备未来使用。 以管理员身份运行cmd,而后经过dism提取、挂载、集成补丁、保存install.wim镜像,最后用iso工具替换便可。 独立补丁下载: 最新的Win10 1607和Windows Server 2016补丁信息: https://support.microsoft.com/en-us/help/4000825/windows-10-windows-server-2016-update-history 最新的Win10 1703补丁信息: https://support.microsoft.com/en-us/help/4018124 选择一个最新的补丁(在最上方)后,点击页面内容里的Microsoft Update Catalog连接 How to get this update ---------------------- To get the standalone package for this update, go to the _Microsoft Update Catalog_ website. 下载累计更新。 补丁查询页面: http://www.catalog.update.microsoft.com/home.aspx 制做集成补丁的iso详细步骤: 1. 查看镜像源install.wim的索引号 先将iso文件载入虚拟光驱,这里是G:盘,执行下面命令 C:\>dism /get-imageinfo /imagefile:G:\sources\install.wim Deployment Image Servicing and Management tool Version: 10.0.14393.0 Details for image : G:\sources\install.wim Index : 1 Name : Windows 10 企业版 2016 长期服务版 Description : Windows 10 企业版 2016 长期服务版 Size : 12,555,951,804 bytes The operation completed successfully. 2. 提取镜像源install.wim加索引的镜像到本地磁盘install_exp.wim 下面提取命令成功后,就能够弹出虚拟光驱了。 C:\>dism /export-image /sourceimagefile:G:\sources\install.wim /sourceindex:1 /destinationimagefile:D:\install_exp.wim Deployment Image Servicing and Management tool Version: 10.0.14393.0 Exporting image [==========================100.0%==========================] The operation completed successfully. 3. 挂载install_exp.wim到一个文件夹 注意:被挂在的目标文件夹不能是ReFS文件系统 C:\>mkdir D:\mount C:\>dism /mount-wim /wimfile:D:\install_exp.wim /index:1 /mountdir:D:\mount Deployment Image Servicing and Management tool Version: 10.0.14393.0 Mounting image [==========================100.0%==========================] The operation completed successfully. 4. 将要被集成的补丁文件,集中放到一个文件夹里 这里假设在D:\package 5. 应用补丁到挂载文件夹(时间较长) C:\>dism /image:D:\mount /add-package /packagepath:D:\package Deployment Image Servicing and Management tool Version: 10.0.14393.0 Image Version: 10.0.14393.0 Processing 1 of 1 - Adding package D:\package\windows10.0-kb4039396-x64_bd1f9e1c7add02b8f3334f1aeaa07cae6632c3cf.msu [==========================100.0%==========================] The operation completed successfully. 6. 清理镜像WinSxS,清理后会减小体积,但将不能卸载集成过的补丁(时间较长,可跳过) C:\>dism /image:D:\mount /cleanup-image /startcomponentcleanup /resetbase Deployment Image Servicing and Management tool Version: 10.0.14393.0 Image Version: 10.0.14393.0 [==========================100.0%==========================] The operation completed successfully. 7. 卸载镜像保存修改(时间较长) C:\>dism /unmount-wim /mountdir:D:\mount /commit Deployment Image Servicing and Management tool Version: 10.0.14393.0 Image File : D:\install_exp.wim Image Index : 1 Saving image [==========================100.0%==========================] Unmounting image [==========================100.0%==========================] The operation completed successfully. 8. 制做ISO 1) 用imagex将这个wim最大化压缩导出新的install.wim 注:若是没有imagex,能够直接把install_exp.wim重命名为install.wim,可是文件会比较大。 C:\>imagex /export D:\install_exp.wim 1 D:\install.wim /compress maximum ImageX Tool for Windows Copyright (C) Microsoft Corp. All rights reserved. Version: 6.3.9600.16384 Exporting: [D:\install_exp.wim, 1] -> [D:\install.wim] [ 100% ] Exporting progress Successfully exported image #1. Total elapsed time: 59 sec 2) 将原ISO复制一份出来。假设新iso命名为cn_windows_10_enterprise_2016_ltsb_x64_with_kb4039396.iso 3) 用UltraISO等工具将install.wim替换到新iso文件sources下同名文件,保存完成。 ---------- 说明:若是不用UltraISO,能够使用微软官方的Windows ADK工具(完整的的Windows 8.1版本有4.1GB) 其中的oscdimg命令能够制做iso 命令帮助:https://technet.microsoft.com/zh-cn/library/cc749036(v=ws.10).aspx ADK介绍:https://msdn.microsoft.com/zh-cn/library/hh825420.aspx ADK下载页面:http://go.microsoft.com/fwlink/?LinkId=293840 下面是离线下载Windows ADK的方法: 1. 首先到下载页面下载到最新的Windows ADK安装在线安装程序adksetup.exe 2. 在cmd下离线下载 C:\>adksetup.exe /layout D:\adk 也能够按功能安装,详细见 https://msdn.microsoft.com/zh-cn/library/hh825494.aspx ---------- 制做install.wim合集 以Windows Server 2016为例,MSDN版本包含了4个镜像。 在分别制做好wim文件,注意用imagex按相同的压缩方式(建议/compress maximum)导出4个wim,假设为: install1.wim install2.wim install3.wim install4.wim 合并命令: C:\>dism /Export-Image /SourceImageFile:D:\install1.wim /SourceIndex:1 /DestinationImageFile:D:\install.wim C:\>dism /Export-Image /SourceImageFile:D:\install2.wim /SourceIndex:1 /DestinationImageFile:D:\install.wim C:\>dism /Export-Image /SourceImageFile:D:\install3.wim /SourceIndex:1 /DestinationImageFile:D:\install.wim C:\>dism /Export-Image /SourceImageFile:D:\install4.wim /SourceIndex:1 /DestinationImageFile:D:\install.wim 所有合并到install.wim,替换iso,完成。
patchwim.batweb
::patchwim.bat sourceWim index packagePath mountPath outputPath [/nointeraction] ::patchwim.bat g:\sources\install.wim 1 D:\package D:\mount D:\output @echo off pushd %~dp0 set sourceWim="%~1" set index=%2 set packagePath="%~3" set mountPath="%~4" set outputPath=%~5 set nointeraction=%6 set outputWim="%outputPath%\install_%index%.wim" set outputWimFinal="%outputPath%\install%index%.wim" echo sourceWim: %sourceWim% echo index: %index% echo packagePath: %packagePath% echo mountPath: %mountPath% echo outputPath: "%outputPath%" echo outputWim: %outputWim% echo outputWimFinal: %outputWimFinal% if "%outputPath%"=="" goto :help if not exist %packagePath% goto :err1 if /i "%nointeraction%"=="/nointeraction" goto :start set /p tmpInput=Are you ready? (Y/N): if /i "%tmpInput%"=="y" goto :start goto :eof :start if not exist %mountPath% md %mountPath% if not exist "%outputPath%" md "%outputPath%" echo dism /export-image /sourceimagefile:%sourceWim% /sourceindex:%index% /destinationimagefile:%outputWim% dism /export-image /sourceimagefile:%sourceWim% /sourceindex:%index% /destinationimagefile:%outputWim% if errorlevel 1 goto :error echo dism /mount-wim /wimfile:%outputWim% /index:1 /mountdir:%mountPath% dism /mount-wim /wimfile:%outputWim% /index:1 /mountdir:%mountPath% if errorlevel 1 goto :error echo dism /image:%mountPath% /add-package /packagepath:%packagePath% dism /image:%mountPath% /add-package /packagepath:%packagePath% if errorlevel 1 goto :error echo dism /image:%mountPath% /cleanup-image /startcomponentcleanup /resetbase dism /image:%mountPath% /cleanup-image /startcomponentcleanup /resetbase if errorlevel 1 goto :error echo dism /unmount-wim /mountdir:%mountPath% /commit dism /unmount-wim /mountdir:%mountPath% /commit if errorlevel 1 goto :error echo imagex /export %outputWim% 1 %outputWimFinal% /compress maximum imagex /export %outputWim% 1 %outputWimFinal% /compress maximum if errorlevel 1 goto :error del /q %outputWim% echo Completed. goto :end :error echo ERRORLEVEL: %ERRORLEVEL% goto :end :err1 echo ERROR: The packagePath(%packagePath%) is not exist! goto :end :help echo. echo Usage: echo patchwim.bat sourceWim index packagePath mountPath outputPath [/nointeraction] echo /nointeraction: No interaction echo Example: echo (1) patchwim.bat g:\sources\install.wim 1 D:\package D:\mount D:\output echo (2) autopatch.bat: echo patchwim.bat g:\sources\install.wim 1 D:\package D:\mount D:\output /nointeraction echo patchwim.bat g:\sources\install.wim 2 D:\package D:\mount D:\output /nointeraction echo patchwim.bat g:\sources\install.wim 3 D:\package D:\mount D:\output /nointeraction echo patchwim.bat g:\sources\install.wim 4 D:\package D:\mount D:\output /nointeraction echo. :end if /i "%nointeraction%"=="/nointeraction" goto :eof echo Press any key to EXIT... pause>nul popd
patchwimall.batwindows
::patchwimall.bat sourceWim packagePath mountPath outputPath [/nointeraction] ::patchwimall.bat g:\sources\install.wim D:\package D:\mount D:\output @echo off pushd %~dp0 set patchwim=patchwim.bat set sourceWim="%~1" set packagePath="%~2" set mountPath="%~3" set outputPath=%~4 set nointeraction=%5 for /f "delims=: tokens=2" %%a in ('imagex /info %sourceWim%^|find /i "Image Count:"') do set imageCount=%%a set outWim="%outputPath%\install.wim" echo sourceWim: %sourceWim% echo imageCount: %imageCount% echo packagePath: %packagePath% echo mountPath: %mountPath% echo outputPath: "%outputPath%" echo outWim: %outWim% if "%outputPath%"=="" goto :help if not exist %packagePath% goto :err1 if not exist %patchwim% goto :err2 if /i "%nointeraction%"=="/nointeraction" goto :start set /p tmpInput=Are you ready? (Y/N): if /i "%tmpInput%"=="y" goto :start goto :eof :start for /l %%a in (1,1,%imageCount%) do ( call %patchwim% %sourceWim% %%a %packagePath% %mountPath% "%outputPath%" /nointeraction ) if %imageCount% equ 1 goto :rename for /l %%a in (1,1,%imageCount%) do ( dism /Export-Image /SourceImageFile:"%outputPath%\install%%a.wim" /SourceIndex:1 /DestinationImageFile:%outWim% ) goto :complete :rename move /y "%outputPath%\install1.wim" %outWim% goto :complete :complete echo All Completed! ImageInfo: dism /get-imageinfo /imagefile:%outWim% goto :end :err1 echo ERROR: The packagePath(%packagePath%) is not exist! goto :end :err2 echo ERROR: %patchwim% is not found! goto :end :help echo. echo Usage: echo patchwimall.bat sourceWim packagePath mountPath outputPath [/nointeraction] echo /nointeraction: No interaction echo Example: echo patchwimall.bat g:\sources\install.wim D:\package D:\mount D:\output echo. :end if /i "%nointeraction%"=="/nointeraction" goto :eof echo Press any key to EXIT... pause>nul popd