mmxx2013 发表于 2017-1-1 00:05

自己动手离线集成Windows 7 SP1最新补丁

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

   离线集成Windows补丁的方法很多,我这里要说的是用系统自带的dism离线集成补丁,虽然说的是Windows 7的,Windows8/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,然后查找更新。







[*]用文本捕捉软件,如TextCatch、HyperSnap6.xx版,捕捉补丁列表上的文字。




[*] 根据KB编号,用IE在http://www.catalog.update.microsoft.com/Search.aspx上搜索、下载补丁。





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



[*]把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:<install.wim文件完整路径> /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 <install.wim文件完整路径> <版本分卷索引号> <导出分卷保存完整路径>将导出分卷的命令编成批处理文件,方便以后使用。
批处理文件举例:@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:<wim文件挂载文件夹> /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:<wim文件挂载文件夹> /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,查找关键字“错误”,如果没有找到,说明所有补丁集成正常结束,如果找到“错误”关键字,看看集成哪个补丁出错,根据错误做相应的处理。


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



[*]生成执行逐一集成离线补丁的批处理文件“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”,其内容大致是这样:



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


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



[*]在不能集成、不想集成的补丁的集成命令前面加上“@REM ”将该行命令注释掉,这些补丁包括:
                不可集成的补丁:KB2533552
据说容易引起蓝屏的补丁:KB2685811、KB2685813、KB2670838(集成IE11必需)、KB3146706
遥测(搜集用户信息)补丁:KB2952664、KB3021917、KB3068708、KB3080149




四、制作安装文件   集成补丁是个漫长的过程,在我这台机子上为一个版本集成截至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文件,保存启动文件。




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




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



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



五、离线安装其它补丁按上述方法集成补丁,用新安装文件安装系统后,仍扫描到一些补丁,这些补丁主要有几种:
必须在系统安装的补丁,如KB2533552;
不想集成的补丁;
新版.NET Framework及其补丁;
必须联网安装的补丁,如KB976932。

前三种都可以手动下载补丁,手动安装。
如果下载的是“msu”文件格式的补丁,用wusa命令安装,命令格式:
wusa <msu补丁> [可选参数]命令举例:
wusa windows6.1-kb982018-v3-x64_7853a1c9c63611e17cd2c923704bf2e924bdfe7b.msu/quiet /norestart
如果下载的是“cab”文件格式的补丁,用dism命令安装,命令格式:
Dism /online /add-package /PackagePath:<cab补丁>
命令举例:
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及其补丁,当前最新版.NETFramework是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.com/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楼内容后审核期间帖子不可见。

mmxx2013 发表于 2017-1-1 10:56

本帖最后由 mmxx2013 于 2019-5-4 22:07 编辑

本帖所有资源下载链接(共享目录里有很多文件,会不定时更新,注意查看最外层的更新日志,选择需要的文件下载):

链接: https://pan.baidu.com/s/1bE25BZTIToOzfjzdxoxdpw 提取码: 7ati



本楼发布本帖的更新日志。


==========
2019.05.04
==========
1。集成截至2019.4.11补丁,集成NET Framework 4.8 Build 3761(NET Framework安装包提取自MSMG Toolkit)。
2。批处理文件改成开关选择相应功能,如集成IE11、集成补丁、集成USB 3.x驱动等。

文件信息:
(1)集成好补丁的安装文件,包含家庭基础版、家庭高级版、专业版、旗舰版、企业版,ESD压缩版,用Windows 10 1903版做启动安装外壳。
cn_windows_7_with_sp1_x64_u_7601.24411_5in1_20190504_ESD.iso ---- MD5:2C6BDD099144783E43F6EF08D5AC10F9
集成补丁Windows系统\Windows 7 SP1\64位\集成截至2019.04.11补丁
(2)补丁文件和批处理文件。可以自行导出各版本wim文件到约定位置,然后执行批处理文件自己集成,得到(1)中的文件。
集成补丁工作目录-20190504.7z ---- MD5:ADC21ADE6CC0BB378B23FCA06881E015
集成补丁Windows系统\Windows 7 SP1\Windows 7 SP1集成补丁和驱动所需文件\64位\V20190504



==========
2017.03.27
==========
1。重新用“cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso”安装旗舰版,安装IE11,安装安装KB3020369、KB3172605后查找更新。补丁集成至2017.3.24,共集成219个补丁,一个补丁通过$OEM$安装。更新文件相对路径:共享目录\64位\集成截至2017.03.24补丁。
2。集成补丁用工具和补丁更新至2017.3.24。更新文件相对路径:共享目录\Windows 7 SP1集成补丁和驱动所需文件\64位\V20170327。

==========
2017.03.07
==========
1。更新集成补丁相关批处理文件、补丁;增加集成USB3.0驱动相关文件,相对路径:共享目录\Windows 7 SP1集成补丁和驱动所需文件\64位\V20170209。

==========
2017.01.06
==========
1。增加Wim转ESD批处理文件,相对路径:共享目录\批处理文件\20170106。

==========
2017.01.01
==========
1。上传集成截至2016.12.17(实际上2016.12.17~2016.12.30无新补丁)所有可集成补丁版本,并附KB3150513外所有可离线安装补丁包(包括安装批处理文件),除极易引起蓝屏的补丁(KB2685811、KB2685813、KB3146706)可通过此补丁包安装。分Wim标准压缩版和ESD高压缩版。

2。上传集成截至2016.12.17(实际上2016.12.17~2016.12.30无新补丁)除极易引起蓝屏的补丁(KB2685811、KB2685813、KB3146706)和遥测补丁(kb2952664、kb3021917、kb3068708、kb3080149)外所有可集成补丁版本,并附KB3150513外所有可离线安装补丁包(包括安装批处理文件),除极易引起蓝屏的补丁(KB2685811、KB2685813、KB3146706)和遥测补丁(kb2952664、kb3021917、kb3068708、kb3080149)可通过此补丁包安装。分Wim标准压缩版和ESD高压缩版。

mmxx2013 发表于 2017-1-1 10:57

本帖最后由 mmxx2013 于 2017-1-6 20:46 编辑

本楼发布一楼主帖的扩展帖。

2017.1.6更新:ESD格式Windows 7安装文件的制作
==============================================================ESD格式Windows 7安装文件的制作
    集成了最新补丁的Windows 7 SP1 x64安装文件,无论是只包含一个版本的Wim安装文件,还是包含多个版本的Wim安装文件,Wim安装文件加上原光盘上其它文件的总大小都超过了一张DVD-5数据光盘的容量,要想把这些集成了最新补丁的系统安装文件烧录到一张DVD-5光盘上,几乎不可能,即使超刻可以勉强装得下,也不安全。

    默认使用LZMS固实压缩的ESD格式文件有比Wim格式文件压缩比更大、文件更小的特点,网上已经有很多高手制作的使用ESD格式文件作为安装文件的Windows 7 ISO安装文件,有一部分文件大小只有2GB多一点,这为把集成了最新补丁的Windows 7 安装文件控制在一张DVD-5光盘容量以下提供了可能。


一、Wim文件转ESD文件    网上流传的Wim文件转ESD文件的方法主要有三种:

[*]系统自带dism使用“dism /export-image”命令转换。
[*]dism++转换。
[*]使用第三方软件wimlib-imagex转换(ESD2WIM-WIM2ESD这个工具就是用“wimlib-imagex+批处理文件”做的)。
        wimlib-imagex下载地址:https://www.wimlib.net
    上述三种方法,第一种是教程最多的, 我搜了很多教程,不是只介绍名就是说转换失败的,没找到转换成功后介绍的。我按教程上的命令转换,无论是只有一个版本的Wim文件还是含有多个版本的Wim文件,无论是微软原版ISO里的Wim文件还是集成补丁后的Wim文件,用上述三种方法转换均失败,都是转换到百分之九十几的时候失败,其中dism和dism++直接崩溃,wimlib-imagex提示“Exiting with error code 28:The SHA-1 message digest of a WIM resource did not match the expected value.”。


    经过多次尝试,终于找到可以把 把Wim文件转换为ESD文件的方法。方法主要有两种:用dism++挂载另存法;先挂载原Wim文件,再用dism捕获挂载文件夹为新Wim文件,再把新Wim文件转换为ESD文件。两种转换方法简介如下。



[*]用dism++挂载另存法先捕获再转换
       
[*]                先挂载第一个版本,可以挂载只有一个版本的Wim文件,也可以挂载包含多个版本的Wim文件的其中一个版本。
                               


[*]然后另存映像,文件名:install.esd,然后卸载映像。
               
               
               
               
               
[*]再挂载下一个版本,然后再另存映像,另存位置和文件名跟上一步一样。
               
               
               
               
               
               
               
               
               
[*]                再挂载、另存下一个版本知道挂载另存完所有版本。操作完成后,这个install.esd里就包含了所有挂载另存的版本了,而且文件体积很小。
               
               
                用wimlib-imagex查看install.esd信息,其压缩方式为LZMS,字典大小=128KB,文件大小约2.3GB,远比原Wim文件小。wimlib-imagex显示信息不支持中文文件名和路径。
               

[*]先捕获再转换(Windows 7的dism不支持这种方式,以下操作在Windows 10下完成)
       

[*]先挂载原Wim文件。可以挂载只有一个版本的Wim文件,也可以挂载包含多个版本的Wim文件的其中一个版本。可以用dism挂载,也可以用dism++挂载。
                               
[*]用dism捕获挂载目录为新Wim文件。命令格式为:
dism /capture-image /imagefile:<目标Wim文件>
                /capturedir:<待捕获目录>

                如:
dism /capture-image /imagefile:F:\Capture_Dir\Homebasic_capture.wim
                /scratchdir:F:\Temp /capturedir:F:\WimFile_Mount_Dir /name:"Windows 7
                Homebasic" /description:"Windows 7 Homebasic"
[*]卸载映像,不保存。
               
[*]                重复上述步骤,依次捕获所有版本为新Wim文件。新捕获的Wim文件没有原版Wim文件信息中的“显示名称”、“显示说明”和“映像标志”,可以用dism++添加。
               
               
               
               
               
[*]                然后把捕获的Wim文件转换为ESD文件。这一步可以用dism、dism++或wimlib-imagex实现。dism实现最好逐个Wim文件导出ESD文件,用dism++或wimlib-imagex实现最好先把捕获的Wim文件合并,然后转换合并文件为ESD文件。经测试,wimlib-imagex转换合并的Wim文件效率最高,压缩比最大。

[*]方式1:dism逐个Wim文件导出到install.esd,命令格式:
dism /export-image /sourceimagefile:<源wim文件1> /sourceindex:1
                        /destinationimagefile:<目标ESD文件> /compress:recovery /checkintegrity

                        dism /export-image /sourceimagefile:<源wim文件2> /sourceindex:1
                        /destinationimagefile:<目标ESD文件> /compress:recovery /checkintegrity

    ……    ……

                        dism /export-image /sourceimagefile:<源wim文件n> /sourceindex:1
                        /destinationimagefile:<目标ESD文件> /compress:recovery /checkintegrity

                        如:
dism /export-image
                        /sourceimagefile:F:\Capture_Dir\Homebasic_capture.wim /sourceindex:1
                        /destinationimagefile:F:\Win7x64\ESD卷合并\install.esd
                        /compress:recovery /checkintegrity

                        dism /export-image
                        /sourceimagefile:F:\Capture_Dir\HomePremium_capture.wim
                        /sourceindex:1 /destinationimagefile:F:\Win7x64\ESD卷合并\install.esd
                        /compress:recovery /checkintegrity

                        dism /export-image
                        /sourceimagefile:F:\Capture_Dir\Professional_capture.wim
                        /sourceindex:1 /destinationimagefile:F:\Win7x64\ESD卷合并\install.esd
                        /compress:recovery /checkintegrity

                        dism /export-image
                        /sourceimagefile:F:\Capture_Dir\Ultimate_capture.wim /sourceindex:1
                        /destinationimagefile:F:\Win7x64\ESD卷合并\install.esd
                        /compress:recovery /checkintegrity

                        dism /export-image
                        /sourceimagefile:F:\Capture_Dir\Enterprise_capture.wim
                        /sourceindex:1 /destinationimagefile:F:\Win7x64\ESD卷合并\install.esd
                        /compress:recovery /checkintegrity
                       
                        转换好的ESD文件:
                       
[*]方式2:先把各个捕获的Wim文件合并,然后用dism++或wimlib-imagex把合并的Wim文件转换为ESD文件。
                       
                        dism合并Wim文件命令:
dism /export-image /sourceimagefile:<源wim文件1> /sourceindex:1
                        /destinationimagefile:<目标Wim文件> /compress:recovery /checkintegrity

                        dism /export-image /sourceimagefile:<源wim文件2> /sourceindex:1
                        /destinationimagefile:<目标Wim文件> /compress:recovery /checkintegrity

    ……    ……

                        dism /export-image /sourceimagefile:<源wim文件n> /sourceindex:1
                        /destinationimagefile:<目标Wim文件> /compress:recovery /checkintegrity

                        如:
dism /export-image
                        /sourceimagefile:F:\Capture_Dir\Homebasic_capture.wim /sourceindex:1
                        /destinationimagefile:F:\Win7x64\Wim卷合并\install.wim

                        dism /export-image
                        /sourceimagefile:F:\Capture_Dir\HomePremium_capture.wim
                        /sourceindex:1 /destinationimagefile:F:\Win7x64\Wim卷合并\install.wim
                       

                        dism /export-image
                        /sourceimagefile:F:\Capture_Dir\Professional_capture.wim
                        /sourceindex:1 /destinationimagefile:F:\Win7x64\Wim卷合并\install.wim

                        dism /export-image
                        /sourceimagefile:F:\Capture_Dir\Ultimate_capture.wim /sourceindex:1
                        /destinationimagefile:F:\Win7x64\Wim卷合并\install.wim

                        dism /export-image
                        /sourceimagefile:F:\Capture_Dir\Enterprise_capture.wim
                        /sourceindex:1 /destinationimagefile:F:\Win7x64\Wim卷合并\install.wim
                        方式1:用dism++把合并的Wim文件转换为ESD文件。
                       
                       
                       
                       
                       
                       
                       
                       
                        方式2:用wimlib-imagex把合并的Wim文件转换为ESD文件,命令格式如下:
wimlib-imagex export <源Wim文件> all <目标ESD文件> [压缩参数]
                        如:
wimlib-imagex export F:\Win7x64\Wim卷合并\install.wim all
                        F:\Win7x64\ESD卷合并\install.esd --solid --compress=LZMS
                       
二、制作支持EFI BIOS启动的ISO文件
    用上述方法做出的install.esd替换Windows 7光盘“sources\install.wim”并不能从光盘安装,也不能将光盘文件写入U盘从U盘启动安装,只能在PE下用高版本的dism或者dism++、 WinntSetup之类的第三方软件安装,要能从光盘安装且支持EFI BIOS下光盘启动安装,最简单的办法是,用Windows 10批量授权版的ISO文件实现(用其它版本会出现序列号输入界面)。

   复制Windows 10批量授权版的ISO文件,如SW_DVD5_Win_Pro_10_1607_64BIT_ChnSimp_MLF_X21-07252.ISO,到任意位置,保留ISO内以下文件:

\autorun.inf

\bootmgr

\bootmgr.efi

\setup.exe

\sources\boot.wim

\sources\ei.cfg

\sources\ei.setup.exe
编辑“\sources\ei.cfg”,只保留以下内容:


Volume





1
编辑光盘卷标为“GSP1RMCULXFRER_CN_DVD”。


把Windows 7 SP1原版ISO文件内其它文件除跟上述文件一样的文件和“\sources\install.wim”外其它文件复制到Windows 10 ISO文件内,再把上面制作的install.esd复制到ISO内“sources”文件夹内,如果install.esd内包含了企业版,再把原企业版ISO里的“\sources\install_Windows 7 ENTERPRISE.clg”复制到新ISO文件“sources”文件夹内,把新ISO文件改名为自己喜欢的其它名字。



用虚拟机测试下制作的ISO文件有没有问题,BIOS类型选择“EFI BIOS”。经测试,这个ISO文件在EFI BIOS上光盘启动安装是没有问题的,只是因为替换了部分文件,启动安装界面跟Windows 10的启动安装界面一样。















mmxx2013 发表于 2017-1-1 17:37

本帖最后由 mmxx2013 于 2017-3-7 19:43 编辑

集成USB 3.0驱动
一、使用dism离线集成USB 3.0驱动
dism离线集成驱动的命令格式有两种:
dism.exe /image:<wim文件挂载文件夹> /add-driver /driver:<驱动程序文件夹>如:
dism.exe /image:F:\WimFile_Mount_Dir /add-driver /driver:F:\USB3.0_Driver\VIA
dism.exe /image:<wim文件挂载文件夹> /add-driver /driver:<驱动程序文件夹\设备信息文件.inf>如:
dism.exe /image:F:\WimFile_Mount_Dir /add-driver /driver:F:\USB3.0_Driver\VIA\WIN7\x64\ViaHub3.inf前一种方式看似简单,但是,这种方式会把整个文件夹里的驱动程序都集成进去,包括不适合的驱动程序,如当前为64位系统集成驱动但驱动程序文件夹里包含32位系统驱动程序,因此,我喜欢用第二种。
一般集成USB3.0包括两步:集成USB 3.0 HUB驱动;集成USB 3.0 XHC驱动。Intel的USB 3.0设备还需要集成HCSwitch驱动,VIA的还需要集成USB Mass Storage Device驱动。
比如集成VIA USB 3.0驱动:

dism.exe /image:F:\WimFile_Mount_Dir /add-driver /driver:F:\USB3.0_Driver\VIA\UAS_Client\x64\vusbstor.inf
dism.exe /image:F:\WimFile_Mount_Dir /add-driver /driver:F:\USB3.0_Driver\VIA\WIN7\x64\ViaHub3.inf
dism.exe /image:F:\WimFile_Mount_Dir /add-driver /driver:F:\USB3.0_Driver\VIA\WIN7\x64\xhcdrv.inf搜集各厂家USB 3.0设备驱动程序放到任意文件夹,如:F:\USB3.0_Driver,各厂家驱动程序放在不同的文件夹中,用批处理文件依次执行dism集成驱动命令。USB 3.0驱动程序存放位置如下图。

https://bbs.pcbeta.com/forum.php?mod=image&aid=3949702&size=300x300&key=64af794acbd68166&nocache=yes&type=fixnone

使用2个批处理文件实现集成USB 3.0驱动:
USB30_exec.bat——挂载wim文件,集成USB 3.0驱动程序。
USB30_All.bat——调用USB30_exec.bat,为多个版本Windows 7集成USB 3.0驱动程序。

两个批处理文件内容如下:

USB30_All.bat内容:

@cls
set work_dir=%~dp0%
set wim_file_dir="%~d0%\Win7x64\Wim卷导出"
set mount_dir="%~d0%\WimFile_Mount_Dir"
set usb30drv_dir=%~d0%\USB3.0_Driver\
set log_dir=%~dp0Log\

@REM 选择dism版本(Windows 7下指定dism版本为Windows 10 ADK的dism)
@ver | find "6.1." > NUL && goto dism_10
set dism_exe="dism.exe"
goto dism_set_end

:dism_10
@REM set dism_exe="dism.exe"
set dism_exe="%~d0%\Deployment Tools\amd64\DISM\dism.exe"
:dism_set_end


@REM 切换到当前目录(使用管理员权限双击批处理文件执行时必需)
cd /d %work_dir%
if not exist %mount_dir% md %mount_dir%
if not exist %log_dir% md %log_dir%

@REM 测试挂载目录是不是空的
for /f "tokens=1 delims=个目录" %%a in ('dir /a "%mount_dir%"^|findstr "个目录"') do set a=%%a
for /f "tokens=1 delims=个文件" %%b in ('dir /a "%mount_dir%"^|findstr "个文件"') do set b=%%b
if "%b: =%"=="0" if "%a: =%"=="2" goto Mount_Dir_OK
echo 挂载目录 %mount_dir% 不空。
goto hotfix_end
:Mount_Dir_OK

@REM 去除wim文件只读属性
attrib -r %wim_file_dir%\*.wim

@REM 给家庭基础版集成补丁/驱动
set logfile=USB30_Homebasic
set wim_file=%wim_file_dir%\Homebasic.wim
if exist %log_dir%%logfile%.txt del %log_dir%%logfile%.txt
if exist %wim_file% goto Homebasic_Start
echo 找不到%wim_file%>>%log_dir%%logfile%.txt
goto Homebasic_End

:Homebasic_Start
echo %time%>>%log_dir%%logfile%.txt
call USB30_exec.bat
echo %time%>>%log_dir%%logfile%.txt
:Homebasic_End


@REM 给家庭高级版集成补丁/驱动
set logfile=USB30_Homepremium
set wim_file=%wim_file_dir%\Homepremium.wim
if exist %log_dir%%logfile%.txt del %log_dir%%logfile%.txt
if exist %wim_file% goto Homepremium_Start
echo 找不到%wim_file%>>%log_dir%%logfile%.txt
goto Homepremium_End

:Homepremium_Start
echo %time%>>%log_dir%%logfile%.txt
call USB30_exec.bat
echo %time%>>%log_dir%%logfile%.txt
:Homepremium_End


@REM 给专业版集成补丁/驱动
set logfile=USB30_Professional
set wim_file=%wim_file_dir%\Professional.wim
if exist %log_dir%%logfile%.txt del %log_dir%%logfile%.txt
if exist %wim_file% goto Professional_Start
echo 找不到%wim_file%>>%log_dir%%logfile%.txt
goto Professional_End

:Professional_Start
echo %time%>>%log_dir%%logfile%.txt
call USB30_exec.bat
echo %time%>>%log_dir%%logfile%.txt
:Professional_End


@REM 给旗舰版集成补丁/驱动
set logfile=USB30_Ultimate
set wim_file=%wim_file_dir%\Ultimate.wim
if exist %log_dir%%logfile%.txt del %log_dir%%logfile%.txt
if exist %wim_file% goto Ultimate_Start
echo 找不到%wim_file%>>%log_dir%%logfile%.txt
goto Ultimate_End

:Ultimate_Start
echo %time%>>%log_dir%%logfile%.txt
call USB30_exec.bat
echo %time%>>%log_dir%%logfile%.txt
:Ultimate_End


@REM 给企业版集成补丁/驱动
set logfile=USB30_Enterprise
set wim_file=%wim_file_dir%\Enterprise.wim
if exist %log_dir%%logfile%.txt del %log_dir%%logfile%.txt
if exist %wim_file% goto Enterprise_Start
echo 找不到%wim_file%>>%log_dir%%logfile%.txt
goto Enterprise_End

:Enterprise_Start
echo %time%>>%log_dir%%logfile%.txt
call USB30_exec.bat
echo %time%>>%log_dir%%logfile%.txt
:Enterprise_End


:hotfix_end
@REM 集成完成后休眠
@REM rundll32.exe powrProf.dll,SetSuspendState
@pause
USB30_exec.bat内容:

@echo 准备挂载映像

%dism_exe% /Mount-Wim /WimFile:%wim_file% /Index:1 /MountDir:%mount_dir% >%log_dir%%logfile%_mount_temp.txt
:mount_wimfile_wait
find "操作成功完成" %log_dir%%logfile%_mount_temp.txt && goto mount_wimfile_ok
find "错误" %log_dir%%logfile%_mount_temp.txt && goto unmount_wimfile
goto mount_wimfile_wait
:mount_wimfile_ok

@echo 开始给映像集成补丁/驱动

@if exist %log_dir%%logfile%_driver.txt del %log_dir%%logfile%_driver.txt

@REM NVMe设备支持补丁
@REM %dism_exe% /image:%mount_dir% /Add-Package /PackagePath:%usb30drv_dir%NVMe_hotfix >>%log_dir%%logfile%_driver.txt

@REM AMD USB 3.0驱动
%dism_exe% /image:%mount_dir% /add-driver /driver:%usb30drv_dir%AMD\amdhub30.inf >>%log_dir%%logfile%_driver.txt
%dism_exe% /image:%mount_dir% /add-driver /driver:%usb30drv_dir%AMD\amdxhc.inf >>%log_dir%%logfile%_driver.txt

@REM Asmedia(祥硕)ASM1041/ASM1042/ASM1042A/ASM1042AE/ASM1142 USB 3.0驱动
%dism_exe% /image:%mount_dir% /add-driver /driver:%usb30drv_dir%Asmedia\asmthub3.inf >>%log_dir%%logfile%_driver.txt
%dism_exe% /image:%mount_dir% /add-driver /driver:%usb30drv_dir%Asmedia\asmtxhci.inf >>%log_dir%%logfile%_driver.txt

@REM Intel 7系列主板USB 3.0驱动,不可与8/9/100系列主板USB 3.0驱动一起集成
@REM
%dism_exe% /image:%mount_dir% /add-driver
/driver:%usb30drv_dir%Intel_7\HCSwitch\x64\iusb3hcs.inf
>>%log_dir%%logfile%_driver.txt
@REM %dism_exe%
/image:%mount_dir% /add-driver
/driver:%usb30drv_dir%Intel_7\Win7\x64\iusb3hub.inf
>>%log_dir%%logfile%_driver.txt
@REM %dism_exe%
/image:%mount_dir% /add-driver
/driver:%usb30drv_dir%Intel_7\Win7\x64\iusb3xhc.inf
>>%log_dir%%logfile%_driver.txt

@REM Intel 8/9/100系列主板USB 3.0驱动,不可与7系列主板USB 3.0驱动一起集成
%dism_exe%
/image:%mount_dir% /add-driver
/driver:%usb30drv_dir%Intel_8_9_100\HCSwitch\x64\iusb3hcs.inf
>>%log_dir%%logfile%_driver.txt
@REM %dism_exe%
/image:%mount_dir% /add-driver
/driver:%usb30drv_dir%Intel_8_9_100\Win7\x64\iusb3hub.inf
>>%log_dir%%logfile%_driver.txt
@REM %dism_exe%
/image:%mount_dir% /add-driver
/driver:%usb30drv_dir%Intel_8_9_100\Win7\x64\iusb3xhc.inf
>>%log_dir%%logfile%_driver.txt

@REM NEC/瑞萨 μPD720200/μPD720200a USB 3.0驱动
%dism_exe% /image:%mount_dir% /add-driver /driver:%usb30drv_dir%PD720200\nusb3hub.inf >>%log_dir%%logfile%_driver.txt
%dism_exe% /image:%mount_dir% /add-driver /driver:%usb30drv_dir%PD720200\nusb3xhc.inf >>%log_dir%%logfile%_driver.txt

@REM NEC/瑞萨 720201/μPD720202 USB 3.0驱动
%dism_exe% /image:%mount_dir% /add-driver /driver:%usb30drv_dir%PD720201\rusb3hub.inf >>%log_dir%%logfile%_driver.txt
%dism_exe% /image:%mount_dir% /add-driver /driver:%usb30drv_dir%PD720201\rusb3xhc.inf >>%log_dir%%logfile%_driver.txt

@REM VIA(威盛)VL800/801/805/806 USB 3.0驱动
%dism_exe%
/image:%mount_dir% /add-driver
/driver:%usb30drv_dir%VIA\UAS_Client\x64\vusbstor.inf
>>%log_dir%%logfile%_driver.txt
%dism_exe% /image:%mount_dir% /add-driver /driver:%usb30drv_dir%VIA\WIN7\x64\ViaHub3.inf >>%log_dir%%logfile%_driver.txt
%dism_exe% /image:%mount_dir% /add-driver /driver:%usb30drv_dir%VIA\WIN7\x64\xhcdrv.inf >>%log_dir%%logfile%_driver.txt

@echo 集成补丁/驱动完成。

:unmount_wimfile
%dism_exe% /UnMount-Wim /MountDir:%mount_dir% /Commit >%log_dir%%logfile%_unmount_temp.txt
:unmount_wimfile_wait
find "操作成功完成" %log_dir%%logfile%_unmount_temp.txt && goto unmount_wimfile_ok
find "错误" %log_dir%%logfile%_unmount_temp.txt && goto unmount_wimfile_err
goto unmount_wimfile_wait
:unmount_wimfile_ok
goto hotfix_exit

@REM 出错
:unmount_wimfile_err
@echo 卸载映像文件出错。

@REM 结束
:hotfix_exit特别说明,上述批处理文件中集成Intel USB 3.0驱动程序部分仅仅集成了HCSwitch驱动是为了在安装文件中同时放入Intel 7系列芯片组(如Z77)和8系列(如HM87)及之后的芯片组、CPU USB 3.0驱动。如果同时集成两种驱动,则在Intel 7系列芯片组上安装系统会蓝屏,如果集成了后者,则在Intel 7系列芯片组上安装USB 3.0驱动时会蓝屏。离线集成HCSwitch驱动不是必需的,这么做仅为了实现下面介绍的自动安装USB 3.0驱动后不会提示重启。
二、使用$OEM$自动安装驱动上文说过,Intel USB 3.0驱动有两种,分别驱动不同时期的USB 3.0设备,这两种驱动不能同时集成,但可以使用"$OEM$文件夹"实现安装过程中根据不同的USB设备安装不同的驱动。
"$OEM$文件夹"的作用大家自行百度,我这里只简要说一下:在安装文件"sources"文件夹下增加"$oem$\$$\Setup\Scripts"文件夹,则"Setup\Scripts"在安装开始后被复制到"\Windows"文件夹下,如果"Scripts"文件夹中包含"OOBE.cmd",则在该批处理文件会在OOBE阶段被执行,如果包含"SetupComplete.cmd",则该批处理文件会在第一次进入桌面前被执行。安装完成后,"\Windows\Setup\Scripts"不会被自动删除,需自己增加删除命令删除。
实现思路:用DevCon.exe这个工具枚举设备硬件ID,查找Intel USB 3.0设备硬件ID关键字,如果找到,则安装相应驱动。
知道设备类型后,安装驱动的方法有以下几种:
1。安装完整后第一次进入桌面前,使用Intel USB 3.0驱动包安装程序Setup.exe加"-s"参数静默安装,命令为:setup.exe -s。这种方式安装完成后会提示需要重启。批处理命令写入SetupComplete.cmd。
2。OOBE阶段,用dpinst安装USB 3.0驱动,命令为:dpinst-amd64.exe /PATH <驱动程序文件夹> /F /Q /LM /A /SA。批处理命令写入OOBE.cmd。
3。OOBE阶段,用Devcon.exe加"install"参数安装USB 3.0驱动。这种方式需要知道设备硬件ID。批处理命令写入OOBE.cmd。
个人觉得第2种方式比较简单,使用这种方式安装驱动,“驱动程序文件夹”中最好只保留需要安装的驱动程序。下面就以这种方式为例,简要介绍如何识别设备和安装驱动程序。
第一步:用DevCon.exe枚举设备硬件ID,结果定向到文本文件,命令如下:

DevCon hwids * >hwids.txt第二步:在驱动程序".inf"文件中查找USB设备硬件ID关键字,再在hwids.txt查找这个关键字,如果找到,则安装相应驱动程序。以Intel 7系列芯片USB 3.0驱动程序为例,解压Intel USB 3.0驱动程序到"$oem$\$$\Setup\Scripts\Intel_7"文件夹,打开"Drivers\Win7\x64"文件夹下的"iusb3xhc.inf",查找硬件ID,结果如下图:
https://bbs.pcbeta.com/forum.php?mod=image&aid=3949703&size=300x300&key=0d7c0f39e375659b&nocache=yes&type=fixnone
在hwids.txt中查找“PCI\VEN_8086&DEV_1E31”,如果找到,则主板上有Intel 7系列芯片USB 3.0设备,需安装Intel 7系列芯片USB 3.0驱动程序。批处理命令如下:

@REM 7系列USB 3.0设备硬件ID
find "PCI\VEN_8086&DEV_1E31" hwids.txt && goto Intel_7_USB3.0
……
:Intel_7_USB3.0
@REM Intel 7系列主板USB 3.0驱动,不可与8/9/100系列主板USB 3.0驱动一起集成
dpinst-amd64.exe /PATH %SystemRoot%\Setup\Scripts\Intel_7\Win7\x64 /F /Q /LM /A /SA
goto Intel_USB3.0_END
……按上述方法识别、安装Intel 8/9/100系列主板USB 3.0驱动程序,这一系列的USB设备驱动共用,所以,inf文件中的硬件ID比较多,部分硬件ID如下图:
https://bbs.pcbeta.com/forum.php?mod=image&aid=3949705&size=300x300&key=7883d0ac3f4136c4&nocache=yes&type=fixnone

完整的批处理文件如下:
OOBE.cmd

cd /d %SystemRoot%\Setup\Scripts
DevCon hwids * >hwids.txt

@REM 7系列USB 3.0设备硬件ID
find "PCI\VEN_8086&DEV_1E31" hwids.txt && goto Intel_7_USB3.0

@REM 8/9/100系列USB 3.0设备硬件ID
find "PCI\VEN_8086&DEV_8C31" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_8CB1" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_8D31" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_9C31" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_9CB1" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_A12F" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_A22F" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_9D2F" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_A2AF" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_0F35" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_22B5" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_15B5" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_15B6" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_15C1" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_15DB" hwids.txt && goto Intel_8_USB3.0
find "PCI\VEN_8086&DEV_15D4" hwids.txt && goto Intel_8_USB3.0
goto Intel_USB3.0_END

:Intel_7_USB3.0
@REM Intel 7系列主板USB 3.0驱动,不可与8/9/100系列主板USB 3.0驱动一起集成
@REM dpinst-amd64.exe /PATH %SystemRoot%\Setup\Scripts\Intel_7\HCSwitch\x64 /F /Q /LM /A /SA
dpinst-amd64.exe /PATH %SystemRoot%\Setup\Scripts\Intel_7\Win7\x64 /F /Q /LM /A /SA
goto Intel_USB3.0_END

:Intel_8_USB3.0
@REM Intel 8/9/100系列主板USB 3.0驱动,不可与7系列主板USB 3.0驱动一起集成
@REM dpinst-amd64.exe /PATH %SystemRoot%\Setup\Scripts\Intel_8\HCSwitch\x64 /F /Q /LM /A /SA
dpinst-amd64.exe /PATH %SystemRoot%\Setup\Scripts\Intel_8\Win7\x64 /F /Q /LM /A /SA
@REM goto Intel_USB3.0_END

:Intel_USB3.0_END
attrib -r *.*
rd /s /q Intel_7
rd /s /q Intel_8
del hwids.txt
del DevCon.exe
del dpinst-amd64.exe
del OOBE.cmd在SetupComplete.cmd中增加删除"Scripts"文件夹命令。

SetupComplete.cmd

cd /d %SystemRoot%\Setup
rd /s /q Scripts
按上述方法集成USB 3.0驱动,分别在Intel Z77芯片组和 HM87芯片组主板上成功识别安装Intel USB 3.0驱动。
https://bbs.pcbeta.com/forum.php?mod=image&aid=3949706&size=300x300&key=153b73e6c71c5e52&nocache=yes&type=fixnone

https://bbs.pcbeta.com/forum.php?mod=image&aid=3949707&size=300x300&key=b480869886bc994a&nocache=yes&type=fixnone

本文提及相关文件下载(相对路径,地址见1楼):
Windows 7 SP1\Windows 7 SP1集成补丁和驱动所需文件\64位\V20170209

粽子 发表于 2017-1-1 18:36

你的已安装的补丁列表里有几个补丁啊

mmxx2013 发表于 2017-1-1 19:12

粽子 发表于 2017-1-1 18:36 https://www.pcbeta.com/static/image/common/back.gif
你的已安装的补丁列表里有几个补丁啊

版本不同,补丁个数也不同,旗舰版可以集成184个(实际应该可以集成184+3+4=191个,没有集成易引起蓝屏的补丁KB2685811、KB2685813、KB3146706和遥测补丁KB2952664、KB3021917、KB3068708、KB3080149)。
装好系统后离线安装其余补丁,安装.NET Framework 4.6.2及其补丁kb3205379后,补丁总数是1+224个(不安装KB3150513,据说这个补丁是用来屏蔽之前的提示升级到Win10的补丁)。

sanshidz 发表于 2017-1-1 20:39

粽子 发表于 2017-1-1 18:36 https://www.pcbeta.com/static/image/common/back.gif
你的已安装的补丁列表里有几个补丁啊

E:\Win7X64 的目录

                     

                     
Windows6.1-KB2533552-x64.cab
Windows6.1-KB3177467-x64.cab   
               2 个文件   18,875,996 字节

E:\Win7X64\hotfix 的目录

KB2639308_amd64.CAB               KB2670838_amd64.CAB
Windows6.1-KB2729094-v2-x64.cab   Windows6.1-KB2786081-x64.cab
Windows6.1-KB2834140-v2-x64.cab   
               5 个文件   19,329,997 字节

E:\Win7X64\ie11 的目录

IE11-neutral.Downloaded.cab    IE11_amd64_zh-CN.cab
Windows6.3-KB2849696-x86.cab   Windows6.3-KB2849697-x86.cab
               4 个文件   61,029,447 字节

E:\Win7X64\Update 的目录

Windows6.1-KB2479943-x64.cab       Windows6.1-KB2491683-x64.cab
Windows6.1-KB2506014-x64.cab       Windows6.1-KB2506212-x64.cab
Windows6.1-KB2506928-v2-x64.cab    Windows6.1-KB2509553-x64.cab
Windows6.1-KB2545698-x64.cab       Windows6.1-KB2547666-x64.cab
Windows6.1-KB2552343-x64.cab       Windows6.1-KB2560656-x64.cab
Windows6.1-KB2563227-x64.cab       Windows6.1-KB2564958-x64.cab
Windows6.1-KB2579686-x64.cab       Windows6.1-KB2603229-x64.cab
Windows6.1-KB2604115-x64.cab       Windows6.1-KB2620704-x64.cab
Windows6.1-KB2621440-x64.cab       Windows6.1-KB2631813-x64.cab
Windows6.1-KB2640148-v2-x64.cab    Windows6.1-KB2654428-x64.cab
Windows6.1-KB2660075-x64.cab       Windows6.1-KB2667402-v2-x64.cab
Windows6.1-KB2676562-x64.cab       windows6.1-kb2685811-x64.cab
windows6.1-kb2685813-x64.cab       Windows6.1-KB2690533-x64.cab
Windows6.1-KB2698365-x64.cab       Windows6.1-KB2705219-v2-x64.cab
Windows6.1-KB2719857-x64.cab       Windows6.1-KB2726535-x64.cab
Windows6.1-KB2727528-x64.cab       Windows6.1-KB2732059-v5-x64.cab
Windows6.1-KB2732487-v2-x64.cab    Windows6.1-KB2736422-x64.cab
Windows6.1-KB2742599-x64.cab       Windows6.1-KB2750841-x64.cab
Windows6.1-KB2761217-x64.cab       Windows6.1-KB2763523-x64.cab
Windows6.1-KB2770660-x64.cab       Windows6.1-KB2773072-x64.cab
Windows6.1-KB2791765-x64.cab       Windows6.1-KB2799926-x64.cab
Windows6.1-KB2800095-v2-x64.cab    Windows6.1-KB2807986-x64.cab
Windows6.1-KB2808679-x64.cab       Windows6.1-KB2813430-x64.cab
Windows6.1-KB2840631-x64.cab       Windows6.1-KB2843630-v3-x64.cab
Windows6.1-KB2847927-x64.cab       Windows6.1-KB2852386-x64.cab
Windows6.1-KB2853952-x64.cab       Windows6.1-KB2861698-x64.cab
Windows6.1-KB2862152-x64.cab       Windows6.1-KB2862330-v2-x64.cab
Windows6.1-KB2862335-x64.cab       Windows6.1-KB2864202-x64.cab
Windows6.1-KB2868038-x64.cab       Windows6.1-KB2868116-x64.cab
Windows6.1-KB2871997-v2-x64.cab    Windows6.1-KB2884256-x64.cab
Windows6.1-KB2891804-x64.cab       Windows6.1-KB2892074-x64.cab
Windows6.1-KB2893294-x64.cab       Windows6.1-KB2893519-x64.cab
Windows6.1-KB2894844-x64.cab       windows6.1-kb2900986-x64.cab
Windows6.1-KB2908783-x64.cab       Windows6.1-KB2911501-x64.cab
Windows6.1-KB2912390-x64.cab       Windows6.1-KB2918077-x64.cab
Windows6.1-KB2919469-x64.cab       Windows6.1-KB2929733-x64.cab
Windows6.1-KB2931356-x64.cab       windows6.1-kb2937610-x64.cab
windows6.1-kb2943357-x64.cab       windows6.1-kb2952664-v20-x64.cab
Windows6.1-KB2966583-x64.cab       Windows6.1-KB2968294-x64.cab
Windows6.1-KB2970228-x64.cab       Windows6.1-KB2972100-x64.cab
Windows6.1-KB2972211-x64.cab       Windows6.1-KB2973112-x64.cab
Windows6.1-KB2973201-x64.cab       Windows6.1-KB2973351-x64.cab
Windows6.1-KB2977292-x64.cab       Windows6.1-KB2978120-x64.cab
Windows6.1-KB2978742-x64.cab       Windows6.1-KB2984972-x64.cab
Windows6.1-KB2985461-x64.cab       Windows6.1-KB2991963-x64.cab
Windows6.1-KB2992611-x64.cab       Windows6.1-KB3003743-x64.cab
Windows6.1-KB3004361-x64.cab       Windows6.1-KB3004375-v3-x64.cab
Windows6.1-KB3006121-x64.cab       windows6.1-kb3006137-x64.cab
Windows6.1-KB3010788-x64.cab       Windows6.1-KB3011780-x64.cab
Windows6.1-KB3013531-v2-x64.cab    Windows6.1-KB3019978-x64.cab
Windows6.1-KB3020369-x64.cab       Windows6.1-KB3020370-x64.cab
Windows6.1-KB3021674-x64.cab       Windows6.1-KB3021917-x64.cab
Windows6.1-KB3022777-x64.cab       windows6.1-kb3023215-x64.cab
Windows6.1-KB3030377-x64.cab       Windows6.1-KB3035126-x64.cab
windows6.1-kb3037574-x64.cab       Windows6.1-KB3042553-x64.cab
Windows6.1-KB3045685-x64.cab       Windows6.1-KB3046017-x64.cab
windows6.1-kb3046269-x64.cab       Windows6.1-KB3054476-x64.cab
Windows6.1-KB3055642-x64.cab       Windows6.1-KB3059317-x64.cab
Windows6.1-KB3060716-x64.cab       Windows6.1-KB3067903-x64.cab
Windows6.1-KB3067904-x64.cab       Windows6.1-KB3068708-x64.cab
Windows6.1-KB3071756-x64.cab       windows6.1-kb3072305-x64.cab
windows6.1-kb3074543-x64.cab       Windows6.1-KB3075220-x64.cab
Windows6.1-KB3078601-x64.cab       Windows6.1-KB3078667-x64.cab
Windows6.1-KB3080149-x64.cab       Windows6.1-KB3084135-x64.cab
Windows6.1-KB3086255-x64.cab       Windows6.1-KB3092601-x64.cab
Windows6.1-KB3092627-x64.cab       Windows6.1-KB3093513-x64.cab
windows6.1-kb3097989-x64.cab       Windows6.1-KB3101722-x64.cab
Windows6.1-KB3107998-x64.cab       Windows6.1-KB3108371-x64.cab
Windows6.1-KB3108381-x64.cab       Windows6.1-KB3108664-x64.cab
Windows6.1-KB3109103-x64.cab       Windows6.1-KB3109560-x64.cab
Windows6.1-KB3110329-x64.cab       Windows6.1-KB3118401-x64.cab
Windows6.1-KB3121255-x64.cab       windows6.1-kb3122648-x64.cab
windows6.1-kb3123479-x64.cab       Windows6.1-KB3126587-x64.cab
windows6.1-kb3127220-x64.cab       Windows6.1-KB3133977-x64.cab
windows6.1-kb3135983-x64.cab       Windows6.1-KB3137061-x64.cab
Windows6.1-KB3138378-x64.cab       Windows6.1-KB3138612-x64.cab
Windows6.1-KB3138901-x64.cab       Windows6.1-KB3138910-x64.cab
Windows6.1-KB3139398-x64.cab       Windows6.1-KB3139914-x64.cab
Windows6.1-KB3140245-x64.cab       windows6.1-kb3142024-x64.cab
Windows6.1-KB3146706-x64.cab       Windows6.1-KB3146963-x64.cab
Windows6.1-KB3147071-x64.cab       Windows6.1-KB3149090-x64.cab
Windows6.1-KB3150220-x64.cab       Windows6.1-KB3150513-x64.cab
Windows6.1-KB3156016-x64.cab       Windows6.1-KB3156017-x64.cab
Windows6.1-KB3156019-x64.cab       Windows6.1-KB3159398-x64.cab
windows6.1-kb3161102-x64.cab       Windows6.1-KB3161949-x64.cab
Windows6.1-KB3161958-x64.cab       Windows6.1-KB3170455-x64.cab
Windows6.1-KB3172605-x64.cab       Windows6.1-KB3177186-x64.cab
Windows6.1-KB3179573-x64.cab       Windows6.1-KB3181988-x64.cab
Windows6.1-KB3184143-x64.cab       Windows6.1-KB3207752-x64.cab
windows6.1-kb3210131-x64.cab       Windows6.1-KB982018-v3-x64.cab
             180 个文件    801,332,157 字节

   所列文件总数:
             191 个文件    900,567,597 字节

执行磁盘清理后,部分补丁已被替代。。

zhengzwq 发表于 2017-1-2 10:26

谢谢分享

liunian1991 发表于 2017-1-2 11:10

谢谢分享。辛苦了,支持一下!

JacXPS 发表于 2017-1-2 12:55

谢谢分享!

haie 发表于 2017-1-2 13:45

收集信息的补丁是那几个 绝对不能装

zyq53719 发表于 2017-1-2 15:53

好帖子,正需要呢谢谢了

piaoxue888 发表于 2017-1-2 21:37

希望大神能提供个集成好的纯旗舰版~

mmxx2013 发表于 2017-1-6 20:51

==========
2017.01.06更新
==========
3楼帖子更新:ESD格式Windows 7安装文件的制作

共享文件更新:
增加Wim转ESD批处理文件,相对路径:共享目录\批处理文件\20170106。

z10 发表于 2017-1-7 12:25

666,学习                                 

爱读书 发表于 2017-1-7 14:24

mmxx2013 发表于 2017-1-7 14:42

爱读书 发表于 2017-1-7 14:24 https://www.pcbeta.com/static/image/common/back.gif
使用dism++这个软件帮助打补丁是不是比你这个用人工攒补丁效率要高?这个软件也有wim转esd的功能,是不是 ...

我要批处理命令行操作原因有2:

1。dism++貌似无法实现连续给多个版本集成补丁。我给家庭基础/家庭高级/专业/旗舰/企业版依次集成补丁,就是睡觉前把文件准备好,然后运行批处理文件后就睡觉去了,执行完机子就自己休眠了,第二天起来查看日志,如果没出错,集成就完成了。

2。我说过,就算是微软原版Win7 ISO里提取的install.wim,转esd也是失败的,差不多93%的时候dism++崩溃(win10自带的dism也一样),我系统24G内存、做虚拟内存的分区剩余空间差不多1T,应该不存在内存不足问题(实际监测发现dism++耗内存6GB左右)。dism++转换Win7 install.wim只能先挂载再另存,实测过,这个效率确实比较低,在我这台机子上需要30分钟左右,如果用wimlib-imagex转换,只需要13分钟左右。

Luxuriant.Z 发表于 2017-1-7 15:48

不懂就不要瞎说搞笑好吗?

先搞清楚下面的概念再反对人家好吗?

1. 微软原始Windows Update更新和第三方打补丁

2. 在线补丁集和离线补丁集

3. 开源和不开源

楼主这里的分享和论坛里另两位大神Jay1982、粽子分享基本属于一个性质的东西,链接如下:

Jay1982
[原创内容] 自己编写的Windows7SP1Update离线更新安装汇总-完全开源3.0版

粽子
[分享] 《2016.12.31》Win7,08R2,Win10 LTSB 集成到2016年12月31日所有补丁的镜像

楼主获取补丁列表的途径是系统获取,在这方面的描述个人感觉比Jay1982和粽子两位大神的描述更具体详尽一些,是原汁原味的微软补丁列表;
另外,楼主考虑到一些动手能力差网友,所以做了集成ISO,并提供MD5......

人家楼主无私的把集成方法透明公开的分享给大家,你好话一句没有就算了,还直接拿dism++过来和楼主方法PK,
请问:有必要吗?还有,这和dism++是一个东西吗?

象大神Jay1982的帖子"自己编写的Windows7SP1Update离线更新安装汇总-完全开源3.0版" 被zd423网站采用,如下:

Win7 SP1 Update离线更新汇总包V3.0
http://www.zdfans.com/6916.html

zd423网站那么多的挑剔党、找碴党也没有人说用dism++去PK一下,是他们没发现吗?

yangchengqu 发表于 2017-1-7 15:49

支持一下,点赞,正需要。

tyu2012 发表于 2017-1-7 17:20

这个要慢慢学习!
页: [1] 2 3 4 5 6 7 8
查看完整版本: 自己动手离线集成Windows 7 SP1最新补丁