二、Super WinPE系統(tǒng)漢化
由于PE Builder是英文軟件,使用英語(yǔ)或相近語(yǔ)言操作系統(tǒng)安裝光盤制作的Super WinPE一般不會(huì)有什么問(wèn)題。但如果是使用漢語(yǔ)等雙字節(jié)語(yǔ)言的操作系統(tǒng)安裝光盤制作Super WinPE,則Nu2menu菜單和中文語(yǔ)言的程序界面會(huì)充斥著亂碼(圖1),更別說(shuō)中文輸入法了,根本無(wú)法正常使用。亂碼是由于PE Builder默認(rèn)拷貝到Super WinPE的字庫(kù)以及在系統(tǒng)中的設(shè)置均是針對(duì)于英文,所以我們需要在制作時(shí)將中文字庫(kù)拷貝到Super WinPE中,并且修改系統(tǒng)為正確的語(yǔ)言設(shè)置。這個(gè)工作可在制作完ISO鏡像后,通過(guò)手工修改鏡像文件完成。但這樣做不僅麻煩,而且每制作一個(gè)ISO文件都要修改,如果經(jīng)常制作的話,工作量不免太大。所以一勞永逸的方法是制作一個(gè)簡(jiǎn)體中文語(yǔ)言的插件,這樣當(dāng)Super WinPE的ISO制作完畢后就是正確的語(yǔ)言顯示了。下面我們就來(lái)編寫一個(gè)簡(jiǎn)體中文語(yǔ)言插件,同時(shí)用來(lái)詳細(xì)演示插件如何開發(fā)。 (一)中文插件的開發(fā) 一個(gè)典型的插件一般至少包含有*.html、*.xml、*.inf這3個(gè)文件(圖2)。*.html文件一般是插件的說(shuō)明或幫助文檔,*.xml則是插件在系統(tǒng)啟動(dòng)后的菜單項(xiàng)。但有些插件的使用并不需要幫助和菜單項(xiàng),例如我們下面將編寫的中文語(yǔ)言插件,那么*.html和*.xml文件就可省略。*.inf文件是插件的靈魂,它告訴PE Builder建立插件需拷貝的文件、拷貝文件的位置、插件在Super WinPE中的正確設(shè)置等關(guān)鍵信息。所以插件的開發(fā)基本上就是inf文件的編寫。 我們使用記事本來(lái)編寫inf文件即可,需要注意的是文件最后的存盤格式必須是標(biāo)準(zhǔn)的ASCII文件,不能是unicode文件。腳本中的語(yǔ)句前以分號(hào)“;”開始,則會(huì)被認(rèn)為是注釋而不會(huì)被最終處理,另外注意代碼中的所有標(biāo)點(diǎn)符號(hào)都應(yīng)為半角,否則無(wú)法被正確識(shí)別。此外需要說(shuō)明的一點(diǎn)是,在改寫中會(huì)經(jīng)常測(cè)試改寫是否正確有效,如果每完成一步都要刻盤再重啟機(jī)器,未免太過(guò)麻煩,因此推薦使用虛擬機(jī)軟件Virtual PC或VMWare,用ISO鏡像文件直接啟動(dòng)虛擬系統(tǒng)進(jìn)行測(cè)試(注:關(guān)于虛擬機(jī)軟件的使用可參考本刊2003年第7期和第9期的相關(guān)文章)。 1.創(chuàng)建插件inf文件 打開記事本,新建文件。通常任何一個(gè)PE Builder的插件都能在開頭找到以下兩句(圖3)。 [Version] Signature= "$Windows NT$" 這兩行信息必須添加到新建文件中,否則inf文件就不可用,[Version]之上可按照自己的需要添加注釋(行前加分號(hào)),添加內(nèi)容完畢后將其存為chinese.inf文件,這個(gè)插件顯然還不能做任何事情,下面我們還要添加其他部分。 2.[PEBuilder]部分 每個(gè)插件的inf文件都必須包含這一部分,此部分有3個(gè)參數(shù)。參數(shù)“Name”是插件名稱,即在PE Builder中顯示的名稱。參數(shù)“Enable”是插件的默認(rèn)初始狀態(tài),0表示插件在PE Builder中非激活,1則表示插件在PE Builder中默認(rèn)激活(圖4)。這個(gè)部分的中文插件如下編寫: [PEBuilder] Name="chinese Language Ver 1.0" Enable=1 3.[WinntDirectories]部分 此部分使用固定語(yǔ)句格式:directoryID=dirname[,attribute],其主要作用是在Super WinPE中創(chuàng)建目錄?!癲irectoryID”是建立目錄的ID,在插件的inf文件中你可隨意使用字母a~z分配ID;“dirname”即建立目錄的名稱,必須使用半角的雙引號(hào)包括(圖5);“attribute”的數(shù)值表示一些選項(xiàng)開關(guān),默認(rèn)值為0。我們的插件如下編寫: [WinntDirectories] a="documents and settings\default user\my documents",3 4.[SourceDisksFiles]部分 這個(gè)部分是插件的關(guān)鍵部分,它告訴PE Builder插件需要將哪些文件拷貝到Super WinPE中的哪個(gè)目錄里。此部分使用如后基本語(yǔ)句格式:filename=directoryID。其中“filename”即需要復(fù)制的文件,“directoryID”是目標(biāo)文件夾的系統(tǒng)目錄名稱,它使用不同數(shù)字來(lái)代表不同的系統(tǒng)目錄。由于我們需要編寫的是簡(jiǎn)體中文語(yǔ)言插件,所以要將正確的中文字庫(kù)拷貝到Super WinPE的Font目錄中,順便也可將輸入法文件和字庫(kù)拷貝到Super WinPE的system32目錄中。system32系統(tǒng)目錄ID為2,F(xiàn)ont系統(tǒng)目錄為22,故此部分我們?nèi)缦戮帉懀? [SourceDisksFiles] WINPY.IME=2 WINPY.MB=2 app936.fon=22 ;…… 以上省略號(hào)處省略了10行,每行格式都類似于“app936.fon=22”,只是將“app936.fon”分別改為vga936.fon、svgasys.fon、svgafix.fon、s8514fix.fon、s8514oem.fon、s8514sys.fon、simsun.ttc、simhei.ttf、simkai.ttf和simfang.ttf。 5.[Software.AddReg]部分 拷貝到Super WinPE的插件文件需要告知系統(tǒng)才會(huì)被正確調(diào)用,所以我們必須將其加上相應(yīng)的注冊(cè)信息。這個(gè)部分即專門添加Software部分注冊(cè)信息,基本格式為“regType”、“regKey”、“regValue”、“regData”。參數(shù)“regType”用于指定注冊(cè)信息鍵值的數(shù)據(jù)類型,共有7種類型(表1),注意其中的“0x”必須要小寫,否則將無(wú)法被正確識(shí)別,“regKey”為注冊(cè)鍵目錄字符串,“regValue”為注冊(cè)鍵值的字符串,“regData”用于指定實(shí)際使用的數(shù)據(jù)。 由于Super WinPE系統(tǒng)中的注冊(cè)鍵值實(shí)際上基本可對(duì)應(yīng)于WinXP的注冊(cè)鍵值,所以我們需要做的工作就是將WinXP中關(guān)于顯示字庫(kù)和輸入法的注冊(cè)信息導(dǎo)入到Super WinPE系統(tǒng)中。在你的WinXP系統(tǒng)中點(diǎn)擊“開始菜單→運(yùn)行”,輸入“regedit”回車后啟動(dòng)注冊(cè)表編輯器,在如下子鍵上點(diǎn)擊右鍵將其導(dǎo)出為文本文件備用(圖6): “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows NT\CurrentVersion”下的FontMapper、FontSubstitutes、FontLink、Fonts、GRE_Initialize和FontDPI子鍵,“HKEY_LOCAL_MACHINE\ SOFTWARE\Classes\CLSID”下的{529A9E6B-6587-4F23-AB9E-9C7D683E3C50}、{540D8A8B-1C3F-4E32-8132-530F6A502090}、{08CD963F-7A3E-4F5C-9BD8-D692BB043C5B}、{33C53A50-F456-4884-B049-85FD643ECFED}、{3CE74DE4-53D3-4D74-8B83-431B3828BA53}、{529A9E6B-6587-4F23-AB9E-9C7D683E3C50}、{A4B544A1-438D-4B41-9325-869523E2D6C7}、{B9931692-A2B3-4FAB-BF33-9EC6F9FB96AC}、{EBB08C45-6C4A-4FDC-AE53-4EB8C4C7DB8E}、{275C23E2-3747-11D0-9FEA-00AA003F8646}、{C04D65CF-B70D-11D0-B188-00AA0038C969}和{D66D6F99-CDAA-11D0-B822-00C04FC9B31F}子鍵。 下面我們來(lái)看如何使用導(dǎo)出的文本文件。打開從“CurrentVersion\GRE_Initialize”鍵值導(dǎo)出的GRE_Initialize.txt文件(圖7),按上文所說(shuō)的格式將其改寫為[Software.AddReg]的部分。首先是GRE_Initialize鍵本身的默認(rèn)值,由于數(shù)據(jù)類型“regType”是REG_SZ而且數(shù)據(jù)值為空(圖8),所以其數(shù)據(jù)類型為0x0。而其鍵值目錄“regKey”并不需要寫全,我們將“HKEY_ LOCAL_MACHINE\ SOFTWARE”的后面部分寫上即可。所以添加如下內(nèi)容: [Software.Addreg] 0x0, "Microsoft\WindowsNT\CurrentVersion\GRE_Initialize" 接著我們將GRE_Initialize內(nèi)其他鍵值都進(jìn)行修改。如值0的數(shù)據(jù)類型為REG_SZ而又非空值,所以其數(shù)據(jù)類型為0x1。而其“regValue”和“regData”分別為“GUIFont.Facename”和“宋體”,故添加為: 0x1, "Microsoft\Windows NT\CurrentVersion\GRE_Initialize", "GUIFont.Facename", "宋體" 用此方法將上文所述導(dǎo)出的注冊(cè)鍵信息全部按格式添加到[Software.AddReg]部分。實(shí)際上我們向Super WinPE系統(tǒng)中拷貝的字庫(kù)文件有限,上述添加的鍵值中許多并非必須。但是這樣的處理方法簡(jiǎn)單易行,你不需要費(fèi)心去辨識(shí)那些鍵值,當(dāng)然你也可以在熟悉理解WinXP注冊(cè)表信息后只編寫需要的部分,這樣可大大降低插件inf文件的體積。 6.[SetupReg.AddReg]部分 這個(gè)部分的語(yǔ)法格式與[Software.AddReg]部分完全一致。啟動(dòng)注冊(cè)表編輯器,將“HKEY_LOCAL_MACHINE\ SYSTEM\ControlSet001\Control”下的“Keyboard Layouts\00000804”、“Keyboard Layouts\E0010804”及“FontAssoc”子鍵導(dǎo)出為文本文件,并依照第5步的做法按格式將信息添加到插件inf文件的[SetupReg.AddReg]部分。 7.[default.AddReg]部分 這個(gè)部分主要的語(yǔ)法格式與[Software.AddReg]部分完全一致。啟動(dòng)注冊(cè)表編輯器,將“HKEY_CURRENT _USER\Keyboard Layout”下的“Preload”、“Toggle”及“Control Panel\Desktop”等子鍵導(dǎo)出為文本文件,同樣按第5步的做法按格式添加到插件inf文件的[default.AddReg]部分。 至此中文簡(jiǎn)體插件的chinese.inf文檔編寫工作全部完成。實(shí)際上插件inf文檔的編寫還包括有其他部分,但編寫簡(jiǎn)體中文語(yǔ)言插件并不需要,大家可對(duì)照上述編寫過(guò)程來(lái)學(xué)習(xí)其他部分。 8.導(dǎo)入插件 由于PE Builder導(dǎo)入插件必須使用cab壓縮包文件,所以需要先將chinese.inf文件打包為chinese.cab文件,筆者一般使用Cabnet Manager打包軟件(下載地址:http://download.pchome.net/utility/pack/3836.html),可使用鼠標(biāo)右鍵菜單方便地添加cab壓縮包(圖9)。之后在使用PE Builder制作Super WinPE的配置插件步驟時(shí),點(diǎn)擊窗口上的“Add”按鈕,在彈出窗口中選擇剛才制作的chinese.cab文件(圖10)。接著軟件會(huì)讓你給插件的目錄命名(圖11),命名后點(diǎn)擊“OK”按鈕,插件就會(huì)被導(dǎo)入到PE Builder中,由于在插件的[PEBuilder]部分的Enable參數(shù)為1,所以導(dǎo)入的插件已經(jīng)是激活狀態(tài)(圖12)。導(dǎo)入這個(gè)中文插件后繼續(xù)制作完成WinPE的ISO文檔,完成后來(lái)看看那些中文軟件的界面,亂碼都已經(jīng)消失,熟悉的中文回來(lái)了(圖13)。 ?。ǘ㎞u2menu菜單的漢化 經(jīng)過(guò)上一步處理后發(fā)現(xiàn)Super WinPE的界面菜單依然是英文,且其位置安排也不盡如人意。要改進(jìn)這一狀況,必須修改Nu2menu插件。上文說(shuō)過(guò),插件內(nèi)一般有3種文件,其中XML文件就是系統(tǒng)的菜單,所以漢化菜單的工作實(shí)際上非常簡(jiǎn)單,只是簡(jiǎn)單地修改Nu2menu插件的XML文件就可以了。 用記事本打開Nu2menu插件的Nu2menu.xml文件,其菜單結(jié)構(gòu)一目了然(圖14)。即使你完全不懂得XML文件的語(yǔ)法,也可以從文檔規(guī)律性的語(yǔ)句中輕易辨識(shí)出對(duì)應(yīng)在Super WinPE中的菜單項(xiàng)。比如說(shuō)文檔的第一段結(jié)構(gòu)的部分是這樣的。 <MENU ID="Startmenu"> <MITEM TYPE="POPUP" MENUID="Programs">Programs</MITEM> </MENU> 這代表系統(tǒng)的一級(jí)菜單,其語(yǔ)法結(jié)構(gòu)都是對(duì)稱形式的,非常簡(jiǎn)單。如整個(gè)一級(jí)菜單從<MENU>開始,完成整個(gè)部分后則以帶斜線的</MENU>結(jié)束。其內(nèi)具體菜單子項(xiàng)也是從<MITEM……>開始然后以</MITEM>結(jié)束,<MITEM……>和</MITEM>的中間部分則是在Super WinPE菜單中的具體顯示文字,如將上文中的“Programs”修改為“程序組”,那么在Super WinPE中菜單項(xiàng)目就改變了(注:前提是已經(jīng)使用了上面的中文插件,否則可能會(huì)有亂碼。圖15)。因此只要將這部分簡(jiǎn)單修改為中文,菜單的漢化工作就完成了(注:“<MITEM TYPE = "SEPARATOR"></MITEM>”代表菜單中的分隔線)。 修改并制作完成后發(fā)現(xiàn)二級(jí)和三級(jí)菜單依然有部分是英語(yǔ),這是因?yàn)镹u2menu插件只負(fù)責(zé)系統(tǒng)的一級(jí)和部分二級(jí)菜單,而更多菜單是由插件本身附帶的XML文件負(fù)責(zé)添加。那么修改插件附帶的XML文件即可,如打開插件bginfo的bginfo_nu2menu.xml文檔,同樣只要將<MITEM>和</MITEM>的中間部分修改成中文并存盤即可。另一種方法是將此XML文件的內(nèi)容修改后再?gòu)?fù)制到Nu2menu.xml中,而插件附帶的XML文件刪除即可,這種處理方法更加集中方便,制作出的Super WinPE始終存在此插件的菜單項(xiàng),但沒有激活集成插件的話,相應(yīng)的菜單項(xiàng)目也是灰色不可選的(圖16)。經(jīng)過(guò)對(duì)所有被集成插件的XML文件修改漢化,我們制作出的Super WinPE終于是完全的中文界面了(圖17)。 三、系統(tǒng)的完善 經(jīng)過(guò)漢化的Super WinPE使用上已經(jīng)沒有太多問(wèn)題了,不過(guò)依然有一些問(wèn)題需要完善。 1.加入硬件驅(qū)動(dòng) 使用PE Builder建立的Super WinPE是最小化的,只有基本的硬件驅(qū)動(dòng),而且盡管已經(jīng)集成了網(wǎng)絡(luò)插件,但實(shí)際上可能仍無(wú)法用它實(shí)現(xiàn)網(wǎng)絡(luò)功能,原因在于網(wǎng)卡驅(qū)動(dòng)與具體的網(wǎng)卡可能不相配。要正常使用網(wǎng)絡(luò),需要對(duì)應(yīng)為你計(jì)算機(jī)的網(wǎng)卡在Super WinPE中加入驅(qū)動(dòng),仍然可以使用插件的形式,以3Com網(wǎng)卡驅(qū)動(dòng)為例。建立inf文件,例如3Com.inf,其內(nèi)容如下: [Version] Signature= "$Windows NT$" [PEBuilder] Name="3com" Enable=1 [SourceDisksFiles] 3com.sys=4,,1 ;將3Com.sys拷貝至system32中 3com32.inf=20,,1 ;將3Com32.inf拷貝至i386\inf目錄中 將文件打包為cab文件,導(dǎo)入PE Builder中后會(huì)在plugin目錄中建立子目錄,然后拷貝網(wǎng)卡驅(qū)動(dòng)3com.sys和3com32.inf至此目錄下。在制作Super WinPE時(shí)激活此插件即可使用3Com的網(wǎng)卡驅(qū)動(dòng)。 2.快速修改鏡像 用PE Builder制作完成的ISO鏡像大約200MB左右,刻錄200MB的小光盤恰好合適,但如刻錄一張700MB的普通光盤則未免浪費(fèi)空間。那么最好集成更多的軟件工具,但是否又需重新制作呢?直接使用ISO工具修改即可。不過(guò)由于此ISO鏡像是使用ISO-9660:1999(version 2)文件系統(tǒng)標(biāo)準(zhǔn),必須作出相應(yīng)設(shè)置才能保證ISO文件的正確結(jié)構(gòu)。下面的演示中我們將替換Super WinPE的背景墻紙,并為系統(tǒng)添加一個(gè)綠色軟件WinRAR。 使用軟件UltraISO打開鏡像,首先調(diào)整ISO文件的格式。點(diǎn)擊菜單“文件→屬性”,在彈出窗口中依次選擇“Joliet光盤文件系統(tǒng)標(biāo)準(zhǔn)→Windows/Unix(31)→擴(kuò)展(110)”(圖18)。在硬盤上準(zhǔn)備一張分辨率為800×600的BMP圖片,將文件名改為“NU2”,打開ISO文件的“I386\ system32”,使用鼠標(biāo)右鍵將剛準(zhǔn)備好的NU2.bmp文件替換該目錄下的同名文件(圖19)。這樣系統(tǒng)背景墻紙則已經(jīng)改變(圖20)。同樣道理,對(duì)于無(wú)需修改注冊(cè)表的綠色軟件一樣可以編輯ISO文件集成到系統(tǒng)中,無(wú)需編寫插件。打開ISO鏡像文件的Progr-ams目錄,使用鼠標(biāo)右鍵將硬盤上已有的WinRAR安裝文件夾添加到其中。然后將ISO鏡像文件中“Programs\ NU2MENU”目錄下的nu2-menu.xml文件提取出來(lái),用文本編輯器打開,在<MENU ID="Programs">和</MENU>之間添加如下行(注:中間無(wú)換行): <MITEM TYPE="ITEM" DISABLED="@Not(@FileExists(@GetProgramDrive()\Programs\winrar\winrar.exe))" CMD="RUN" FUNC="@GetProgramDrive()\Programs\winrar\winrar.exe">winrar</MITEM> 存盤后再覆蓋ISO鏡像中的nu2menu.xml文件,這樣就可在系統(tǒng)菜單下使用WinRAR了(圖21)。 |
|
來(lái)自: 換來(lái)晴空月兒明 > 《我的圖書館》