用Setup Factory 7.0制作安装程序 进阶篇
在基础篇里面,我们简单地讲了一下安装程序的制作过程,但是如果碰到一个稍微复杂点的安装程序,比如需要对注册表进行编辑,或是安装过程中需要执行外部文件等,那么又该如何处理呢?大家不要着急,看完进阶篇后你就知道怎么办了。 既然要处理各种复杂的事件,那当然是离不开编程。Setup Factory 7.0也提供了自己的语言来编写代码,主要是在“屏幕”和“操作”中。我们先来看一下主界面左侧的“操作”,共有4项:启动时、预安装时、进行安装时、关机时。如下图。 点击“启动时”,即可编写安装程序启动时需要处理的事件代码。如下图。 点击窗口下方的“添加操作”,可以加入Setup Factory 7.0所提供的事件代码。如下图。 比如想添加一个要求输入密码的对话框,则可选择Dialog类别中的Input操作,如下图。 点击下一步后,在该操作的各项目中输入相应数据,如下图。 点击完成后,该操作就以代码的形式出现在窗口中了,如下图。 接着可以添加条件语句来判断密码是否有效。点击窗口下方的“添加代码”,并选择“if语句(不相等)”。如下图。 添加后,在窗口中多了几段代码,如下图。 这时,需要按它提供的格式进行修改这些代码。如下图。 我们需要在if语句内加入密码无效后的操作,即提示密码出错和退出安装程序。点击“添加操作”后,选择Dialog类别中的Message操作以及Application类别中的Exit操作,完成后代码如下图所示。 这样就实现了一个简单的密码登录功能,稍微有些缺陷的是密码输入时是以明文显示。不过我们这里讲述的是如何通过添加操作和代码来实现相应功能,否则我们完全可以在安装之前的屏幕中通过添加验证序列号来实现此功能。 那么如何实现验证序列号的功能呢?首先我们要生成属于安装程序的序列号。在菜单工程中点击序列号,出现如下图所示窗口。 选中列表List 1,点击编辑,并选择命令中的生成。如下图。 然后输入需要的序列号数量以及格式,如下图。 确定后,即可生成所需的序列号,如下图。可将这些序列号全选后导出到一个文本文件中。 确定后,再到安装之前的屏幕中添加验证序列号屏幕。如下图。这样,安装过程中验证序列号的功能就实现了。 在菜单的工程中点击到期,并启用相关设置后,安装程序还能具备使用到期功能。如下图。 按上图中的设置制作的安装程序,如果执行安装程序的电脑上日期不在此范围之内,那么就会提示如下画面。不过,到期功能并不太实用,因为只要将电脑上的日期改成安装程序制作日期就能继续使用了。 有时候在安装过程中或安装后需要执行其中一个程序,比如PJ程序、汉化程序,或是一个驱动什么的东东,而这个程序可能不需要安装到电脑中,只需要在安装中被执行一次就OK了。那么我们就可以这么做。 由于该程序不需要随着其他文件一起安装到电脑中,所以不能通过添加文件来加入到安装包中,而是点击主界面左侧“资源”中的“原始文件”来添加,如下图。这样在安装程序执行时,该文件就被解压缩到临时目录下,并在安装程序正常关闭后自动删除。 然后,我们就可以在某个屏幕中去添加相应代码。比如需要在安装之后但结束屏幕还未显示之前执行该程序,那么就可以在该屏幕的“On Preload”操作中加入Shell.Execute。注意临时目录的变量为%TempLaunchFolder%,假设该程序文件名为“Setup.exe”,那么可以写成“_TempLaunchFolder.."//Setup.exe"”。即某个字符型变量与字符串组合可以用“_变量名..字符串”的格式来书写。仅仅添加这一条代码还不够,我们还要判断该程序是否执行完毕,才能继续下一步,比如再执行下一个外部程序什么的。这样就得用到循环语句,通过添加代码中的“repeat …until循环”来得到一个循环语句,再在循环内加入操作File.IsInUse,并将值赋给一个自定义变量,最后修改循环条件。如下图。 还有一种情况需要重点讲述一下,就是安装程序不需要手动选择安装目录,而是固定安装在电脑中的某个目录下,比如插件、汉化、PJ等。那么这个目录的取得可能就是要读取注册表内某个软件的安装路径来重新定义了。下面就讲一下如何制作。 首先我们要从注册表内取得安装路径,这个取得过程应该是安装程序启动时就需要执行了。点击主界面左侧“操作”中的“启动时”,添加操作Registry.GetValue,并将值赋给一个自定义变量,Registry.GetValue的写法中,注意SubKey子键名称中子键连接符是“//”,如下图。 此时,上图中的变量ProductPath就得到了一个安装路径,稍做处理后就可以作为本安装程序的安装路径。但是由于该变量是在代码中定义的,不能用在安装包内文件属性中的“目标”中。“目标”中的变量必须是会话变量,因此我们可将变量ProductPath再赋给某个会话变量。会话变量可以是Setup Factory 7.0自带的,也可以自定义。点击主界面左侧“设置”中的“会话变量”,再点击窗口下方的“添加”可添加自定义会话变量。如下图。 然后再到代码中将刚刚的变量ProductPath赋给会话变量,注意必须使用操作SessionVar.Set来给会话变量赋值,例如SessionVar.Set("%AppFolder%", ProductPath)。如下图。 如果安装程序需要将安装包内的文件分别安装到不同目录下,那么就必须将这些文件属性中的“目标”修改成不同的会话变量才可实现。 Setup Factory 7.0的常用功能差不多就这些,主要是看你怎么合理利用它自带的操作,再结合控制代码,就能编写出功能强大的安装程序了。 |