複製程式
@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很好心, 都幫人包好了, 所以只要是使用英文版的, 直接拉下來用就好, 省很多心思.