|
原帖由 老毛桃 于 2006-12-1 04:33 PM 发表
这个 804 与 0804 的问题是 bshun 发现的,我只不过将他在帖子中的方法做了一个集合,集中处理一些问题而已。
检验哪些补丁必须安装,以纯净的 WinXP SP2 版本在 Windows Update 中的“快速”更新检查出的项 ...
这是我在您的批处理文件里看到的:
- ::准备自动集成
- Echo.
- Echo 正在准备自动集成……
- TITLE 正在准备自动集成……
- If Exist "%SP2_HotFixCD%" RD /S /Q "%SP2_HotFixCD%"
- If Exist %TempDir% RD /S /Q %TempDir%
- If Exist DOSNET.INF Del DOSNET.INF /Q>NUL 2>NUL
- If Exist TXTSETUP.SIF Del TXTSETUP.SIF /Q>NUL 2>NUL
- MD %TempDir%
- ::复制 Windows 安装文件
- Echo.
- Echo 正在复制 Windows 安装文件……
- TITLE 正在复制 Windows 安装文件……
- XCOPY /E /I /V "%XPSP2CD%" "%SP2_HotFixCD%"
- Ren "%SP2_HotFixCD%\i386\HIVESYS.INF" HIVESYS.BAK
- If Exist HIVESYS_804.INF Copy "HIVESYS_804.INF" "%SP2_HotFixCD%\i386\HIVESYS.INF" /Y>NUL 2>NUL
- ……
- ::集成 Windows 补丁
- Echo.
- Title 正在集成 Windows 补丁集……
- For /F %%i In ('dir /B /OD %SP2HotFix%\*.exe') DO ECHO 正在集成 %%i&&START /WAIT %SP2HotFix%\%%i /S:"%SP2_HotFixCD%" /PASSIVE /QUIET
- ::压缩集成后生成的新文件
- Echo.
- Echo 正在压缩补丁集成后的新文件……
- TITLE 正在压缩补丁集成后的新文件……
- ::若存在 LANG\IMEKR61.IME 则压缩之
- If Exist "%SP2_HotFixCD%\I386\LANG\imekr61.ime" %MCAB% /L "%SP2_HotFixCD%\I386\LANG" "%SP2_HotFixCD%\I386\LANG\imekr61.ime"&&Del "%SP2_HotFixCD%\I386\LANG\imekr61.ime" /Q>NUL 2>NUL
- ::将原 HIVESYS.INF 替换掉临时文件
- Del "%SP2_HotFixCD%\i386\HIVESYS.INF" /Q>NUL 2>NUL
- Ren "%SP2_HotFixCD%\i386\HIVESYS.BAK" HIVESYS.INF
- ::使用原版的 Windows 安装协议文件
- If Exist "%XPSP2CD%\I386\EULA.TXT" Copy "%XPSP2CD%\I386\EULA.TXT" "%SP2_HotFixCD%\i386" /Y>NUL 2>NUL
- ::如果有 I386\Update 目录,则转移其中的文件并删除此目录
- If Exist "%SP2_HotFixCD%\i386\update" MOVE /Y "%SP2_HotFixCD%\i386\update\*.*" "%SP2_HotFixCD%\I386">NUL 2>NUL&&RD /S /Q "%SP2_HotFixCD%\I386\update"
- ::将 TXTSETUP.SIF 转移出来
- If Exist "%SP2_HotFixCD%\I386\txtsetup.sif" MOVE /Y "%SP2_HotFixCD%\i386\txtsetup.sif" .\>NUL 2>NUL
- If Exist "%SP2_HotFixCD%\i386\WINNT.SIF" Copy "%SP2_HotFixCD%\i386\WINNT.SIF" .\WINNT.TMP /Y>NUL 2>NUL&&Del "%SP2_HotFixCD%\i386\WINNT.SIF" /Q>NUL 2>NUL
- ::将所有新文件移动到临时目录以备压缩
- For /F "tokens=4" %%i In ('dir /A-D /4 ^"%SP2_HotFixCD%\I386^" ^|find /V ^"%FileDate%^"') do IF EXIST "%SP2_HotFixCD%\I386\%%i" move "%SP2_HotFixCD%\I386\%%i" "%TempDir%">NUL 2>NUL
- ::将 TXTSETUP.SIF 放回 I386 目录
- If Exist txtsetup.sif MOVE /Y txtsetup.sif "%SP2_HotFixCD%\i386">NUL 2>NUL
- ::如果存在应答文件则复制到 I386 下
- If Exist WINNT.SIF Copy WINNT.SIF "%SP2_HotFixCD%\I386" /Y>NUL 2>NUL
- If Exist WINNT.TMP Copy WINNT.TMP "%SP2_HotFixCD%\i386\WINNT.SIF" /Y>NUL 2>NUL&&Del WINNT.TMP /Q>NUL 2>NUL
- ::将已压缩过的文件返回 I386 目录
- MOVE /Y %TempDir%\*.??_ "%SP2_HotFixCD%\I386">NUL 2>NUL
- ::不压缩 TELNET.EXE,转移至 I386 目录
- ::If Exist %TempDir%\TELNET.EXE MOVE /Y %TempDir%\TELNET.EXE "%SP2_HotFixCD%\I386">NUL 2>NUL
- ::如果集成了 WMP10,则将相关的安全编目文件放到 SVCPACK 目录,并在 SVCPACK.INF 中注册之
- If %AddWMPVer%==10 DIR /B "%WMP10Folder%\*.CAT">>"%TempDir%\SVCPACK.INF"&&Move /Y "%WMP10Folder%\*.CAT" "%SP2_HotFixCD%\I386\SVCPACK">NUL 2>NUL
- ::将 DOSNET.INF 从临时目录移出来以备修复
- If Exist %TempDir%\DOSNET.INF MOVE /Y %TempDir%\DOSNET.INF .\>NUL 2>NUL
- ::将剩余在临时目录中的所有新文件压缩并删除未压缩版本
- For /F %%i In ('dir /B %TempDir%') do %MCAB% /L %TempDir% %TempDir%\%%i&&del %TempDir%\%%i /Q>NUL 2>NUL
- ::将压缩过的新文件移动到 I386 中
- MOVE /Y %TempDir%\*.* "%SP2_HotFixCD%\I386">NUL 2>NUL
- ::删除无用文件
- Echo HotFix 集成完毕!正在删除无用的文件...
- ::删除临时目录
- RD /S /Q %TempDir%
- ::按配置文件中的保留文件清单保留 SVCPACK 文件夹中的文件
- For /F "eol=; tokens=1 skip=%KeepLins% usebackq" %%i In ("%CFGFile%") Do If Exist "%SP2_HotFixCD%\i386\SVCPACK\%%i.EXE" Ren "%SP2_HotFixCD%\i386\SVCPACK\%%i.EXE" %%i.BAK>NUL 2>NUL
- ::删除 SVCPACK 文件夹中的无用文件
- Del "%SP2_HotFixCD%\i386\SVCPACK\*.EXE" /Q>NUL 2>NUL
- If Exist "%SP2_HotFixCD%\i386\SVCPACK\HFINT.DAT" Del "%SP2_HotFixCD%\i386\SVCPACK\HFINT.DAT" /Q>NUL 2>NUL
- If Exist "%SP2_HotFixCD%\i386\SVCPACK\branches.inf" Del "%SP2_HotFixCD%\i386\SVCPACK\branches.inf" /Q>NUL 2>NUL
- Ren "%SP2_HotFixCD%\i386\SVCPACK\*.BAK" *.EXE
- ::如果设置了不保留 Win9X 升级安装 WinXP 的功能,则删除相关文件夹
- For /F "tokens=2 delims=^=" %%i In ('find /I ^"Win9X保留^" %CFGFile%') do SET Keep9X=%%i
- If Not Keep9X%Keep9X%==Keep9X1 (
- If Exist "%SP2_HotFixCD%\i386\WIN9XMIG" RD /S /Q "%SP2_HotFixCD%\i386\WIN9XMIG"
- If Exist "%SP2_HotFixCD%\i386\WIN9XUPG" RD /S /Q "%SP2_HotFixCD%\i386\WIN9XUPG"
- )
- ::最终校验一下可能存在的相同文件
- Echo.
- Echo 正在最后校验相同文件……
- TITLE 正在最后校验相同文件……
- For /F %%i In ('dir /B ^"%SP2_HotFixCD%\I386\LANG^"') DO IF EXIST "%SP2_HotFixCD%\I386\%%i" COPY "%SP2_HotFixCD%\I386\LANG\%%i" "%SP2_HotFixCD%\I386" /Y>NUL 2>NUL
- ::修复 DOSNET.INF 文件
- Echo.
- Echo 修复 DOSNET.INF 文件……
- TITLE 修复 DOSNET.INF 文件……
- If Exist DOSNET.TMP Del DOSNET.TMP /Q>NUL 2>NUL
- For /f "tokens=4 delims=_" %%i In ('findstr ^"EULAID^" ^"%SP2_HotFixCD%\I386\EULA.TXT^"') do SET EULAID=%%i
- ::If "EULAID%EULAID%"=="EULAIDOEM" (Set IMEKR61=d5,I386\LANG\imekr61.ime) Else (Set IMEKR61=d1,LANG\imekr61.ime)
- Set IMEKR61=d5,I386\LANG\imekr61.ime
- SETLOCAL ENABLEDELAYEDEXPANSION
- For /F "tokens=1* delims=:" %%i In ('findstr /N .* DOSNET.INF') do (
- Set str=%%j
- If Not "!str!"=="" Set "str=!str:d1,imekr61.ime=%IMEKR61%!"
- If Not "!str!"=="" Set "str=!str:d5,I386\wmdrmsdk.dll=d1,wmdrmsdk.dll!"
- If Not "!str!"=="" Set "str=!str:d5,I386\MFPLAT.dll=d1,MFPLAT.dll!"
- If Not "!str!"=="" Set "str=!str:d1,update\updspapi.dll=d1,updspapi.dll!"
- If Not "!str!"=="" Set "str=!str:d1,update\update.exe=d1,update.exe!"
- If Not "!str!"=="" Set "str=!str:d1,update\spcustom.dll=d1,spcustom.dll!"
- Echo.!str!>>DOSNET.TMP
- )
- ENDLOCAL
- If Exist DOSNET.INF Del DOSNET.INF /Q>NUL 2>NUL&&Ren DOSNET.TMP DOSNET.INF
- If Exist DOSNET.INF MOVE /Y DOSNET.INF "%SP2_HotFixCD%\I386">NUL 2>NUL
复制代码
看样子您是在集成前用您自己修改的HIVESYS_804.INF替换原始的HIVESYS.INF,再在最后集成结束后换回去,这样看来您是将所有补丁在804状态下集成而不是一部分在804、另一部分在0804下集成的,只不过在最后将原始文件还了回去罢了。
您看我分析的对吗?
还是您在HIVESYS_804.INF里另藏玄机? |
|