【轉貼】如何制作自己的Service Pack



贊助商連結


purk
2003-04-15, 05:37 PM
作者:[email protected]
日期:2001-05-04

作为一个Windows 系统的管理员,安装安全HotFix应该是不会陌生的,每次我们在装完一台机器后总是下载无数补丁,但烦人的是每每安装一个HotFix系统都会Reboot一次,当然,在Reboot前我们不点击"确定"按钮,直接安装完其他的补丁后一次Reboot也未尝不可,但是这样似乎显得有点不大专业,今天我教大家作一个自己的Service Pack,可以把你需要安装的补丁在一次安装完毕,好像很Cool哦∼

为了测试,我选择了一台中文版Windows 2000 Server,而我们需要安装的安全补丁为2个(当然不止这些,打个比方而已),一个是Windows 2000的输入法漏洞的补丁(Q270676),一个是命名管道的补丁(Q269523)。

Now, Let's go~

1、先去下载我们需要安装的HotFixs,http://download.microsoft.com/download/win2000platform/Patch/Q269523/NT5/CN/Q269523_W2K_SP2_x86_CN.EXE和http://download.microsoft.com/download/win2000platform/Patch/q270676/NT5/CN/Q270676_W2K_SP2_x86_CN.EXE。

2、我们切换到CMD模式,在C盘创建一个hotfix的目录,然后执行

Q269523_W2K_SP2_x86_CN.EXE /x(建议解包的顺序按Q号的大小排列,由小到大,理由我会在后面提到)
看到要求输入解包路径的提示后输入"C:\Hotfix"。

C:\>cd hotfix

C:\hotfix>dir
驱动器 C 中的卷是 C
卷的序列号是 AC58-F7F5

C:\hotfix 的目录

2001-05-04 04:00 <DIR> .
2001-05-04 04:00 <DIR> ..
2000-08-14 18:57 98,064 hotfix.exe
2000-08-14 18:57 15,139 hotfix.inf
2000-08-14 17:19 835,856 kernel32.dll
2000-08-14 17:19 85,776 services.exe
2000-08-14 18:31 88,245 sp2.cat
2000-08-14 18:57 3,584 spmsg.dll
2001-05-04 04:00 <DIR> symbols
2001-05-04 04:00 <DIR> uniproc

然后我们将hotfix.inf文件复制一份。
C:\hotfix>copy hotfix.inf q269523_cn.inf
已复制 1 个文件。

紧接着我们将第二个HotFix解包,
Q270676_W2K_SP2_x86_CN.EXE /x
看到要求输入解包路径的提示后输入"C:\Hotfix"。
也将此时的hotfix.inf文件复制一份。
C:\hotfix>copy hotfix.inf q270676_cn.inf
已复制 1 个文件。

第三个、第四个........重复同样的操作。

3、此时我们已经将HotFix的文件都解包至C:\Hotfix目录,并且有了各个HotFix的inf文件的拷贝,我们现在来分析这些inf文件,一般我们把最后解包的inf文件作为模板,因为inf文件分很多字段,从我观察的结果来看,随着时间的推移,inf文件的字段可能会增加,这也就是我们开始解包按Q大小顺序的原因,本例中我们以Q270676的inf文件为模板,我们编辑hotfix.inf文件,这个文件已经包含了Q270676的信息,我们只要把Q269523中的信息添加到该文件中即可,下面我们来分析Q269523的inf文件的内容:

前面的大部分基本都是相似的,我们只搜寻一些与众不同的字段。

[MustReplace.System32.files]
SERVICES.EXE
[CopyAlways.DriverCab.files]
kernel32.dll
[Cache.files]
SERVICES.EXE
KERNEL32.DLL
[Uniprocessor.Kernel.files]
KERNEL32.DLL,UNIPROC\KERNEL32.DLL
[Multiprocessor.Kernel.files]
KERNEL32.DLL
[SourceDisksFiles]
SERVICES.EXE=1
UNIPROC\KERNEL32.DLL
KERNEL32.DLL=1

然后我们在hotfix.inf文件中搜寻MustReplace.System32.files,然后加入一行
SERVICES.EXE
为了以后方便,我们一般加上一些注释,编辑后的hotfix.inf文件的MustReplace.System32.files字段就成了下面这个样子:

[MustReplace.System32.files]

;Q269523 Added by Adam
SERVICES.EXE

接着搜寻CopyAlways.DriverCab.files、Cache.files、Uniprocessor.Kernel.files、Multiprocessor.Kernel.files、SourceDisksFiles,并将相应的信息添加到hotfix.inf文件中,也要注意添加必要的注释文件,inf文件中表示注释的符号为分号。当然,我们也建议您把本身的模板文件中必要的项也作一下注释,如2个hotfix都包含的Cache.files,我们修改后就成了:

[Cache.files]

;Q269523 Added by Adam
SERVICES.EXE
KERNEL32.DLL

;Q270676 Added by Adam
winzm.ime
winsp.ime
winpy.ime
wingb.ime
winabc.ime

实际上,到这一步,我们就已经可以用我们作好的东东了,但是为了以后的方便,我们必须修改一些显示信息,这就是inf文件中的Strings字段。我们到inf文件的最末尾可以看到Strings字段,我们必须在这里修改一些必要的信息。

首先修改Q号(不是OICQ号码哦),将Q号改成你喜欢的6位数,当然,输入其他字符也可以,但是也许会和某些查HotFix的软件有冲突,还是用6位数字好了,然后修改Comments,我们把Q269523的Comment粘贴过来,也可以加上一些自己的描述,修改后的Strings字段就成了下面的样子:

[Strings]

LangTypeValue=4
ServicePackSourceFiles="Windows 2000 Hotfix 源文件"
HOTFIX_NUMBER="Q123456"
SERVICE_PACK_NUMBER=1
COMMENT="Windows 2000 Hotfix (Pre-SP2) [See Q270676 for more information] This Fix Corrects the IME Problem...Windows 2000 Hotfix (Pre-SP2) [See Q269523 for more information] This Fix Corrects the NamePipe Problem..."

这样也方便我们日后对已安装的补丁进行查看。

4、好了,该修改的地方我们已经弄完了,我们开始安装我们自己作的Service Pack吧,其实我们只要执行HotFix.exe即可,它会自己去找inf文件,然后你会看到一个拷贝文件的进度条,接着是系统要求你Reboot,点"确定",重启,我们的HotFix就安装完毕了。

5、最后我们可以看看效果,你可以去看看注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix

你会发现你安装的Q123456乖乖地呆在那里了∼很有成就感哦∼

最后总结一下:每每出一个新的HotFix后,你就将文件添加到你的SP包中,然后修改你的inf文件,你就可以不去理会微软是不是还为你发布新的SP了(NT 4的SP 7没有了:<),当然,SP中不光包含安全补丁,对系统的其他方面也有所改善,土八路毕竟还是比不上正规军的。

--== 欢迎访问www.sometips.com ==--

贊助商連結


r3ock
2003-04-15, 05:59 PM
來繁化一下吧..^^

作者:[email protected]
日期:2001-05-04

作為一個Windows 系統的管理員,安裝安全HotFix應該是不會陌生的,每次我們在裝完一臺機器后總是下載無數補丁,但煩人的是每每安裝一個HotFix系統都會Reboot一次,當然,在Reboot前我們不點擊"確定"按鈕,直接安裝完其他的補丁后一次Reboot也未嘗不可,但是這樣似乎顯得有點不大專業,今天我教大家作一個自己的Service Pack,可以把你需要安裝的補丁在一次安裝完畢,好像很Cool哦∼

為了測試,我選擇了一臺中文版Windows 2000 Server,而我們需要安裝的安全補丁為2個(當然不止這些,打個比方而已),一個是Windows 2000的輸入法漏洞的補丁(Q270676),一個是命名管道的補丁(Q269523)。

Now, Let's go~

1、先去下載我們需要安裝的HotFixs,http://download.microsoft.com/download/win2000platform/Patch/Q269523/NT5/CN/Q269523_W2K_SP2_x86_CN.EXE和http://download.microsoft.com/download/win2000platform/Patch/q270676/NT5/CN/Q270676_W2K_SP2_x86_CN.EXE。

2、我們切換到CMD模式,在C盤創建一個hotfix的目錄,然后執行

Q269523_W2K_SP2_x86_CN.EXE /x(建議解包的順序按Q號的大小排列,由小到大,理由我會在后面提到)
看到要求輸入解包路徑的提示后輸入"C:\Hotfix"。

C:\>cd hotfix

C:\hotfix>dir
驅動器 C 中的卷是 C
卷的序列號是 AC58-F7F5

C:\hotfix 的目錄

2001-05-04 04:00 <DIR> .
2001-05-04 04:00 <DIR> ..
2000-08-14 18:57 98,064 hotfix.exe
2000-08-14 18:57 15,139 hotfix.inf
2000-08-14 17:19 835,856 kernel32.dll
2000-08-14 17:19 85,776 services.exe
2000-08-14 18:31 88,245 sp2.cat
2000-08-14 18:57 3,584 spmsg.dll
2001-05-04 04:00 <DIR> symbols
2001-05-04 04:00 <DIR> uniproc

然后我們將hotfix.inf文件復制一份。
C:\hotfix>copy hotfix.inf q269523_cn.inf
已復制 1 個文件。

緊接著我們將第二個HotFix解包,
Q270676_W2K_SP2_x86_CN.EXE /x
看到要求輸入解包路徑的提示后輸入"C:\Hotfix"。
也將此時的hotfix.inf文件復制一份。
C:\hotfix>copy hotfix.inf q270676_cn.inf
已復制 1 個文件。

第三個、第四個........重復同樣的操作。

3、此時我們已經將HotFix的文件都解包至C:\Hotfix目錄,并且有了各個HotFix的inf文件的拷貝,我們現在來分析這些inf文件,一般我們把最后解包的inf文件作為模板,因為inf文件分很多字段,從我觀察的結果來看,隨著時間的推移,inf文件的字段可能會增加,這也就是我們開始解包按Q大小順序的原因,本例中我們以Q270676的inf文件為模板,我們編輯hotfix.inf文件,這個文件已經包含了Q270676的信息,我們只要把Q269523中的信息添加到該文件中即可,下面我們來分析Q269523的inf文件的內容:

前面的大部分基本都是相似的,我們只搜尋一些與眾不同的字段。

[MustReplace.System32.files]
SERVICES.EXE
[CopyAlways.DriverCab.files]
kernel32.dll
[Cache.files]
SERVICES.EXE
KERNEL32.DLL
[Uniprocessor.Kernel.files]
KERNEL32.DLL,UNIPROC\KERNEL32.DLL
[Multiprocessor.Kernel.files]
KERNEL32.DLL
[SourceDisksFiles]
SERVICES.EXE=1
UNIPROC\KERNEL32.DLL
KERNEL32.DLL=1

然后我們在hotfix.inf文件中搜尋MustReplace.System32.files,然后加入一行
SERVICES.EXE
為了以后方便,我們一般加上一些注釋,編輯后的hotfix.inf文件的MustReplace.System32.files字段就成了下面這個樣子:

[MustReplace.System32.files]

;Q269523 Added by Adam
SERVICES.EXE

接著搜尋CopyAlways.DriverCab.files、Cache.files、Uniprocessor.Kernel.files、Multiprocessor.Kernel.files、SourceDisksFiles,并將相應的信息添加到hotfix.inf文件中,也要注意添加必要的注釋文件,inf文件中表示注釋的符號為分號。當然,我們也建議您把本身的模板文件中必要的項也作一下注釋,如2個hotfix都包含的Cache.files,我們修改后就成了:

[Cache.files]

;Q269523 Added by Adam
SERVICES.EXE
KERNEL32.DLL

;Q270676 Added by Adam
winzm.ime
winsp.ime
winpy.ime
wingb.ime
winabc.ime

實際上,到這一步,我們就已經可以用我們作好的東東了,但是為了以后的方便,我們必須修改一些顯示信息,這就是inf文件中的Strings字段。我們到inf文件的最末尾可以看到Strings字段,我們必須在這里修改一些必要的信息。

首先修改Q號(不是OICQ號碼哦),將Q號改成你喜歡的6位數,當然,輸入其他字符也可以,但是也許會和某些查HotFix的軟件有沖突,還是用6位數字好了,然后修改Comments,我們把Q269523的Comment粘貼過來,也可以加上一些自己的描述,修改后的Strings字段就成了下面的樣子:

[Strings]

LangTypeValue=4
ServicePackSourceFiles="Windows 2000 Hotfix 源文件"
HOTFIX_NUMBER="Q123456"
SERVICE_PACK_NUMBER=1
COMMENT="Windows 2000 Hotfix (Pre-SP2) [See Q270676 for more information] This Fix Corrects the IME Problem...Windows 2000 Hotfix (Pre-SP2) [See Q269523 for more information] This Fix Corrects the NamePipe Problem..."

這樣也方便我們日后對已安裝的補丁進行查看。

4、好了,該修改的地方我們已經弄完了,我們開始安裝我們自己作的Service Pack吧,其實我們只要執行HotFix.exe即可,它會自己去找inf文件,然后你會看到一個拷貝文件的進度條,接著是系統要求你Reboot,點"確定",重啟,我們的HotFix就安裝完畢了。

5、最后我們可以看看效果,你可以去看看注冊表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix

你會發現你安裝的Q123456乖乖地呆在那里了∼很有成就感哦∼

最后總結一下:每每出一個新的HotFix后,你就將文件添加到你的SP包中,然后修改你的inf文件,你就可以不去理會微軟是不是還為你發布新的SP了(NT 4的SP 7沒有了:<),當然,SP中不光包含安全補丁,對系統的其他方面也有所改善,土八路畢竟還是比不上正規軍的。

ivantw
2003-04-16, 04:02 PM
感謝,看簡體字就跟看外星文一樣,看的頭昏腦脹!

琥珀
2003-04-16, 04:50 PM
此方法可以使用新增/移除,來移除HotFix的安裝嗎?

saujon
2003-04-24, 02:14 PM
最初由 琥珀 發表
此方法可以使用新增/移除,來移除HotFix的安裝嗎?

對呀!最近的幾個HotFix會引起系統不穩(和未裝前比),
好在是一個個的裝,還可用新增/移除來移除。