[原创教程]打造个性的自解压模块 之一

  最近不是很忙写几篇教程与大家共享。转贴请注明原创作者—- 寒星 or 寒夜孤星
  大家有什么问题,欢迎相互交流讨论!

  说起 WinRAR,无论大虾还是菜鸟恐怕很少有不知道的。rar 格式已成为网络上的主要压缩文件形式了。同时利用 WinRAR 制作的自解压文件也很多,但是利用默认的自解压模块做出文件基本上都是一副面孔。其实,我们可以通过自己的改造让自解压模块更符合自己的习惯,更突出自己的个性。
依照惯例先看张效果图:

  “工欲善其事,必先利其器”。在开始修改之前,我们要准备好以下工具备用, WinRAR 自不必说(目前的最新版为3.42),还需 UPX ShellResource HackereXescope(这三款工具网上找到都有相应的汉化版)。

  打开 WinRAR 的安装目录,找到 Default.SFX ,先要做好备份,以防在出错后及时的补救。由于 Default.SFX 被加壳压缩过,所以要先通过 UPX 将其解压。UPX Shell 是 UPX 的图形化界面程序,通过它能够方便的使用 UPX 的命令。解压后 Default.SFX 的体积由 54 KB 变为了 105 KB,这时已经可以通过工具修改 Default.SFX 中的资源了。

  首先,通过 Resource Hacker 打开 Default.SFX 如图1,

  从左边的目录树中打开“对话框”并依次打开其子项。其中每个子项都包含3个资源,1028 为繁体中文资源,1033 为英文资源,2052 为简体中文资源。我们可以将几乎用不到的繁体中文资源以及英文资源全部剔除删掉,这样可以减小自解压模块的体积。然后我们同样剔除“字符串”及“255”中的多余资源。剔除这些资源后,可以使其体积再减小 9KB 。我们这样做的目的就是要尽可能的控制修改后自解压模块的体积,不然的话,做出来的自解压模块由于体积过大也会影响其实用性。保存一下,先暂时关闭 Resource Hacker 。

  下面我们再使用 eXescope 打开 Default.SFX 如图2,

  在左边的目录树中找到资源,并打开其下一级目录“对话框”,其中“ASKNEXTVOL”为分卷压缩包解压提示,“GETPASSWORD1”为输入解压密码项,“LICENSEDLG”为安装协议对话框,“RENAMEDLG”为重命名对话框,“REPLACEFILEDLG”为替换文件对话框,“STARTDLG”为自解压模块的主对话框。由于“ASKNEXTVOL” 、“GETPASSWORD1”、“RENAMEDLG”、“REPLACEFILEDLG”资源对于我们的修改无关紧要,所以我们只需要修改“LICENSEDLG”与“STARTDLG”这两处重要的资源。

  为了便于修改,我们先来修改“STARTDLG”中的资源,在 eXescope 中,选中“STARTDLG”,即可看到其详细信息如图3。

  按下 F8 即可打开“对话框编辑器”。单击其中的对象元素,可以通过即时的调节其大小与位置。如果要作细微的调整,可以直接在 eXescope 右侧的明细窗口上方相应的地方填写具体的数值。对于文字信息可以在标题中直接修改。在编辑保存后可以随时按下 F12 来预览修改后的样式。这一步也许需要反复的调整,调整到自己满意就可以。通过不断的修改,自解压模块已经有了很大的改变如图4。

  (提示:在利用 eXescope 修改完保存时会提示“更新整理文件大小”勾选后, eXescope 可以对自解压模块重新编辑,有利于删除文件中多余的信息,及压缩空间,可使自解压模块文件的体积减小。)
  由于“LICENSEDLG”与“STARTDLG”有很多相同之处,其中的对象元素较少,所以,按照“STARTDLG”中的窗口大小,对象元素的位置,一一调整即可,这里便不再赘述。修改后,保存,做到这里基本的修改工作已经完成。(“LICENSEDLG”的界面可以与“STARTDLG”相同,也可以重新布置,但为了美观、统一风格,建议采用相同的布局设置。)

  既然要做自己的自解压模块,就要突出个性。 WinRAR 默认的图标虽然看起来也很有质感,但是看多了也会觉得厌倦。我们可以利用 Photoshop 来做一些能体现自己个性的位图及图标,其中图片要求为 256 色的 BMP 位图格式,图片的宽高可以依据上一步中的设置自定;而图标则为ICO格式,具体需要4个样式,分别是 16×16 16 色,16×16 256 色,32×32 16色,32×32 256 色。如果嫌麻烦,可以找一些自己认为比较合适的资源,将其按照要求修改后使用。做好这些后,通过 Resource Hacker 打开 Default.SFX ,找到其中的图标项和位图项,按照格式,分别替换原始模块中的相应图标资源与位图资源。如图6
  (建议使用色彩简单的图案或尽可能的减小位图的大小,最好能将制成的位图资源控制在 20KB 以内,因为这直接关系到最后生成的模块与制作自解压文件的体积。)

  完成上一步后,个性化的修改已基本完成,如果您觉得满意,就可以跳过以下步骤。下面的步骤是为了彰显不同,以及更进一步的个性化,我们要为自己解压模块打上自己的标记。利用 Resource Hacker 打开 Default.SFX ,在“对话框”中的“STARTDLG”的窗口上适当的位置单击鼠标右键,选择“插入控件”,在“预定义”中选择“GROUPBOX”后确定。调整好“GROUPBOX”的大小后,再利用同样的方法插入“STATIC”,并在标题位置填入自己定义的信息,如图5,
  “编译脚本”,保存退出即可。

  接下来主要是进行测试。具体过程是将自解压模块放在WinRAR的安装目录中,然后创建自解压文件测试自解压模块工作是否正常。某些情况下,Resource Hacker保存资源后会出现无法使用的问题,这时只需将修改出问题的模块删掉,使用其保存前自动备份的模块(Default_original.SFX)改名后重新修改即可。测试满意后,再利用UPX Shell将修改后的模块压缩。一般来讲,压缩比能达到50%左右,体积已大幅减小。再次将压缩后的模块复制到WinRAR的安装路径下,如果测试没问题,恭喜你,大功告成。

  至此,个性化的自解压模块已经修改完毕,下面还有重要的一步就是要在利用 UPX Shell 将已经修改好的自解压模块压缩,这样WinRAR既可以减小自解压模块的大小,也有利于减小以后生成自解压文件的体积。(笔者自己修改后的自解压模块仅比默认的大了 3KB,个人对此还比较满意。)然后我们就可以利用脚本注释来制作出彰显个性的自解压程序或是做出安装程序。WinRAR就是利用自解压模块进行安装的。于是笔者便依据 WinRAR 的安装脚本做了一个 WinRAR 的安装程序。
如图