第三讲 WinBuilder Script脚本入门
1. 简介
前面讲过,WINBUILDER只是一个脚本语言解释运行程序,PE的制作,都是靠脚本来完成。
Winbuilder脚本,是以.script为后缀的纯文本文件,可以用任何文本文件编辑工具来编辑,当然,WINBUILDER也自带编辑器,并且有脚本精灵提供脚本语法帮助,但是WINBUILDER脚本编辑器的BUG也不少,需要一点时间适应。
2. 脚本三大部分
一个典型的winbuilder脚本,是一个类INI文件如文本文档, 通常由四大部分组成: [MAIN] [VARIABLE] [PROCESS] [INTERFACE]
1) MAIN: 脚本的基本定义,这一部分可以看成是一个简单的INI文件
变量键值列表:
Title -脚本名字,会在中WINBUILDER中显示
Description - 脚本基本描述,简单描述该脚本功能
Author - 作者
Credits -对脚本有帮助的人的信息
Date - 脚本更新日期,可用任意日期格式,推荐用 "yyyy-mm-dd"格式
Version - 脚本的版本号
Website / topic discussion - 帮助信息或讨论组的网址链接
download_level - 下载级别,定义在下载一个项目时,用那种模式(分最小,推荐,完全,BATA下载模式)下载是会下载到这个脚本
Selected- 定义在项目中有没有选择这个脚本,在生成PE时,会不会运行该脚本。键值有三种 TRUE/FALSE/NONE, NONE表示在WINBUILDER中没有复选框让你选择是否运行该脚本。
Locked - 是否允许用户编辑该脚本,键值有两种 True/False
Level - 一个非常重要的键值,用来定义脚本在生成PE时的运行顺序, 键值用数字1-10表示, LEVEL越小,优先级越高
脚本运行顺序:
制作PE时,脚本的运行顺序对PE的生成很重要,如果脚本运行的顺序不对,可能会导致PE无法生成。
在WINBUILDER界面中,在树型列表中脚本的顺序,代表了脚本在生成PE时代运行顺序。
WINBUILDER脚本运行及在界面中显示顺序: LEVEL -> 子目录名 -> 文件名
LEVEL相同的情况下,先按子目录名排序,这样就保证了同一子目录内的文件在界面中能显示在一起
NativeEx的!WBManager和Build子目录中的文件,LEVEL都是1,所以按子目录排序,!WBManager就排在Builder前面
LEVEL相同,子目录相同,则按文件名来排序
Build子目录中,只看脚本标题,会觉得没有顺序,其实只要看他们所对应的文件就知道是按文件名排序的了
Retrieve Project Info ------------ 1 - ProjectInfo.Script
Make directories ------------ 2 - MakeDirs.Script
HoJoPE Hives Factory ------------ 3 - hivesFactory.Script
Build Model ------------ 4 - BuildModel.Script
Copy and Expand files ------------ 5 - CopyAndExpand.Script
在Winbuilder界面,指着一个脚本的图标,可以进入脚本编辑界面,在点击Scription,可以修改脚本中MAIN的内容
2) Variables 变量, 定义用户变量,和MAIN一样的INI风格
[variables]
%workdir%=c:\myPath
%project_title%="My Boot Disk"
3) Process 过程
Winbuilder的重要部分,所有生成PE命令都在这一节实现。
脚本运行的结果将存放到日志中,脚本运行完成后,可以在日志界面中查看脚本运行结果。
4) Interface 界面
界面一节定义脚本在Winbuilder中的用户界面, 可以介绍脚本和提供用户可选择内容
Winbuilder提供界面编辑器, 用来帮助我们设计脚本界面
界面编辑器功能简单, BUG也不少, 如果对界面不满意, 可以直接修改脚本[Interface]内容
[Interface]
pTextLabel1="Withthis script you can create an ISO image that will be bootable by manypc emulators and later can be burnt into a CD/DVD or other bootablemedia. ",1,1,15,10,468,42,8,Normal
pTextLabel5="MKISOFSis an open source tool that will create an ISO filesystem based on yourbootable build, this will result in a single file with extension.ISO",1,1,15,82,411,42,8,NormalpTextBox1="Volumename",1,0,15,142,198,21,nativeEx
pWebLabel1="What's an ISO file?",1,10,15,58,90,18,http://en.wikipedia.org/wiki/ISO_image
pButton1="Create a new ISO file",1,8,237,133,150,30,process,create5.bmp
pCheckBox1="Show mkISOfs window",1,3,15,181,129,18,True
pTextLabel6="Thisoption lets you choose if you want to run silently mkISOfs. Thisprocedure can take much time if your build is too big and Winbuilderseems to hang!",1,1,163,172,333,42,8,Normal
pBevel1=pBevel1,1,12,12,218,471,79
pCheckBox2="Add File Based Write Filter.",1,3,26,237,228,18,True
pTextBox2="Size / MB",1,0,306,254,100,21,64
5) 自定义节(自定义过程)
除了上面提到的四大部分外, 我们也可以自定义节作为自定义的用户过程, 并且在[PROCESS]中调用
[自定义节1]
命令1 ...
命令2 ...
[自定义节2]
命令1 ...
命令2 ...
调用方法:
Run,%脚本名%,节名,参数
注: 1) 调用同脚本内其他节时, 依然要提供脚本名; 2) 也可以调用其他脚本内的节
3. 脚本常量
脚本常量 Fix Variables 脚本运行前,由Winbuilder从操作系统中取得并生成的缺省变量,
日期常量(output present date settings)
%day% 日
%Month% 月
%Year% 年
用户环境常量
%TempDir%- 临时目录路径
%ProgramFilesDir% - "Program Files" 路径
%Username%- 当前用户名
%UserProfile% - 用户profiles路径
%WindowsDir% - Windows 路径
%WindowsSystemDir%-indows system32 路径
WinBuilder 相关常量
%BaseDir%- WinBuilder.exe 所在路径
%tools% - 公共的Tools 路径
%version% - WinBuilder 版本号
项目相关常量
%SourceDir%- 源路径, 指源XP路径
%TargetDir% - 目标路径, 生成PE的路径
%ISOfile% - 生成的ISO文件名
%ISOdir% -生成的ISO文件存放路径
%ProjectDir%-项目文件路径
4. 脚本语法
Winbuilder脚本语法一般都是 命令, 参数1, [参数2], [参数3] ...
命令比较多, 但是也很简单, 一看就会,这里就不一 一解释了, 可以到 http://winbuilder.net/help/scripts/script_syntax.html#syntax 查看
在Winbuilder的脚本编辑器里, 有脚本精灵, 可以帮助我们快速使用命令,
方法如下:
1) 在脚本编辑器中,选择"Source"源代码, 选择要添加命令的行, 在点击上面"魔术棒"图标
2) 在弹出菜单中, 选择要用到的命令
3) 在编辑器中,会出现所选择的命令, 再修改其中的参数即可
界面是英文的,看得很吃力呀。如果是汉化版的就更好了。
界面可以汉化,可以把汉化文件放到 Project\Tools\Languages 子目录下,如果没有此子目录,可以自己手动建立
然后,在WB中,点击Advance图标,选择Languang, 然后设置语言下拉框里就可以选择中文了。