复制程式
@ECHO OFF
TYPE>NTPRINT.CAT 2>NUL
SET FAKE=DOSNET.INF
ECHO.[Version]>%FAKE%
ECHO.signature="$Windows NT$">>%FAKE%
ECHO.DriverVer=07/01/2001,5.1.2600.2180>>%FAKE%
ECHO.>>%FAKE%
ECHO.[Directories]>>%FAKE%
ECHO.d1 = \I386>>%FAKE%
ECHO.>>%FAKE%
ECHO.[Miscellaneous]>>%FAKE%
ECHO.ProductType = 0 >>%FAKE%
ECHO.ServicePack = 2.0>>%FAKE%
ECHO.>>%FAKE%
ECHO.[Files]>>%FAKE%
ECHO.>>%FAKE%
ECHO.[OptionalSrcDirs]>>%FAKE%
ECHO.>>%FAKE%
SET FAKE=HIVESYS.INF
ECHO.[Version]>%FAKE%
ECHO.signature="$Windows NT$">>%FAKE%
ECHO.DriverVer=07/01/2001,5.1.2600.2180>>%FAKE%
ECHO.>>%FAKE%
ECHO.[Strings]>>%FAKE%
ECHO.INSTALL_LANGUAGE="0404">>%FAKE%
ECHO.>>%FAKE%
上头的批次档会造出三个档, dosnet.inf, hivesys.inf, ntprint.cat, 其中ntprint.cat是0Byte的空档. 这三个档可用来假装成合法的i386供新式hotfix的integrate来玩. 这三个档是先前花了一天时间缩减试误出来的.
把它们搞到 D:\fake\i386 下, 然后就可以拿
新式的hotfix, eg:
kb884020.exe /integrate:D:\fake之所以这样玩, 是为了抽出微软标准的/integrate到底处理了哪些档进i386下, 而那些新加/修改过的档, 则可以再用makecab压过.
makecab重压可以用:
FOR /R D:\fake %%I IN (*) DO makecab /L %%~dpI %%~fI 若直接在命令列下打, 则把%%改成一个%就可. 被压过的档案和未缩压的摆在一起.
只把压过的档案拉出来:
xcopy D:\fake\*.??_ D:\XPCD /I /E /V /Y, 建议分别对*.??_, *.?_, *._做三次xcopy, 我这是假设真正的XP Source摆到D:\XPCD下. 记得做xcopy前先把加进去的假档砍掉, svcpack.inf则看需不额外处理, 反正TypeI的hotfix都被/integrate生得好好的了, 看看要不要加recommendedUpdate跟其它额外的程式.
这样搞跟单纯的使用/integrate出来的结果相同, 只差在中间可以用批次档的方式多加一次makecab, 可以减少一些空间的浪费.
billjrm所用的方法跟之前的XPCreate很像, 只是少了些东西及自动生svcpack, 而且解压出来的话占空间大.
Maybe用在kb884020里的方法, 则是RyanVM的恶搞法, 除了类似/integrate的作法外, 它还少了原本压缩型态的KB884020.exe(没错, 它就是WindowsXP-KB884020-x86-cht.exe).
/integrate只是先一步先把该塞进i386里的东西先塞进去, 实际上还是得靠执行KB884020.exe来完成整个hotfix, 也就是注册表上的东西. 与最传统直接只生svcpack.inf然后叫它跑KB884020.exe这些相比, 反而占的空间更大, 和billjrm那种解压型态相比则不一定, 要看压缩包里的东西和原本i386里的差异性(而且占了cdimage的缩减优势).
但是/integrate最大的好处, 则是安装的速度, hotfix愈多相差愈大. 因为已先一步进去了, 只要处理注册表里的东西就大致OK. 有兴趣可翻翻XPCreate官网上的速度比较, 虽是SP1时代的, 但XPCreate所使用的整合方式和/integrate速度相差不大.
RyanVM的恶搞法, 就是把注册表的资料
手工抽出来, 另行打进去. 这样不但得了速度又少了所占的空间, 缺点是手工很累, 无法自动用程式跑.
再翻回SXP5.9fix3所用的方式, 那是用RunOnceEx以加参数的方式来跑hotfix, 有个好处是维护容易, 新的hotfix出来只要把档案拉进去, 再稍微改一下RunOnceEx就好(像Maybe那样用FOR来跑则一般不用动, 除非特例), 而且不只hotfixes能用, recommendedUpdates也行(/integrate无法用在这类), 缺点是速度是最慢的.
每个方式都有人用, 看喜好吧, 我个人是用/integrate的, 不过RyanVM恶搞法亦能接受, 这还有另一个方便的地方是, RyanVM很好心, 都帮人包好了, 所以只要是使用英文版的, 直接拉下来用就好, 省很多心思.