|
[注意]深山红叶启动光盘(WinPE&PE Builder)讨论专帖(违令者必删)
Super WinPE系统汉化
由于PE Builder是英文软件,使用英语或相近语言操作系统安装光盘制作的Super WinPE一般不会有什么问题。但如果是使用汉语等双字节语言的操作系统安装光盘制作Super WinPE,则Nu2menu菜单和中文语言的程序界面会充斥着乱码,更别说中文输入法了,根本无法正常使用。乱码是由于PE Builder默认拷贝到Super WinPE的字库以及在系统中的设置均是针对于英文,所以我们需要在制作时将中文字库拷贝到Super WinPE中,并且修改系统为正确的语言设置。这个工作可在制作完ISO镜像后,通过手工修改镜像文件完成。但这样做不仅麻烦,而且每制作一个ISO文件都要修改,如果经常制作的话,工作量不免太大。所以一劳永逸的方法是制作一个简体中文语言的插件,这样当Super WinPE的ISO制作完毕后就是正确的语言显示了。下面我们就来编写一个简体中文语言插件,同时用来详细演示插件如何开发。
(一)中文插件的开发
一个典型的插件一般至少包含有*.html、*.xml、*.inf这3个文件。*.html文件一般是插件的说明或帮助文档,*.xml则是插件在系统启动后的菜单项。但有些插件的使用并不需要帮助和菜单项,例如我们下面将编写的中文语言插件,那么*.html和*.xml文件就可省略。*.inf文件是插件的灵魂,它告诉PE Builder建立插件需拷贝的文件、拷贝文件的位置、插件在Super WinPE中的正确设置等关键信息。所以插件的开发基本上就是inf文件的编写。
我们使用记事本来编写inf文件即可,需要注意的是文件最后的存盘格式必须是标准的ASCII文件,不能是unicode文件。脚本中的语句前以分号“;”开始,则会被认为是注释而不会被最终处理,另外注意代码中的所有标点符号都应为半角,否则无法被正确识别。此外需要说明的一点是,在改写中会经常测试改写是否正确有效,如果每完成一步都要刻盘再重启机器,未免太过麻烦,因此推荐使用虚拟机软件Virtual PC或VMWare,用ISO镜像文件直接启动虚拟系统进行测试。
1.创建插件inf文件
打开记事本,新建文件。通常任何一个PE Builder的插件都能在开头找到以下两句(图3)。
[Version]
Signature= "$Windows NT$"
这两行信息必须添加到新建文件中,否则inf文件就不可用,[Version]之上可按照自己的需要添加注释(行前加分号),添加内容完毕后将其存为chinese.inf文件,这个插件显然还不能做任何事情,下面我们还要添加其他部分。
2.[PEBuilder]部分
每个插件的inf文件都必须包含这一部分,此部分有3个参数。参数“Name”是插件名称,即在PE Builder中显示的名称。参数“Enable”是插件的默认初始状态,0表示插件在PE Builder中非激活,1则表示插件在PE Builder中默认激活。这个部分的中文插件如下编写:
[PEBuilder]
Name="chinese Language Ver 1.0"
Enable=1
3.[WinntDirectories]部分
此部分使用固定语句格式:directoryID=dirname[,attribute],其主要作用是在Super WinPE中创建目录。“directoryID”是建立目录的ID,在插件的inf文件中你可随意使用字母a~z分配ID;“dirname”即建立目录的名称,必须使用半角的双引号包括;“attribute”的数值表示一些选项开关,默认值为0。我们的插件如下编写:
[WinntDirectories]
a="documents and settings\default user\my documents",3
4.[SourceDisksFiles]部分
这个部分是插件的关键部分,它告诉PE Builder插件需要将哪些文件拷贝到Super WinPE中的哪个目录里。此部分使用如后基本语句格式:filename=directoryID。其中“filename”即需要复制的文件,“directoryID”是目标文件夹的系统目录名称,它使用不同数字来代表不同的系统目录。由于我们需要编写的是简体中文语言插件,所以要将正确的中文字库拷贝到Super WinPE的Font目录中,顺便也可将输入法文件和字库拷贝到Super WinPE的system32目录中。system32系统目录ID为2,Font系统目录为22,故此部分我们如下编写:
[SourceDisksFiles]
WINPY.IME=2
WINPY.MB=2
app936.fon=22
;……
以上省略号处省略了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的插件文件需要告知系统才会被正确调用,所以我们必须将其加上相应的注册信息。这个部分即专门添加Software部分注册信息,基本格式为“regType”、“regKey”、“regValue”、“regData”。参数“regType”用于指定注册信息键值的数据类型,共有7种类型,注意其中的“0x”必须要小写,否则将无法被正确识别,“regKey”为注册键目录字符串,“regValue”为注册键值的字符串,“regData”用于指定实际使用的数据。
由于Super WinPE系统中的注册键值实际上基本可对应于WinXP的注册键值,所以我们需要做的工作就是将WinXP中关于显示字库和输入法的注册信息导入到Super WinPE系统中。在你的WinXP系统中点击“开始菜单→运行”,输入“regedit”回车后启动注册表编辑器,在如下子键上点击右键将其导出为文本文件备用:
“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}子键。
下面我们来看如何使用导出的文本文件。打开从“CurrentVersion\GRE_Initialize”键值导出的GRE_Initialize.txt文件,按上文所说的格式将其改写为[Software.AddReg]的部分。首先是GRE_Initialize键本身的默认值,由于数据类型“regType”是REG_SZ而且数据值为空,所以其数据类型为0x0。而其键值目录“regKey”并不需要写全,我们将“HKEY_ LOCAL_MACHINE\ SOFTWARE”的后面部分写上即可。所以添加如下内容:
[Software.Addreg]
0x0, "Microsoft\WindowsNT\CurrentVersion\GRE_Initialize"
接着我们将GRE_Initialize内其他键值都进行修改。如值0的数据类型为REG_SZ而又非空值,所以其数据类型为0x1。而其“regValue”和“regData”分别为“GUIFont.Facename”和“宋体”,故添加为:
0x1, "Microsoft\Windows NT\CurrentVersion\GRE_Initialize", "GUIFont.Facename", "宋体"
用此方法将上文所述导出的注册键信息全部按格式添加到[Software.AddReg]部分。实际上我们向Super WinPE系统中拷贝的字库文件有限,上述添加的键值中许多并非必须。但是这样的处理方法简单易行,你不需要费心去辨识那些键值,当然你也可以在熟悉理解WinXP注册表信息后只编写需要的部分,这样可大大降低插件inf文件的体积。
6.[SetupReg.AddReg]部分
这个部分的语法格式与[Software.AddReg]部分完全一致。启动注册表编辑器,将“HKEY_LOCAL_MACHINE\ SYSTEM\ControlSet001\Control”下的“Keyboard Layouts\00000804”、“Keyboard Layouts\E0010804”及“FontAssoc”子键导出为文本文件,并依照第5步的做法按格式将信息添加到插件inf文件的[SetupReg.AddReg]部分。
7.[default.AddReg]部分
这个部分主要的语法格式与[Software.AddReg]部分完全一致。启动注册表编辑器,将“HKEY_CURRENT _USER\Keyboard Layout”下的“Preload”、“Toggle”及“Control Panel\Desktop”等子键导出为文本文件,同样按第5步的做法按格式添加到插件inf文件的[default.AddReg]部分。
至此中文简体插件的chinese.inf文档编写工作全部完成。实际上插件inf文档的编写还包括有其他部分,但编写简体中文语言插件并不需要,大家可对照上述编写过程来学习其他部分。
8.导入插件
由于PE Builder导入插件必须使用cab压缩包文件,所以需要先将chinese.inf文件打包为chinese.cab文件,笔者一般使用Cabnet Manager打包软件(下载地址:http://download.pchome.net/utility/pack/3836.html),可使用鼠标右键菜单方便地添加cab压缩包。之后在使用PE Builder制作Super WinPE的配置插件步骤时,点击窗口上的“Add”按钮,在弹出窗口中选择刚才制作的chinese.cab文件。接着软件会让你给插件的目录命名,命名后点击“OK”按钮,插件就会被导入到PE Builder中,由于在插件的[PEBuilder]部分的Enable参数为1,所以导入的插件已经是激活状态。导入这个中文插件后继续制作完成WinPE的ISO文档,完成后来看看那些中文软件的界面,乱码都已经消失,熟悉的中文回来了。
(二)Nu2menu菜单的汉化
经过上一步处理后发现Super WinPE的界面菜单依然是英文,且其位置安排也不尽如人意。要改进这一状况,必须修改Nu2menu插件。上文说过,插件内一般有3种文件,其中XML文件就是系统的菜单,所以汉化菜单的工作实际上非常简单,只是简单地修改Nu2menu插件的XML文件就可以了。
用记事本打开Nu2menu插件的Nu2menu.xml文件,其菜单结构一目了然。即使你完全不懂得XML文件的语法,也可以从文档规律性的语句中轻易辨识出对应在Super WinPE中的菜单项。比如说文档的第一段结构的部分是这样的。
<MENU ID="Startmenu">
<MITEM TYPE="POPUP" MENUID="Programs">Programs</MITEM>
</MENU>
这代表系统的一级菜单,其语法结构都是对称形式的,非常简单。如整个一级菜单从<MENU>开始,完成整个部分后则以带斜线的</MENU>结束。其内具体菜单子项也是从<MITEM……>开始然后以</MITEM>结束,<MITEM……>和</MITEM>的中间部分则是在Super WinPE菜单中的具体显示文字,如将上文中的“Programs”修改为“程序组”,那么在Super WinPE中菜单项目就改变了(注:前提是已经使用了上面的中文插件,否则可能会有乱码。因此只要将这部分简单修改为中文,菜单的汉化工作就完成了(注:“<MITEM TYPE = "SEPARATOR"></MITEM>”代表菜单中的分隔线)。
修改并制作完成后发现二级和三级菜单依然有部分是英语,这是因为Nu2menu插件只负责系统的一级和部分二级菜单,而更多菜单是由插件本身附带的XML文件负责添加。那么修改插件附带的XML文件即可,如打开插件bginfo的bginfo_nu2menu.xml文档,同样只要将<MITEM>和</MITEM>的中间部分修改成中文并存盘即可。另一种方法是将此XML文件的内容修改后再复制到Nu2menu.xml中,而插件附带的XML文件删除即可,这种处理方法更加集中方便,制作出的Super WinPE始终存在此插件的菜单项,但没有激活集成插件的话,相应的菜单项目也是灰色不可选的。经过对所有被集成插件的XML文件修改汉化,我们制作出的Super WinPE终于是完全的中文界面了。
三、系统的完善
经过汉化的Super WinPE使用上已经没有太多问题了,不过依然有一些问题需要完善。
1.加入硬件驱动
使用PE Builder建立的Super WinPE是最小化的,只有基本的硬件驱动,而且尽管已经集成了网络插件,但实际上可能仍无法用它实现网络功能,原因在于网卡驱动与具体的网卡可能不相配。要正常使用网络,需要对应为你计算机的网卡在Super WinPE中加入驱动,仍然可以使用插件的形式,以3Com网卡驱动为例。建立inf文件,例如3Com.inf,其内容如下:
[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文件,导入PE Builder中后会在plugin目录中建立子目录,然后拷贝网卡驱动3com.sys和3com32.inf至此目录下。在制作Super WinPE时激活此插件即可使用3Com的网卡驱动。
2.快速修改镜像
用PE Builder制作完成的ISO镜像大约200MB左右,刻录200MB的小光盘恰好合适,但如刻录一张700MB的普通光盘则未免浪费空间。那么最好集成更多的软件工具,但是否又需重新制作呢?直接使用ISO工具修改即可。不过由于此ISO镜像是使用ISO-9660:1999(version 2)文件系统标准,必须作出相应设置才能保证ISO文件的正确结构。下面的演示中我们将替换Super WinPE的背景墙纸,并为系统添加一个绿色软件WinRAR。
使用软件UltraISO打开镜像,首先调整ISO文件的格式。点击菜单“文件→属性”,在弹出窗口中依次选择“Joliet光盘文件系统标准→Windows/Unix(31)→扩展(110)”。在硬盘上准备一张分辨率为800×600的BMP图片,将文件名改为“NU2”,打开ISO文件的“I386\ system32”,使用鼠标右键将刚准备好的NU2.bmp文件替换该目录下的同名文件。这样系统背景墙纸则已经改变。同样道理,对于无需修改注册表的绿色软件一样可以编辑ISO文件集成到系统中,无需编写插件。打开ISO镜像文件的Progr-ams目录,使用鼠标右键将硬盘上已有的WinRAR安装文件夹添加到其中。然后将ISO镜像文件中“Programs\ NU2MENU”目录下的nu2-menu.xml文件提取出来,用文本编辑器打开,在<MENU ID="Programs">和</MENU>之间添加如下行(注:中间无换行):
<MITEM TYPE="ITEM" DISABLED="@Not(@FileExists(@GetProgramDrive()\Programs\winrar\winrar.exe))" CMD="RUN" FUNC="@GetProgramDrive()\Programs\winrar\winrar.exe">winrar</MITEM>
存盘后再覆盖ISO镜像中的nu2menu.xml文件,这样就可在系统菜单下使用WinRAR了 |
|