基础篇
我们在用VB等语言编写并编译成程序后,往往会希望制作一个精美的安装程序来发布自己的软件。在这里推荐使用Setup Factory 7.0,这是一款强大的安装程序制作工具。该软件提供了安装制作向导界面,即使你对安装制作不了解,也可以生成专业性质的安装程序。可建立快捷方式,也可直接在 Windows 系统的注册表加入内容,还能在 Win.ini 和 System.ini 内加入设定值,更可以建立反安装选项等等。它内附的向导可以一步步的带领您做出漂亮又专业的安装程序。目前该软件的最新版本为7.0.1,可在网上下载到,或访问该软件的汉化网站http://www.hanzify.org进行下载。
我在这里简单介绍一下如何使用Setup Factory 7.0来制作一个安装程序。
打开软件后,默认会跳出一个工程向导的界面,如下图。
此时可点创建来新建一个工程,或是按Esc键退出工程向导。由于在首次安装完Setup Factory 7.0后,默认语言为英文(可能会根据软件版本而不同),这样在制作安装程序时很不方便,因此需要先将默认语言改为中文简体。所以在这里我们先按Esc键退出工程向导,直接进入软件主界面。如下图。
在主界面菜单的编辑中选择“参数选择”,在出现的窗口中打开Document并点击Languages,然后在窗口右侧选中Chinese (Simplified),再点击下方的“设为默认”,最后确定即可。如下图。
现在我们可以开始制作安装程序了。先要添加安装文件。在菜单的工程中选择“添加文件”,或在主界面左侧的文件中选择“添加文件”。如下图所示,如果添加多个文件,则可选择“此文件夹中的所有文件”,如果有子文件夹,则选第三项“此文件夹及其子文件夹中的所有文件”。然后点击添加按钮。
文件加入后,即如下图所示。
用鼠标右键单击某一文件(也可选中多个文件对其编辑),选择“文件属性”,可修改相应设置。如下图所示,目标中默认为%AppFolder%,该变量表示安装路径,可以修改成其他自带变量或自定义变量。
如果该文件为可执行文件(如EXE文件等),那么默认会在开始菜单建立相应的快捷方式。点击上图中的快捷方式,即可出现相关设置。如果不需要快捷方式,可取消相关项目的选择。如下图。
文件加入后,我们需要设置安装程序的相关信息,如变量定义、软件卸载等。
在左侧设置中点击“会话变量”,如下图所示,这些变量是Setup Factory 7.0自带的变量,在此处定义或在代码中定义后,即可在安装过程中使用。
新建安装程序默认会创建卸载,如果你的软件不需要卸载,那么点击主界面左侧卸载中的“设置”,可关闭“创建卸载”。如下图。
下面我们就要开始制作安装过程中的屏幕了。屏幕分三部分,安装前、安装中、安装后。点击主界面左侧屏幕中的工程主题,在跳出的窗口下方选择工程主题可改变安装屏幕的样式。
点击上图的“安装之前”,可在窗口左侧添加或删除相应的屏幕。如下图。
选中某一屏幕后,点窗口下方的编辑按钮,即可对该屏幕进行编辑。如下图。
在“属性”中则可修改屏幕标题和按钮等。如下图。
在“操作”中则可对该屏幕事件进行编程。如下图。通过窗口底部的“添加操作”和“添加代码”,可加入相应的代码来实现所需功能。
在“安装之时”屏幕中,取消“安装期间显示进程屏幕”的选择,该屏幕在安装时将不再出现。如下图。
如果只是想在安装过程中不显示复制的文件名称及其路径,那么点击“编辑”按钮,并取消“显示状态文本一”的选择。如下图。
在“安装之后”中可编辑安装完毕后的屏幕界面。如下图。
上述过程完成后,一个简单的安装程序就可以发布了。点击菜单发布中的构建,如下图所示,默认选择“Web(单个文件)”即可,再点击下一步。
确定输出安装程序的文件夹及安装程序文件名称,如下图。然后点击“构建”按钮。
现在我们就可以测试做好的安装程序了。别忘了将刚刚的Setup Factory 7.0工程保存到电脑上。
进阶篇
在基础篇里面,我们简单地讲了一下安装程序的制作过程,但是如果碰到一个稍微复杂点的安装程序,比如需要对注册表进行编辑,或是安装过程中需要执行外部文件等,那么又该如何处理呢?大家不要着急,看完进阶篇后你就知道怎么办了。
既然要处理各种复杂的事件,那当然是离不开编程。Setup Factory 7.0也提供了自己的语言来编写代码,主要是在“屏幕”和“操作”中。我们先来看一下主界面左侧的“操作”,共有4项:启动时、预安装时、进行安装时、关机时。如下图。
点击“启动时”,即可编写安装程序启动时需要处理的事件代码。如下图。
点击窗口下方的“添加操作”,可以加入Setup Factory 7.0所提供的事件代码。如下图。
比如想添加一个要求输入密码的对话框,则可选择Dialog类别中的Input操作,如下图。
点击下一步后,在该操作的各项目中输入相应数据,如下图。
点击完成后,该操作就以代码的形式出现在窗口中了,如下图。
接着可以添加条件语句来判断密码是否有效。点击窗口下方的“添加代码”,并选择“if语句(不相等)”。如下图。
添加后,在窗口中多了几段代码,如下图。
这时,需要按它提供的格式进行修改这些代码。如下图。
我们需要在if语句内加入密码无效后的操作,即提示密码出错和退出安装程序。点击“添加操作”后,选择Dialog类别中的Message操作以及Application类别中的Exit操作,完成后代码如下图所示。
这样就实现了一个简单的密码登录功能,稍微有些缺陷的是密码输入时是以明文显示。不过我们这里讲述的是如何通过添加操作和代码来实现相应功能,否则我们完全可以在安装之前的屏幕中通过添加验证序列号来实现此功能。
那么如何实现验证序列号的功能呢?首先我们要生成属于安装程序的序列号。在菜单工程中点击序列号,出现如下图所示窗口。
选中列表List 1,点击编辑,并选择命令中的生成。如下图。
然后输入需要的序列号数量以及格式,如下图。
确定后,即可生成所需的序列号,如下图。可将这些序列号全选后导出到一个文本文件中。
确定后,再到安装之前的屏幕中添加验证序列号屏幕。如下图。这样,安装过程中验证序列号的功能就实现了。
在菜单的工程中点击到期,并启用相关设置后,安装程序还能具备使用到期功能。如下图。
按上图中的设置制作的安装程序,如果执行安装程序的电脑上日期不在此范围之内,那么就会提示如下画面。不过,到期功能并不太实用,因为只要将电脑上的日期改成安装程序制作日期就能继续使用了。
有时候在安装过程中或安装后需要执行其中一个程序,比如破解程序、汉化程序,或是一个驱动什么的东东,而这个程序可能不需要安装到电脑中,只需要在安装中被执行一次就OK了。那么我们就可以这么做。
由于该程序不需要随着其他文件一起安装到电脑中,所以不能通过添加文件来加入到安装包中,而是点击主界面左侧“资源”中的“原始文件”来添加,如下图。这样在安装程序执行时,该文件就被解压缩到临时目录下,并在安装程序正常关闭后自动删除。
然后,我们就可以在某个屏幕中去添加相应代码。比如需要在安装之后但结束屏幕还未显示之前执行该程序,那么就可以在该屏幕的“On Preload”操作中加入Shell.Execute。注意临时目录的变量为%TempLaunchFolder%,假设该程序文件名为“Setup.exe”,那么可以写成“_TempLaunchFolder.."\\Setup.exe"”。即某个字符型变量与字符串组合可以用“_变量名..字符串”的格式来书写。仅仅添加这一条代码还不够,我们还要判断该程序是否执行完毕,才能继续下一步,比如再执行下一个外部程序什么的。这样就得用到循环语句,通过添加代码中的“repeat …until循环”来得到一个循环语句,再在循环内加入操作File.IsInUse,并将值赋给一个自定义变量,最后修改循环条件。如下图。
还有一种情况需要重点讲述一下,就是安装程序不需要手动选择安装目录,而是固定安装在电脑中的某个目录下,比如插件、汉化、破解等。那么这个目录的取得可能就是要读取注册表内某个软件的安装路径来重新定义了。下面就讲一下如何制作。
首先我们要从注册表内取得安装路径,这个取得过程应该是安装程序启动时就需要执行了。点击主界面左侧“操作”中的“启动时”,添加操作Registry.GetValue,并将值赋给一个自定义变量,Registry.GetValue的写法中,注意SubKey子键名称中子键连接符是“\\”,如下图。
此时,上图中的变量ProductPath就得到了一个安装路径,稍做处理后就可以作为本安装程序的安装路径。但是由于该变量是在代码中定义的,不能用在安装包内文件属性中的“目标”中。“目标”中的变量必须是会话变量,因此我们可将变量ProductPath再赋给某个会话变量。会话变量可以是Setup Factory 7.0自带的,也可以自定义。点击主界面左侧“设置”中的“会话变量”,再点击窗口下方的“添加”可添加自定义会话变量。如下图。
然后再到代码中将刚刚的变量ProductPath赋给会话变量,注意必须使用操作SessionVar.Set来给会话变量赋值,例如SessionVar.Set("%AppFolder%", ProductPath)。如下图。
如果安装程序需要将安装包内的文件分别安装到不同目录下,那么就必须将这些文件属性中的“目标”修改成不同的会话变量才可实现。
Setup Factory 7.0的常用功能差不多就这些,主要是看你怎么合理利用它自带的操作,再结合控制代码,就能编写出功能强大的安装程序了。
问答篇
1. 问:如何让所安装的软件在开机进入系统后自行启动?
答:在安装程序中将软件添加到注册表的启动项目中,或者添加到开始菜单的启动项目中,还有一种方法是作为系统的服务来启动。在这里介绍的是第一种方法,即在注册表的启动项目中加入软件。
我们可在Setup Factory 7.0制作安装程序过程中,在“安装之后”屏幕的On Preload操作中,加入Registry.SetValue操作代码,写法参照下图,注意Data中为启动软件的绝对路径,可用“_会话变量名..字符串”的格式来书写,也可用String.Concat操作将会话变量与字符串相加并赋值给一字符串变量,然后再将该变量写入此处。
2. 问:如何读写INI文件?
答:可在Setup Factory 7.0中的原始文件中添加INI文件,这样在安装程序执行时,INI文件就被解压缩到临时文件夹中了。然后在Setup Factory 7.0的某个阶段加入操作代码INIFile.GetValue,就可取得INI文件中某区段内的某个值了。如下图。
3. 问:如何在安装程序中实现典型、最小或自定义安装功能?
答:在很多论坛上都看到有人说Setup Factory 7.0做不了典型、最小和自定义安装的功能,我的意见是只有想不到、没有做不到。实际上通过Setup Factory 7.0的程序包功能,很容易就能实现。大家可以参照下面的范例来制作自己的安装程序。
首先,我们要在菜单上工程中的程序包中添加设置。在跳出的窗口中点击添加,并输入相关信息,如下图。
添加完各项安装方式的程序包后,清单如下图。
然后再到每个安装文件属性的程序包选项卡中,选择所属的程序包。注意,软件必要文件必须全选,而各安装方式所需要的文件则选择相应的程序包即可。如下图。
接下来,我们就要开始做屏幕了。在“安装之前”中添加一个单选按钮的屏幕,并将屏幕上的单选按钮进行设置,如下图。
这样设置后,在安装时就可以进行安装方式的选择了。但是我们如果选择了自定义安装,则还需要一个自定义安装的选择项,这个选择项应是可多选的,因此可再添加一个检查框屏幕,并做如下图所示的设置。
这两个屏幕添加完成后,修改其屏幕ID,如下图。
现在我们要开始在这两个屏幕中加入相应的代码来实现不同的安装了。
打开“安装方式选择”屏幕,先记下三个单选按钮的ID为:CTRL_RADIO_BUTTON_01、CTRL_RADIO_BUTTON_02、CTRL_RADIO_BUTTON_03。这个选择的结果会存储在会话变量%RadioSelection%中。然后我们在操作的On Next中开始加入代码。首先是需要将每个程序包设置为不安装,因为假如在安装中选择某项安装方式后点了下一步,但是想修改安装方式又返回到这个屏幕,这样在重新选择了另外一个安装方式后,如果没有将原来选择的安装方式设置为不安装的话,将导致对应的两个程序包都被执行了设置安装的代码。因此必须在点了下一步的代码中先做程序包的初始化。设置一个程序包不安装的写法是:SetupData.SetPackageProperties(“程序包ID”,{Install=false})。
然后我们就可以写条件判断语句了,不过先得将存有单选按钮结果的会话变量处理后赋给另一个新变量,因为会话变量不能直接被使用在条件等式中。另外,如果选择“典型安装”或“最小安装”,应该要跳过“自定义安装选择”屏幕,而直接转到“准备安装”屏幕才对,所以我们需要用到Screen.Jump(“屏幕ID”)这个操作。
该屏幕On Next操作的所有代码如下图。
我们再打开“自定义安装选择”屏幕来加入代码。在On Next操作中加入条件判断语句,根据三个复选框的选择结果来分别对各自的程序包设置安装状态。另外,如果三个自定义安装都不选,就应判定操作错误,因此还需添加相应的代码。如下图。
以上步骤完成后,就可以构建一个具有典型、最小和自定义安装功能的安装程序了。
以上是本人在使用Setup Factory 7.0近一年后的一点点心得。软件的功能当然不止于此,但因本人水平有限,只能介绍这么多了,希望能对大家做出一个自己满意的安装程序有所帮助。