Inno Setup入门(十二)——Pascal脚本(1)
事件函数(1)
Inno Setup支持以下函数和过程。
function InitializeSetup(): Boolean;
该函数在安装程序初始化时调用,返回False 将中断安装,True则继续安装,测试代码如下:
|
function InitializeSetup(): Boolean; begin Result := MsgBox('安装程序正在初始化,你确定要安装吗?', mbConfirmation, MB_YESNO) = idYes; if Result = False then MsgBox('你放弃了安装,程序直接退出', mbInformation, MB_OK); end; |
procedure InitializeWizard();
该过程在开始的时候改变向导或者向导页,不要指望使用InitializeSetup函数实现改变向导页的功能,因为InitializeSetup函数触发时向导窗口并不存在。
procedure DeinitializeSetup();
该过程在安装终止时被调用,注意及时在用户没有安装任何文件之前退出也会被调用。测试代码如下:
|
procedure DeinitializeSetup(); begin msgbox('DeinitializeSetup is called',mbInformation, MB_OK); end; |
procedure CurStepChanged(CurStep: TSetupStep);
该过程提供用户完成预安装和安装之后的任务,更多的是提供了安装过程中的状态。参数CurStep=ssInstall是在程序实际安装前(所有的路径等都配置好之后准备写入文件钱),CurStep=ssPostInstall是实际安装完成后,而CurStep=ssDone是在一次成功的安装完成后、安装程序终止前(即点击finish按钮后执行)。测试代码如下:
|
procedure CurStepChanged(CurStep: TSetupStep); begin if CurStep=ssinstall then MsgBox('准备写入文件了', mbInformation, MB_OK); if CurStep=ssPostinstall then MsgBox('文件复制完成', mbInformation, MB_OK); if CurStep=ssDone then MsgBox('软件成功安装', mbInformation, MB_OK); end; |
三个步骤的截图如下:



function NextButtonClick(CurPageID: Integer): Boolean;
当用户单击下一步按钮时调用。如果返回True,向导将移到下一页;如果返回False,它仍保留在当前页。测试代码如下:
|
function NextButtonClick(CurPageID: Integer): Boolean; begin Result := MsgBox('到下一页去吗?', mbConfirmation, MB_YESNO) = idYes; end; |
截图如下:

function BackButtonClick(CurPageID: Integer): Boolean;
和前面的NextButtonClick函数相反,当用户单击返回按钮时调用。如果返回True,向导将移到前;如果返回False,它仍保留在当前页,测试代码略。
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
当用户单击取消按钮或单击窗口中的关闭按钮时调用。Cancel 参数指定取消进程是否该发生;默认为True。Confirm 参数指定是否显示“退出安装程序吗?”的消息框;默认为True。如果Cancel 设为False,那么Confirm 的值将被忽略。测试代码如下:
|
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean); begin cancel:=False; end; |
和你所预料的一样,本段代码将会导致Cancel按钮失效,即逼迫用户完成安装或者采用非正常方式终止安装程序。
|
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean); begin Confirm:=false; end; |
而上面的这段代码将会在用户点击Cancel按钮之后直接退出,不需要做进一步的确认。
function ShouldSkipPage(PageID: Integer): Boolean;
向导调用这个事件函数确定是否在所有页或不在一个特殊页 (用PageID 指定) 显示。如果返回True,将跳过该页;如果你返回False,该页被显示。注意:这个事件函数不被wpWelcome、wpPreparing 和wpInstalling 页调用,还有安装程序已经确定要跳过的页也不会调用 (例如,没有包含组件安装程序的wpSelectComponents)。测试代码如下:
|
function ShouldSkipPage(PageID: Integer): Boolean; begin if PageID=wpSelectDir then Result:=True; end; |
本段代码将会使得安装程序跳过选择安装目录的页面,即如下页面是不会被显示的:

可用的PageID有: wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpInfoAfter, wpFinished
procedure CurPageChanged(CurPageID: Integer);
在新向导页 (由CurPageID 指定) 显示后调用。测试代码如下:
|
procedure CurPageChanged(CurPageID: Integer); begin Msgbox('ha,new page!',mbInformation, MB_OK); end; |
该段代码将会导致每出现一个新的一面的时候就会弹出一个消息框。
(待续)
Inno Setup入门(十二)——Pascal脚本(1)的更多相关文章
- Inno Setup入门(二十二)——Inno Setup类参考(8)
: Install Setup 2013-02-02 11:31 477人阅读 评论(0) 收藏 举报 列表框 列表框(ListBox)是Windows应用程序中重要的输入手段,其中包括多个选项用户可 ...
- (转)Inno Setup入门(二十二)——Inno Setup类参考(8)
本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17268473 列表框 列表框(ListBox)是Windows应用程 ...
- Inno Setup入门(二十二)——Inno Setup类参考(8)
http://379910987.blog.163.com/blog/static/33523797201121331832201/ 列表框 列表框(ListBox)是Windows应用程序中重要的输 ...
- Inno Setup入门(二十一)——Inno Setup类参考(7)
Install Setup 2013-02-02 11:31 378人阅读 评论(0) 收藏 举报 复选框 复选框(CheckBox)用于多个并不互斥的几个选项中作出一个或者多选择,例如字体可以有粗体 ...
- (转)Inno Setup入门(二十一)——Inno Setup类参考(7)
本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17268435 复选框 复选框(CheckBox)用于多个并不互斥的几 ...
- Inno Setup入门(二十一)——Inno Setup类参考(7)
复选框 复选框(CheckBox)用于多个并不互斥的几个选项中作出一个或者多选择,例如字体可以有粗体.斜体和下划线,这三种状态可以任意组合,像这样的选项可以采用复选框实现.Pascal脚本中对应的类是 ...
- Inno Setup入门(二十)——Inno Setup类参考(6)
存储框 存储框也是典型的窗口可视化组件,同编辑框类似,可以输入.显示文本,但是和编辑框不同的是,编辑框只能编辑.显示单行文本,而存储框则可以对多行文本进行操作.存储框的类定义如下:< xmlna ...
- (转)Inno Setup入门(二十)——Inno Setup类参考(6)
本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17251041 存储框 存储框也是典型的窗口可视化组件,同编辑框类似, ...
- Inno Setup入门(二十)——Inno Setup类参考(6)
http://379910987.blog.163.com/blog/static/3352379720112515819485/ 存储框 存储框也是典型的窗口可视化组件,同编辑框类似,可以输入.显示 ...
- Inno Setup入门(二十四)——Inno Setup类参考(10)
这里介绍一下FolderTreeView 类. TFolderTreeView = class(TCustomFolderTreeView) property OnChange: TNotifyE ...
随机推荐
- linux内核源码中两个重要的宏
转载:http://www.cnblogs.com/skywang12345/p/3562146.html 倘若你查看过Linux Kernel的源码,那么你对 offsetof 和 containe ...
- Windows下卸载Oracle
先在软件运行界面卸载 Oracle 一.删掉主目录 二.删除注册表内容. 运行regedit命令,删除下面内容: --1.HKEY_CLASSES_ROOT,删除此键下所有以Ora,Oracl ...
- 【bzoj4094】【洛谷3097】Optimal Milking
假的,假的,都是假的. 题意是最大点独立集还要算贡献,写个网络流岂不是GG? 其实这个也就是奇偶不能选而已……所以无外乎这么四种情况: 左开右闭 左闭右开 都闭 都开 线段树按照套路维护一下就好了. ...
- Java常见知识点(二)
21.常量池专门用于管理在编译时被确定并被保存在已编译的.class文件中的一些数据.它包括了关于类.方法.接口中的常量,还包括字符串常量. 22.String已经重写了Object的equals ...
- pyhton mechanize 学习笔记
1:简单的使用 import mechanize # response = mechanize.urlopen("http://www.hao123.com/") request ...
- 【python】正则表达式相关
注意:Python3.X 的print要有括号, Python 2.x的不需要 放上学习时写的例子: import re m = re.match(r'(\w+) (\w+)(?P<sign&g ...
- Selenium2+python自动化74-jquery定位【转载】
转至博客:上海-悠悠 前言 元素定位可以说是学自动化的小伙伴遇到的一道门槛,学会了定位也就打通了任督二脉,前面分享过selenium的18般武艺,再加上五种js的定位大法. 这些还不够的话,今天再分享 ...
- Java中的标记接口(zz)
1.什么是标记接口? Java中把没有定义任何方法和常量的接口称之为标记接口,我们经常使用的比较多的是“”Serializable“”,这个接口也是没有定义人任何方法和常量的. 2.标记接口的作用? ...
- IOC(控制反转)的理解
1.IOC的理论背景 我们知道在面向对象设计的软件系统中,它的底层都是由N个对象构成的,各个对象之间通过相互合作,最终实现系统地业务逻辑[1]. 图1 软件系统中耦合的对象 如果我们打开机械式手表的后 ...
- Mysql优化之——启用查询缓存
启用MySQL查询缓存可以极大地减低数据库服务器的CPU使用率,实际使用情况是:开启前CPU使用率120%左右,开启后降到了10%. 查看查询缓存情况: mysql> show variable ...