社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 1718阅读
  • 10回复

XP SP2及之后的补丁集成法

楼层直达
级别: 管理员
发帖
3549
飞翔币
5005
威望
64392
飞扬币
51613
信誉值
815
先说明一下几件事情
1、本人的出发点是从安装Windows XP之后的安全性考虑决定制作集成安装光盘的,而不是为了All In One或者其它什么;
2、本方法仅根据微软官方的知识库相关知识,加上本人对dos命令的研究所得,集成工作本身未使用其它第三方的工具(刻盘??废话当然需要刻录软件的支持啦)。

接下来进入正题,首先是准备工作
1、准备好XP的光盘和SP2,当然,已经集成好SP2的光盘也可以(什么,不知道如何集成??这个看后面我慢慢道来)
假设XP零售版的集成了SP2的光盘文件在D:\xp\Retail.SP2\
2、准备好需要集成的小补丁

截至2006年10月16日,需要准备的小补丁有:

--->2个需要特别处理的
888302,891781
http://download.microsoft.com/download/8/2/3/823b5a41-6cfb-4a4f-aefa-3a66e517f447/WindowsXP-KB888302-x86-CHS.exe
http://download.microsoft.com/download/5/7/c/57c31d5d-58ae-4414-95e1-46b48b938f6f/WindowsXP-KB891781-x86-CHS.exe

--->40个可以批量集成的
http://download.microsoft.com/download/1/4/7/147ded26-931c-4daf-9095-ec7baf996f46/WindowsInstaller-KB893803-v2-x86.exe
http://download.microsoft.com/download/d/7/9/d79724a2-f6dd-41d1-ac91-db3c641e350b/WindowsXP-KB890046-x86-CHS.exe
http://download.microsoft.com/download/a/d/0/ad08b5a7-4a6e-4a00-a2f7-862ef274420d/WindowsXP-KB890859-x86-CHS.exe
http://download.microsoft.com/download/6/6/4/66447413-dc1e-4485-8163-dee0032e1145/WindowsXP-KB893756-x86-CHS.exe
http://download.microsoft.com/download/e/5/d/e5d36b32-6f7c-45c1-82a7-3fa483442bda/WindowsXP-KB894391-x86-CHS.exe
http://download.microsoft.com/download/1/3/2/13219fbd-224f-4c46-a223-b6fe3cfe328f/WindowsXP-KB898461-x86-CHS.exe
http://download.microsoft.com/download/b/c/4/bc43aace-f085-4268-b693-890dc488f71b/WindowsXP-KB900485-v2-x86-CHS.exe
http://download.microsoft.com/download/b/b/c/bbc443be-7468-4af9-97fc-f6f5b32536ee/WindowsXP-KB900725-x86-CHS.exe
http://download.microsoft.com/download/2/3/f/23fa4df0-6ad6-4650-af7f-27318805fbb4/WindowsXP-KB901017-x86-CHS.exe
http://download.microsoft.com/download/0/b/1/0b1f0c79-950e-4b64-8da0-3dd8e916efaa/WindowsXP-KB901190-x86-CHS.exe
http://download.microsoft.com/download/0/8/7/08728ce9-67db-4a77-bd6a-9616f45074a2/WindowsXP-KB901214-x86-CHS.exe
http://download.microsoft.com/download/d/3/a/d3ad5ea5-6971-41fd-a1eb-4b0e302bb6b5/WindowsXP-KB902400-x86-CHS.exe
http://download.microsoft.com/download/3/3/9/339b7e44-d925-4ac4-b6bd-a0805fe92041/WindowsXP-KB905414-x86-CHS.exe
http://download.microsoft.com/download/4/1/0/41054944-2438-4fb2-b1d5-785cd7c7c6cd/WindowsXP-KB905749-x86-CHS.exe
http://download.microsoft.com/download/b/9/3/b937adb5-998c-4193-b30c-27617a9124f6/WindowsXP-KB910437-x86-CHS.exe
http://download.microsoft.com/download/0/1/b/01b7b20d-41a3-4c7a-9796-8ab3a52b0230/WindowsXP-KB911280-v2-x86-CHS.exe
http://download.microsoft.com/download/1/1/0/110216c1-4659-45d1-87c6-38d520e628cf/WindowsXP-KB911927-x86-CHS.exe
http://download.microsoft.com/download/d/a/2/da262325-f9f4-4ce2-9d5c-b2425afa501b/WindowsXP-KB912919-x86-CHS.exe
http://download.microsoft.com/download/8/e/2/8e268ee9-2436-47d1-8546-b606f589e331/WindowsXP-KB913446-x86-CHS.exe
http://download.microsoft.com/download/8/f/4/8f4e0e33-3bf4-474e-8ac1-926a5cd4f466/WindowsXP-KB913580-x86-CHS.exe
http://download.microsoft.com/download/e/3/9/e395ce0f-82c6-4625-8c29-063a137092cd/WindowsXP-KB914389-x86-CHS.exe
http://download.microsoft.com/download/d/3/5/d356b7ae-0283-4fef-849c-288693093fad/WindowsXP-KB916595-x86-CHS.exe
http://download.microsoft.com/download/4/6/b/46bf4848-a039-429d-a222-6143a12e2cdd/WindowsXP-KB917344-x86-CHS.exe
http://download.microsoft.com/download/6/0/d/60d4df74-90ff-4d8b-b7de-7ea88cce56fe/WindowsXP-KB917422-x86-CHS.exe
http://download.microsoft.com/download/6/2/2/62259943-9b98-4521-bc18-7139cc5e877f/WindowsXP-KB917537-x86-CHS.exe
http://download.microsoft.com/download/2/f/b/2fbc82a2-039f-4254-931b-7cfb65ad7135/WindowsXP-KB917953-x86-CHS.exe
http://download.microsoft.com/download/a/5/0/a50caa2a-bc48-405c-9b25-31edfad59783/WindowsXP-KB918439-x86-CHS.exe
http://download.microsoft.com/download/9/b/2/9b2e069e-0650-486b-b4f1-47785d492301/WindowsXP-KB919007-x86-CHS.exe
http://download.microsoft.com/download/1/7/5/1758ecb2-f9ec-4e10-93fe-001ad50e2570/WindowsXP-KB920670-x86-CHS.exe
http://download.microsoft.com/download/4/1/4/414fd3a8-f583-47f0-be16-1bf264d33b58/WindowsXP-KB920683-x86-CHS.exe
http://download.microsoft.com/download/9/3/1/93147316-b587-473a-a45e-9c2be5b8dcf1/WindowsXP-KB920685-x86-CHS.exe
http://download.microsoft.com/download/c/f/d/cfd916ef-46eb-493b-b144-522c6d507c81/WindowsXP-KB920872-x86-CHS.exe
http://download.microsoft.com/download/4/9/b/49b771b1-09f5-4d44-b80c-6fbef9358d42/WindowsXP-KB921398-x86-CHS.exe
http://download.microsoft.com/download/3/1/b/31be1ef4-18e0-44a1-bc80-1753b8b43528/WindowsXP-KB921883-x86-CHS.exe
http://download.microsoft.com/download/6/8/e/68e8e7fd-dcee-47db-9600-3a0373fb035c/WindowsXP-KB922582-x86-CHS.exe
http://download.microsoft.com/download/a/6/4/a64472d8-c066-4769-a24c-423e2d24823c/WindowsXP-KB922616-x86-CHS.exe
http://download.microsoft.com/download/c/5/6/c56e193f-f2b1-4227-8fee-239090a8f22a/WindowsXP-KB922819-x86-CHS.exe
http://download.microsoft.com/download/1/7/9/17940d71-46c6-4b7e-8e38-77f06ca29b1f/WindowsXP-KB923191-x86-CHS.exe
http://download.microsoft.com/download/5/0/0/5005aeb8-0070-400a-8d1f-28c8d9ba0adb/WindowsXP-KB923414-x86-CHS.exe
http://download.microsoft.com/download/6/1/2/612ae213-a101-4724-9f5e-1d510c031480/WindowsXP-KB924496-x86-CHS.exe

文件下载完后,假设文件保存的情况如下:
XPSP2之后的需要特别处理的小补丁在E:\WXPSP2_HotFix\SP2_Hotfix1
XPSP2之后的可以批量集成的小补丁在E:\WXPSP2_HotFix\SP2_Hotfix2
当然,你把东西放在其它的目录也没关系。但注意,下载时请把需要手动集成的2个与后面的40个分开保存。

接下来先讲集成操作的分解动作
1、先讲集成安装
集成安装是指,可以使用/s或者/integrate命令开关,通过一条命令将补丁集成到XP安装光盘路径下的方法,具体的命令是

CODE:


KBArticleNumber /integrate:path
按我们的路径,命令类似

CODE:


E:\WXPSP2_HotFix\SP2_Hotfix2\WindowsXP-KB924496-x86-CHS.exe /integrate:D:\XP\Retail.SP2\
这个/s或者/integrate有个前提条件,要求补丁为使用 Update.exe 5.4.15.0 版或更高版本作为安装程序的软件更新
目前大部分的补丁都满足条件
如果有谁不会把SP2集成到原版光盘,也可以用类似这个命令的办法实现
我们来试着运行一下会发现,补丁先自动解开,然后过了一阵提示已经集成完毕,并且需要按确定。
补丁还有一个开关命令/passive,加上这个开关命令后,命令将以无人参与方式运行,无须确认。

2、对需要特别处理集成的小补丁进行集成
为什么要特别处理,根据微软的知识库描述,其实这个是这2个小补丁的一个bug
在集成完SP2的XP光盘文件夹\i386路径下有个HIVESYS.inf,这个文件中有一行为

CODE:


INSTALL_LANGUAGE="0804"
而这2个小补丁不认"0804",将其改为"804"则能认
因此,我们需要进行修改
修改完毕后,可用

CODE:


E:\WXPSP2_HotFix\SP2_Hotfix1\WindowsXP-KB888302-x86-CHS.exe /integrate:D:\XP\Retail.SP2_HotFix\
E:\WXPSP2_HotFix\SP2_Hotfix1\WindowsXP-KB891781-x86-CHS.exe /integrate:D:\XP\Retail.SP2_HotFix\
2条命令将它们进行集成,然后为了防止今后出什么意外的错,再把改过的内容改回来

3、现在我们来看如何将40个(将来可能更多)补丁用一条命令完成集成
先来看这条命令

CODE:


dir E:\WXPSP2_HotFix\SP2_Hotfix2\*.exe /b
这条命令将返回在E:\WXPSP2_HotFix\SP2_Hotfix2\下面所有的.exe文件的文件名,注意,仅仅是文件名,没有修改日期、时间和大小等等。
接着,再来看这条命令

CODE:


FOR /F usebackq %i IN (`dir E:\WXPSP2_HotFix\SP2_Hotfix\*.exe /b`) DO start /wait E:\WXPSP2_HotFix\SP2_Hotfix2\%i /integrate:D:\XP\Retail.SP2\ /passive
依次来解释具体的含义
FOR.......DO——对一组文件中的每一个文件执行某个特定命令。
/F—— 表示处理对象是一组以回车作为分隔符的文件
usebackq——处理一对``里面的命令
%i——就是参数了
IN——包含在...之中的
dir *.exe /b——得到目录下全部exe的文件名,每行一个
连起来就是,对(FOR)目录下全部的exe文件(/F usebackq %i IN (`dir *.exe /b`)),执行无人参与方式集成(E:\WXPSP2_HotFix\SP2_Hotfix\%i /integrate:D:\XP\Retail.SP2\ /passive)
其中,start /wait是用于启动一条命令,并且等待其结束再执行后续的命令,如果不加,则会出现n个补丁试图同时集成的情况,会造成集成失败的。
可以把这么复杂的命令,放到一个.bat文件中,但要注意,需要把%i修改为%%i,原因是.bat中的%i是另有含义的。


CODE:


FOR /F usebackq %%i IN (`dir E:\WXPSP2_HotFix\SP2_HotFix2\*.exe /b`) DO start /wait E:\WXPSP2_HotFix\SP2_HotFix2\%%i /integrate:D:\XP\Retail.SP2\ /passive
这样,运行这个.bat,就能把n个补丁一口气集成到目标路径。

讲完了分解动作,来讲一下我的想法,我认为准备好的XP集成了SP2的目录不要直接把补丁打进去,而是复制一份后再打
原因是,如果直接打了,那么一旦以后出现某补丁A把某补丁B替换了、而补丁B已经被集成了的情况,则需要手工把集成了的补丁B的相关垃圾文件和垃圾信息删去,比较麻烦。
而不直接打,则只需要每次删除前次的集成目录后重新集成一次即可
基于这个想法,我给出一份全自动的补丁集成批处理文件,内容如下:

CODE:


SETLOCAL
SET SP2CD=D:\XP\Retail.SP2
SET SP2_HotFixCD=D:\XP\Retail.SP2_HotFix
SET SP2Dir=E:\WXPSP2_HotFix\SP2
SET SP2HotFix1=E:\WXPSP2_HotFix\SP2_HotFix1
SET SP2HotFix2=E:\WXPSP2_HotFix\SP2_HotFix2
IF EXIST %SP2_HotFixCD% RD /S /Q %SP2_HotFixCD%
XCOPY /E /I %SP2CD% %SP2_HotFixCD%
REN %SP2_HotFixCD%\i386\HIVESYS.INF HIVESYS.bak
COPY %SP2HotFix1%\HIVESYS.INF %SP2_HotFixCD%\i386\HIVESYS.INF
START /wait %SP2HotFix1%\WindowsXP-KB888302-x86-CHS.exe /integrate:%SP2_HotFixCD%\ /passive
START /wait %SP2HotFix1%\WindowsXP-KB891781-x86-CHS.exe /integrate:%SP2_HotFixCD%\ /passive
DEL %SP2_HotFixCD%\i386\HIVESYS.INF
REN %SP2_HotFixCD%\i386\HIVESYS.bak HIVESYS.INF
FOR /F usebackq %%i IN (`dir %SP2HotFix2%\*.exe /b`) DO START /wait %SP2HotFix2%\%%i /s:%SP2_HotFixCD%\ /passive
ENDLOCAL
如果你连集成了SP2的XP的光盘这点空间也想省掉,那么
假设放XP光盘的光驱为G:
SP2的补丁下载在E:\WXPSP2_HotFix\SP2\WindowsXP-KB835935-SP2-CHS.exe
那么.bat文件相应改为

CODE:


SETLOCAL
SET XPCD=G:
SET SP2CD=D:\XP\Retail.SP2
SET SP2_HotFixCD=D:\XP\Retail.SP2_HotFix
SET SP2Dir=E:\WXPSP2_HotFix\SP2
SET SP2HotFix1=E:\WXPSP2_HotFix\SP2_HotFix1
SET SP2HotFix2=E:\WXPSP2_HotFix\SP2_HotFix2
IF EXIST %SP2_HotFixCD% RD /S /Q %SP2_HotFixCD%
XCOPY /E /I /V %XPCD% %SP2_HotFixCD%
START /wait %SP2Dir%\WindowsXP-KB835935-SP2-CHS.exe -s:D:\XP\Retail.SP2_HotFix /passive
REN %SP2_HotFixCD%\i386\HIVESYS.INF HIVESYS.bak
COPY %SP2HotFix1%\HIVESYS.INF %SP2_HotFixCD%\i386\HIVESYS.INF
START /wait %SP2HotFix1%\WindowsXP-KB888302-x86-CHS.exe /integrate:%SP2_HotFixCD%\ /passive
START /wait %SP2HotFix1%\WindowsXP-KB891781-x86-CHS.exe /integrate:%SP2_HotFixCD%\ /passive
DEL %SP2_HotFixCD%\i386\HIVESYS.INF
REN %SP2_HotFixCD%\i386\HIVESYS.bak HIVESYS.INF
FOR /F usebackq %%i IN (`dir %SP2HotFix2%\*.exe /b`) DO start /wait %SP2HotFix2%\%%i /s:%SP2_HotFixCD%\ /passive
ENDLOCAL
这样做节省了空间,但每次操作的时间会多很多

当然,不管你用了上面2个里面的哪个,前面分解动作里面提到的批处理文件都不需要了,而且需要把修改过的HIVESYS.INF复制一份到E:\WXPSP2_HotFix\SP2_HotFix1
而批处理里面的环境参数,你可以修改为自己需要的(就是前面的那些SET XXX=YYYYY啦),光盘也可以换成VOL/OEM,不见得非用零售版(本人偏好零售版啦)
注意,不要使用+/&等在DOS下有特殊用途的字符

最后讲一下刻盘和补丁维护
先用UltraISO之类的将原版XP的光盘做一个.ISO光盘镜像文件,这个镜像应该是可以从光盘启动的
然后打开,把里面的东西全砍掉,再把D:\XP\Retail.SP2_HotFix\里面的东西扔进去,保存,刻盘即可
将来有了新补丁,可以在WSUS里面查看到,请先根据WSUS给出的链接,把这些补丁下载下来,单独保存(没有WSUS?那就去看MS的安全公告,比如http://www.microsoft.com/china/technet/security/bulletin/ms06-063.mspx, 与此安全更新相关的常见问题解答 (FAQ) 中提到“此安全更新替代以前的一个安全更新。 下表列出了相应的安全公告 ID 和受影响的操作系统”,具体看那个表)
单独运行集成命令(不要加/passive),测试这些补丁是否能集成到D:\XP\Retail.SP2_HotFix
如果提示集成完毕,就把它移动到E:\WXPSP2_HotFix\SP2_HotFix2\,如不能集成,则把这个补丁删除掉或者通过别的办法集成
然后看剩下这些补丁是否有替代了我们先前下载的补丁,如果有那么删除掉原先的那些
 
我们一直在努力!
级别: 禁止发言
发帖
1814
飞翔币
-65
威望
1951
飞扬币
-48750
信誉值
0
只看该作者 1 发表于: 2006-10-21
用户被禁言,该主题自动屏蔽!
级别: 光盘学士
发帖
5508
飞翔币
246
威望
2321
飞扬币
41697
信誉值
0

只看该作者 2 发表于: 2006-10-21
详细
:@
级别: 光盘新手
发帖
183
飞翔币
335
威望
13
飞扬币
1709
信誉值
0
只看该作者 3 发表于: 2006-10-21
辛苦了,收藏了~
级别: 光盘新手
发帖
183
飞翔币
335
威望
13
飞扬币
1709
信誉值
0
只看该作者 4 发表于: 2006-10-21
还有咱们论坛表情的快捷键导致帖子里的错误....
级别: 禁止发言
发帖
1814
飞翔币
-65
威望
1951
飞扬币
-48750
信誉值
0
只看该作者 5 发表于: 2006-10-21
用户被禁言,该主题自动屏蔽!
级别: 管理员
发帖
3549
飞翔币
5005
威望
64392
飞扬币
51613
信誉值
815
只看该作者 6 发表于: 2006-10-21
表情符是个问题,要想办法处理下!
级别: 光盘中级
发帖
4775
飞翔币
495
威望
708
飞扬币
2745
信誉值
5

只看该作者 7 发表于: 2006-10-24
不错。。下了安装了再说!
级别: 光盘中级
发帖
779
飞翔币
335
威望
267
飞扬币
4406
信誉值
0
只看该作者 8 发表于: 2006-10-24
看一下~~~
主要是学习
:)Y12
级别: *
发帖
*
飞翔币
*
威望
*
飞扬币
0
信誉值
0
只看该作者 9 发表于: 2006-10-26
进来学习一下.呵呵.
级别: 光盘新手
发帖
180
飞翔币
335
威望
13
飞扬币
1910
信誉值
0
只看该作者 10 发表于: 2006-11-14
本人测试……几乎没有一个能集成,都是弹出报XXX版本不对或XXX没权限的错误提示框。不知问题出在那里?