微软服务器离线补丁工具包,自己动手离线集成Windows 7 SP1最新补丁

编程知识 更新时间:2023-04-26 15:29:20

本帖最后由 mmxx2013 于 2018-8-12 19:13 编辑

离线集成Windows补丁的方法很多,我这里要说的是用系统自带的dism离线集成补丁,虽然说的是Windows 7的,Windows  8/8.1/10等系统集成补丁的方法也可参照此法,不过,给Windows 10集成离线补丁,必须用Windows 10以上版本的dism。

用dism集成补丁,好处是集成哪些补丁、集成顺序很好操作,而且,很方便顺序给多个版本集成补丁。

本文以给包含四个版本的  “cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso” 集成补丁为例,介绍用批处理文件方式依次给四个版本集成补丁的方法。文中先将四个版本从“install.wim”导出、集成补丁后再合并的用意在于,当集成补丁后,如果需要刻盘时,如果四个版本合并在一起,大小可能超过一张DVD-5的容量,这时可以把常用的版本改名为“install.wim”,用其替换原ISO文件里的“install.wim”,这样做出的ISO文件大小有可能刻录到一张DVD-5上。

一、获取待集成补丁用微软发布的最新版系统文件安装系统,然后检查更新。如果卡在“正在检查更新”,可以先安装KB3138612。本文举例使用“cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso”安装系统,安装IE11(必须先安装KB2533623、KB2639308、KB2670838、KB2729094、KB2731771、KB2786081、KB2834140、KB2882822、KB2888049),安装KB3138612,然后查找更新。

2016-12-31 23:45 上传

下载附件 (66.83 KB)

2016-12-31 23:46 上传

下载附件 (182.22 KB)

2016-12-31 23:46 上传

下载附件 (156.25 KB)

用文本捕捉软件,如TextCatch、HyperSnap  6.xx版,捕捉补丁列表上的文字。

2016-12-31 23:47 上传

下载附件 (45.67 KB)

二、准备集成所需文件在任一分区根目录下建立工作文件夹。

2016-12-31 23:54 上传

下载附件 (35.28 KB)

把IE11安装文件“IE11-Windows6.1-x64-zh-cn.exe”解压后复制到“Win7x64_hotfix\IE11\IE11_install”文件夹,解压命令为:

IE11-Windows6.1-x64-zh-cn.exe /x: 复制代码如果“Win7x64_hotfix\IE11\IE11_install”文件夹下解压,解压命令为:

IE11-Windows6.1-x64-zh-cn.exe /x: .复制代码

把集成IE11所需的补丁复制到“Win7x64_hotfix\IE11\IE11_hotfix”文件夹,这些补丁包括:KB2533623、KB2639308、KB2670838、KB2729094、KB2731771、KB2786081、KB2834140、KB2882822、KB2888049。

把原ISO文件解压到“Win7x64\原ISO文件解压”文件夹。

从“Win7x64\原ISO文件解压\sources\install.wim”导出四个版本的wim分卷。导出分卷操作可以用dism++完成,不过,用命令行方式操作更方便。

如果在Windows 8以上系统操作,可以用dism完成,命令格式如下:

dism /export-image /sourceimagefile: /sourceindex: /destinationimagefile:复制代码

将导出分卷的命令编成批处理文件,方便以后使用。

批处理文件举例:

@cls

set work_dir=%~dp0

set wim_file_install=%work_dir%原ISO文件解压\sources\install.wim

set wim_file_Homebasic=%work_dir%Wim卷导出\Homebasic.wim

set wim_file_Homepremium=%work_dir%Wim卷导出\Homepremium.wim

set wim_file_Professional=%work_dir%Wim卷导出\Professional.wim

set wim_file_Ultimate=%work_dir%Wim卷导出\Ultimate.wim

cd /d "%work_dir%"

dism /export-image /sourceimagefile:%wim_file_install% /sourceindex:1  /destinationimagefile:%wim_file_Homebasic%

dism /export-image /sourceimagefile:%wim_file_install% /sourceindex:2  /destinationimagefile:%wim_file_Homepremium%

dism /export-image /sourceimagefile:%wim_file_install% /sourceindex:3  /destinationimagefile:%wim_file_Professional%

dism /export-image /sourceimagefile:%wim_file_install% /sourceindex:4  /destinationimagefile:%wim_file_Ultimate%

@echo 操作完成。

@pause复制代码

如果在Windows 7系统操作,可以用imagex完成,命令格式如下:

imagex /export 复制代码将导出分卷的命令编成批处理文件,方便以后使用。

批处理文件举例:

@cls

set work_dir=%~dp0

set wim_file_install=%work_dir%原ISO文件解压\sources\install.wim

set wim_file_Homebasic=%work_dir%Wim卷导出\Homebasic.wim

set wim_file_Homepremium=%work_dir%Wim卷导出\Homepremium.wim

set wim_file_Professional=%work_dir%Wim卷导出\Professional.wim

set wim_file_Ultimate=%work_dir%Wim卷导出\Ultimate.wim

cd /d "%work_dir%"

imagex /export %wim_file_install% 1 %wim_file_Homebasic%

imagex /export %wim_file_install% 2 %wim_file_Homepremium%

imagex /export %wim_file_install% 3 %wim_file_Professional%

imagex /export %wim_file_install% 4 %wim_file_Ultimate%

@echo 操作完成。

@pause复制代码

把待集成的补丁文件复制到“Win7x64_hotfix\hotfix”文件夹。

在任意位置新建一个挂载wim文件用的文件夹,如“WimFile_Mount_Dir”,此文件夹内不要放其它文件/文件夹。

三、编写集成补丁批处理文件

将集成补丁的操作分几步编成批处理文件,用call命令调用,实现“依次给多个版本离线集成补丁、集成补丁列表变化时只需修改集成补丁操作批处理文件”。这些批处理文件包括:集成集成IE11必需的补丁和集成IE11批处理文件:Win7x64_hotfix\IE11\IE11.bat

批处理文件内容举例:

set ie11_hotfix_dir=%~dp0\IE11_hotfix

set ie11_install_dir=%~dp0\IE11_install

@REM 检查待集成文件是否存在

if not exist %ie11_hotfix_dir%\Windows6.1-KB2533623-*.msu goto ie11_hotfix_end

if not exist %ie11_hotfix_dir%\Windows6.1-KB2639308-*.msu goto ie11_hotfix_end

if not exist %ie11_hotfix_dir%\Windows6.1-KB2729094-*.msu goto ie11_hotfix_end

if not exist %ie11_hotfix_dir%\Windows6.1-KB2731771-*.msu goto ie11_hotfix_end

if not exist %ie11_hotfix_dir%\Windows6.1-KB2786081-*.msu goto ie11_hotfix_end

if not exist %ie11_hotfix_dir%\Windows6.1-KB2834140-*.msu goto ie11_hotfix_end

if not exist %ie11_hotfix_dir%\Windows6.1-KB2882822-*.msu goto ie11_hotfix_end

if not exist %ie11_hotfix_dir%\Windows6.1-KB2888049-*.msu goto ie11_hotfix_end

if not exist %ie11_hotfix_dir%\Windows6.1-KB2670838-*.msu goto ie11_hotfix_end

if not exist %ie11_install_dir%\IE-Win7.CAB goto ie11_hotfix_end

if not exist %ie11_install_dir%\ielangpack-zh-CN.CAB goto ie11_hotfix_end

if not exist %ie11_install_dir%\IE-Hyphenation-en.MSU goto ie11_hotfix_end

if not exist %ie11_install_dir%\IE-Spelling-en.MSU goto ie11_hotfix_end

@REM 开始集成集成IE11必需的补丁

Dism /image:%mount_dir% /Add-Package /PackagePath:%ie11_hotfix_dir%

@REM 开始集成IE11

Dism /image:%mount_dir% /Add-Package /PackagePath:%ie11_install_dir%\IE-Win7.CAB

Dism /image:%mount_dir% /Add-Package /PackagePath:%ie11_install_dir%\ielangpack-zh-CN.CAB

Dism /image:%mount_dir% /Add-Package /PackagePath:%ie11_install_dir%\IE-Hyphenation-en.MSU

Dism /image:%mount_dir% /Add-Package /PackagePath:%ie11_install_dir%\IE-Spelling-en.MSU

:ie11_hotfix_end复制代码

执行集成离线补丁的批处理文件:Win7x64_hotfix\hotfix\dism_exec.bat

如果补丁可以按任意顺序集成,可以使用集成整个文件夹内补丁的方式,集成命令格式:

Dism /image: /Add-Package /PackagePath:复制代码

批处理文件内容举例:

@REM 不想集成的补丁移动到backup文件夹

set backup_dir=backup_%random%

if not exist %backup_dir% md %backup_dir%

move windows6.1-kb2533552-*.* %backup_dir%

move windows6.1-kb2685811-*.* %backup_dir%

move windows6.1-kb2685813-*.* %backup_dir%

move windows6.1-kb3146706-*.* %backup_dir%

move windows6.1-kb3021917-*.* %backup_dir%

move windows6.1-kb3068708-*.* %backup_dir%

move windows6.1-kb3080149-*.* %backup_dir%

move windows6.1-kb2952664-*.* %backup_dir%

@REM 开始集成补丁

Dism /image:%mount_dir% /Add-Package /PackagePath:%~dp0复制代码

经测试,截至2016.12的补丁可以乱序集成,按这种方式编写的批处理文件,集成补丁变化时,不需要修改批处理文件。

如果补丁需按一定顺序集成,需逐一编写集成命令,集成命令格式:

Dism /image: /Add-Package /PackagePath:复制代码

批处理文件内容举例:

Dism /image:%mount_dir% /Add-Package /PackagePath:%~dp0%\windows6.1-kb2479943-x64_2a683f1c9acb8b3c1fb480c1ff07a275267030ec.msu

Dism /image:%mount_dir% /Add-Package /PackagePath:%~dp0%\windows6.1-kb2491683-x64_f33cff50cf92e0b8c0043f1ef3587661d600633e.msu

Dism /image:%mount_dir% /Add-Package /PackagePath:%~dp0%\windows6.1-kb2506014-x64_cc70f2accbfbae5e68f3c7aa3dba8877d1dc88a7.msu

……    ……(其它集成补丁命令)复制代码

该批处理文件内容如何生成,详见下文描述。

挂载wim文件、调用IE11.bat、调用dism_exec.bat和保存卸载wim文件的批处理文件:Win7x64_hotfix\hotfix_exec.bat

批处理文件内容举例(例子中将执行结果定向输出到“%logfile%.txt”中,旨在方便查看执行结果,执行完成后,打开“%logfile%.txt”对应的文本文件,查找“错误”关键字,如果找到,说明执行中出现错误):

批处理文件内容举例:

if not exist "%work_dir%\IE11\IE11.bat" goto hotfix_exit

if not exist "%work_dir%\hotfix\dism_exec.bat" goto hotfix_exit

@echo 准备挂载映像

@if exist temp.txt del temp.txt

Dism /Mount-Wim /WimFile:%wim_file% /Index:1 /MountDir:%mount_dir% >temp.txt

:mount_wimfile_wait

find "操作成功完成" temp.txt && goto mount_wimfile_ok

find "错误" temp.txt && goto unmount_wimfile

goto mount_wimfile_wait

:mount_wimfile_ok

@echo 开始给映像集成补丁

cd /d %work_dir%\IE11

call IE11.bat >%logfile%_ie11.txt

cd /d %work_dir%\hotfix

call dism_exec.bat >%logfile%.txt

cd /d %work_dir%

@echo 集成补丁完成。

:unmount_wimfile

@if exist temp.txt del temp.txt

Dism /UnMount-Wim /MountDir:%mount_dir% /Commit >temp.txt

:unmount_wimfile_wait

find "操作成功完成" temp.txt && goto unmount_wimfile_ok

find "错误" temp.txt && goto unmount_wimfile_err

goto unmount_wimfile_wait

:unmount_wimfile_ok

goto hotfix_exit

@REM 出错

:unmount_wimfile_err

@echo 卸载映像文件出错。

@REM 结束

:hotfix_exit复制代码

调用上述批处理文件,依次给各个版本集成补丁的批处理文件:Win7x64_hotfix\Hotfix_All.bat

批处理文件内容举例:

@cls

set work_dir=%~dp0

set wim_file_dir="%~d0\Win7x64\Wim卷导出"

set mount_dir="%~d0\WimFile_Mount_Dir"

@REM 切换到当前目录(使用管理员权限双击批处理文件执行时必需)

cd /d %work_dir%

if not exist %mount_dir% md %mount_dir%

@if exist error.txt del error.txt

@if exist time.txt del time.txt

@REM 给家庭基础版集成补丁

if exist "%wim_file_dir%\Homebasic.wim" goto Homebasic_1

echo 找不到%wim_file_dir%\Homebasic.wim>>error.txt

goto Homepremium_1

:Homebasic_1

echo %time%>>time.txt

set logfile=Homebasic

set wim_file=%wim_file_dir%\Homebasic.wim

call hotfix_exec.bat

@REM 给家庭高级版集成补丁

:Homepremium_1

if exist "%wim_file_dir%\Homepremium.wim" goto Homepremium_2

echo 找不到%wim_file_dir%\Homepremium.wim>>error.txt

goto Professional_1

:Homepremium_2

echo %time%>>time.txt

set logfile=Homepremium

set wim_file=%wim_file_dir%\Homepremium.wim

call hotfix_exec.bat

@REM 给专业版集成补丁

:Professional_1

if exist "%wim_file_dir%\Professional.wim" goto Professional_2

echo 找不到%wim_file_dir%\Professional.wim>>error.txt

goto Ultimate_1

:Professional_2

echo %time%>>time.txt

set logfile=Professional

set wim_file=%wim_file_dir%\Professional.wim

call hotfix_exec.bat

@REM 给旗舰版集成补丁

:Ultimate_1

if exist "%wim_file_dir%\Ultimate.wim" goto Ultimate_2

echo 找不到%wim_file_dir%\Ultimate.wim>>error.txt

goto hotfix_end

:Ultimate_2

echo %time%>>time.txt

set logfile=Ultimate

set wim_file=%wim_file_dir%\Ultimate.wim

call hotfix_exec.bat

echo %time%>>time.txt

:hotfix_end

@REM 集成完成后休眠

@REM rundll32.exe powrProf.dll,SetSuspendState

@pause复制代码

建立好上述批处理文件后,执行“Win7x64_hotfix\Hotfix_All.bat”,集成补丁的过程如下:

传递当前文件夹“work_dir”、待集成补丁wim文件所在文件夹“wim_file_dir”、wim文件挂载文件夹“mount_dir”和待挂载wim文件“wim_file”参数给“hotfix_exec.bat”。

“hotfix_exec.bat”根据传递参数挂载wim文件,调用集成IE11的批处理文件“Win7x64_hotfix\IE11\IE11.bat”,调用集成其它补丁的批处理文件“Win7x64_hotfix\hotfix_exec.bat”,保存并卸载wim文件。

打开执行结果输出文件“%logfile%.txt”,如Ultimate.txt,查找关键字“错误”,如果没有找到,说明所有补丁集成正常结束,如果找到“错误”关键字,看看集成哪个补丁出错,根据错误做相应的处理。

2017-1-1 05:30 上传

下载附件 (58.56 KB)

当前需安装补丁中,只有KB2533552无法集成,这个补丁只能在装好的系统上安装。

2017-1-1 05:31 上传

下载附件 (75.59 KB)

生成执行逐一集成离线补丁的批处理文件“Win7x64_hotfix\hotfix\dism_exec.bat”的方法:

在“Win7x64_hotfix\hotfix”文件夹下执行

dir /b *.msu >dism_exec.bat复制代码上述命令把当前文件夹下所有“.msu”文件列表写入“dism_exec.bat”。

此处假设使用的都是msu文件格式补丁包,如果使用的都是cab文件格式的补丁包,上述命令改为:

dir /b *.cab >dism_exec.bat复制代码如果两种文件格式的补丁包都有,则执行

dir /b *.msu >dism_exec.bat

dir /b *.cab >>dism_exec.bat复制代码注意,第二个重定向符必须是“>>”,否则第一个命令执行的结果会被第二个命令覆盖。

用文件编辑器打开“dism_exec.bat”,其内容大致是这样:

2017-1-1 05:32 上传

下载附件 (25.41 KB)

通过批量替换,在每一行前面增加dism集成补丁命令。查找“windows6.1-”,替换为“Dism                 /image:%mount_dir% /Add-Package /PackagePath:%~dp0%\windows6.1-”。

2017-1-1 05:33 上传

下载附件 (83.18 KB)

替换完成后的文件大致是这样:

2017-1-1 05:33 上传

下载附件 (27.8 KB)

在不能集成、不想集成的补丁的集成命令前面加上“@REM ”将该行命令注释掉,这些补丁包括:

不可集成的补丁:KB2533552

据说容易引起蓝屏的补丁:KB2685811、KB2685813、KB2670838(集成IE11必需)、KB3146706

遥测(搜集用户信息)补丁:KB2952664、KB3021917、KB3068708、KB3080149

2017-1-1 05:33 上传

下载附件 (22.96 KB)

四、制作安装文件

集成补丁是个漫长的过程,在我这台机子上为一个版本集成截至2016年12月的补丁耗时一个小时左右,依次为四个版本集成补丁,总共耗时四个小时左右。补丁集成完成后,把四个版本分卷合并成保护四个版本的install.wim。如果在Windows 8以上系统上操作,可以用dism完成合并。

合并批处理文件举例:

@cls

@set work_dir=%~dp0

set wim_file_Homebasic=%work_dir%Wim卷导出\Homebasic.wim

set wim_file_Homepremium=%work_dir%Wim卷导出\Homepremium.wim

set wim_file_Professional=%work_dir%Wim卷导出\Professional.wim

set wim_file_Ultimate=%work_dir%Wim卷导出\Ultimate.wim

set wim_file_install=%work_dir%Wim卷合并\install.wim

dism /Export-Image /SourceImageFile:%wim_file_Homebasic% /SourceIndex:1         /DestinationImageFile:%wim_file_install%

dism /Export-Image /SourceImageFile:%wim_file_Homepremium% /SourceIndex:1         /DestinationImageFile:%wim_file_install%

dism /Export-Image /SourceImageFile:%wim_file_Professional% /SourceIndex:1         /DestinationImageFile:%wim_file_install%

dism /Export-Image /SourceImageFile:%wim_file_Ultimate% /SourceIndex:1         /DestinationImageFile:%wim_file_install%

@pause复制代码

如果在Windows 7上操作,可以用imagex完成合并。

合并批处理文件举例:

@cls

set work_dir=%~dp0

set wim_file_Homebasic=%work_dir%Wim卷导出\Homebasic.wim

set wim_file_Homepremium=%work_dir%Wim卷导出\Homepremium.wim

set wim_file_Professional=%work_dir%Wim卷导出\Professional.wim

set wim_file_Ultimate=%work_dir%Wim卷导出\Ultimate.wim

set wim_file_install=%work_dir%Wim卷合并\install.wim

imagex /export %wim_file_Homebasic% 1 %wim_file_install% "Windows 7         Homebasic"

imagex /export %wim_file_Homepremium% 1 %wim_file_install% "Windows 7         Homepremium"

imagex /export %wim_file_Professional% 1 %wim_file_install% "Windows 7         Professional"

imagex /export %wim_file_Ultimate% 1 %wim_file_install% "Windows 7 Ultimate"

@pause复制代码

合并完成后,用UltraISO、PowerISO等软件打开原ISO文件(本文举例使用“cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso”),用得到的install.wim替换原ISO里的“sources\install.wim”,保存成新ISO文件。

如果想使生成的ISO文件刻盘后可以在EFI BIOS上启动安装,还需替换光盘启动文件、增加EFI BIOS启动文件。

操作方法:

用UltraISO打开Windows 8以上系统ISO文件,保存启动文件。

2017-1-1 05:37 上传

下载附件 (52.17 KB)

提取ISO中“efi\boot”文件夹。

2017-1-1 05:37 上传

下载附件 (48.04 KB)

打开集成补丁后的ISO文件,把保存的引导文件添加进来。

2017-1-1 05:38 上传

下载附件 (54.41 KB)

把提取出来的“boot”文件夹添加到ISO文件“efi”文件夹中,保存ISO文件。

2017-1-1 05:38 上传

下载附件 (44.16 KB)

五、离线安装其它补丁

按上述方法集成补丁,用新安装文件安装系统后,仍扫描到一些补丁,这些补丁主要有几种:

必须在系统安装的补丁,如KB2533552;

不想集成的补丁;

新版.NET Framework及其补丁;

必须联网安装的补丁,如KB976932。

前三种都可以手动下载补丁,手动安装。

如果下载的是“msu”文件格式的补丁,用wusa命令安装,命令格式:

wusa [可选参数]复制代码命令举例:

wusa windows6.1-kb982018-v3-x64_7853a1c9c63611e17cd2c923704bf2e924bdfe7b.msu  /quiet /norestart复制代码

如果下载的是“cab”文件格式的补丁,用dism命令安装,命令格式:

Dism /online /add-package /PackagePath:复制代码

命令举例:

Dism /online /add-package  /PackagePath:%~dp0\windows6.1-kb2533552-x64_8cf0b38e43622766333ce70426241dc7fa996b4d.cab复制代码    可以参考“生成执行集成离线补丁的批处理文件“Win7x64_hotfix\hotfix\dism_exec.bat”的方法”一节的方法,把安装补丁的命令编成批处理文件。

以生成安装“msu”文件格式补丁包为例,生成安装补丁批处理文件的方法大致为:在补丁保存文件夹内执行

dir /b *.msu >other_hotfix.bat复制代码

打开“other_hotfix.bat”,批量替换“windows6.1-”为“wusa         windows6.1-”,批量替换“.msu”为“.msu /quiet /norestart”。

在不想安装的补丁安装命令前面添加“@REM ”。

如果补丁安装有先后顺序要求,把需要先安装的补丁的安装命令行上移。

执行安装批处理文件(此处举例的other_hotfix.bat),安装完后重新启动系统。

重启后安装最新版.NET Framework及其补丁,当前最新版.NET  Framework是4.6.2,该版本支持静默安装,安装命令为:

NDP462-KB3151800-x86-x64-AllOS-ENU.exe /q /norestart /lcid 2052复制代码

安装.NET Framework 4.6.2后,需安装ndp46-kb3205379,该补丁持静默安装,安装命令为:

ndp46-kb3205379-x64_ce1761769ac6d746e81392374e62ffc7125dabb6.exe /q /norestart  /lcid 2052复制代码

可以将这两个安装命令做成批处理文件,内容为:

@cls

cd /d "%~dp0"

start /wait NDP462-KB3151800-x86-x64-AllOS-ENU.exe /q /norestart /lcid 2052

start /wait ndp46-kb3205379-x64_ce1761769ac6d746e81392374e62ffc7125dabb6.exe /q  /norestart /lcid 2052

@pause复制代码

文中提及批处理文件下载:

链接: http://pan.baidu/s/1mi2lPGG 密码: 4yfn

相对路径“Windows 7 SP1\64位\集成截至2016.12.17补丁\集成补丁批处理文件”复制代码包含2个文件,一个只有只有批处理文件,另一个是补丁+批处理文件。下载其中一个,解压到任一分区根目录下面,按上文所述解压未集成最新补丁的系统ISO文件到响应目录,执行“Win7x64_hotfix\Hotfix_All.bat”即可完成补丁集成。如果想集成完成后休眠,该批处理文件末尾这句的注释“@REM ”删掉,即

@REM rundll32.exe powrProf.dll,SetSuspendState复制代码改为

rundll32.exe powrProf.dll,SetSuspendState复制代码

本帖所有资源下载链接:(见楼下)

本帖所有以后的所有更新放下面的2~4楼,防止编辑1楼内容后审核期间帖子不可见。

更多推荐

微软服务器离线补丁工具包,自己动手离线集成Windows 7 SP1最新补丁

本文发布于:2023-04-20 00:49:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/9238700a314724762316600e48a59bdb.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:离线   工具包   微软   自己动手   补丁

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 89429文章数
  • 22575阅读数
  • 0评论数