巧妙修改Windows 9x安装程序的显示界面

如果安装过Windows 95/98/Me,会发现一个有意思的现象,就是安装界面窗口特别大,中文字体也是大号字体,尤其是在Win98/Me的安装界面中,安装窗口大到盖住了左侧的内容:

当然,这样的界面肯定是不正常的,正常情况下应该是这种样式才对:

一般情况下,这样的安装界面在Win95/98下面都不会出现窗口过大的问题。那么问题出在哪儿呢?答案就在安装文件里的mini.cab里面。

何为mini.cab?简单来说它包含一个最简Windows 3.1环境(Mini-Windows),通过加载最简环境以运行9x的安装程序(w98setup.bin,w9xsetup.bin),而Win9x的安装界面样式,取决于mini.cab里面加载的核心组件和字体。在简繁中文的mini.cab里面,VGASYS.FON是系统字体,中文字体加载则是以TrueType宋体为主,兼顾点阵宋体,其中SIMSUN12.FONSIMSUN16.FON都是点阵字体。其原理是通过加载ULFONT.FOD字体驱动程序,实现TrueType字体在9pt和12pt下以点阵字体的形式显示。简体mini.cab里面自带的SIMSUN12.FON中文显示还行,但是英文实在难看,这里其实可以用另外一个版本的SIMSUN12.FON来替代。

那么有办法修改mini.cab吗?答案是有,而且目前有两种办法。

第一种办法是利用繁体mini.cab里面的USER.EXE(加上适当修改),繁体Win9x之所以不会出现窗口过大的问题,关键就在于里面的USER.EXE,其版本号是3.10.0.153,相较于Win3.1繁体原版的USER.EXE(3.10.0.151)是魔改过的版本。在简体的mini.cab里面可以直接替换这一组件,实际效果如图:

这一方法优点是不需要修改其它任何安装文件,唯一不完美的地方就是在简体字体下窗口还是相对偏长,左侧稍微遮了一点。

第二种办法是更换VGASYS.FON(系统字体),有两种思路,其一是利用Windows NT 3.51自带的VGASYS.FON,这一系统字体文件可以以9pt的形式显示中文字体,效果如图:

在这一模式下,显示的窗口不再盖住左侧信息,而且无论采用什么样的中文点阵字体,英文字母都以VGASYS.FON的形式显示,缺点是安装过程中的看板字体会显示不正常,这种情况下需要修改PRECOPY.CAB里面的win95bb.ini并在WIN.INI里面修改需要加载的字体,可以再复制一个SIMSUN12.FON并更名为其它名字(比如SYSRES.FON),然后在WIN.INI里添加相关内容(否则看板字体加载时仍会不正常)修改后不需要重新打包只需将其放入安装文件所在目录即可。

另一种方法是自行编译系统字体,具体方法见“为Windows 3.1制作新的系统字体”一文,创建过的字体可以重命名为VGASYS.FON,也可以命名为其它名字,但需要在MINI.CAB中SYSTEM.INI里面的fonts.fon=后面填上生成的系统字体文件名。效果如图:

这一方法下窗口显示可以达到最佳效果,和95/98下面的窗口大小一模一样,而且不会影响其它部分文字的正常显示(尤其是复制文件过程中的看板文本部分)。

如何打包?

最后,对MINI.CAB部分修改完毕了,总共两个分卷的MINI.CAB该如何重新打包呢?这时候就得需要MS的官方工具DIAMOND了(MAKECAB也可以)。

首先下载DIAMOND工具和脚本文件(chico.txt,当然也可以新建txt编写),然后对脚本文件进行修改,修改方法见下图。脚本文件修改完毕后,在CMD下执行命令DIAMOND /F CHICO.TXT即可,然后在DIAMOND主程序所在目录中可以看到disk1disk2两个文件夹,里面就是生成的MINI.CABMINI1.CAB。需要注意的是,CAB分卷文件一旦生成,绝对不能自行修改文件名,否则分卷失效,安装程序会无法识别到MINI1.CAB。

没有报错即成功生成.CAB文件

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注