事件函数(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)的更多相关文章

  1. Inno Setup入门(二十二)——Inno Setup类参考(8)

    : Install Setup 2013-02-02 11:31 477人阅读 评论(0) 收藏 举报 列表框 列表框(ListBox)是Windows应用程序中重要的输入手段,其中包括多个选项用户可 ...

  2. (转)Inno Setup入门(二十二)——Inno Setup类参考(8)

    本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17268473 列表框 列表框(ListBox)是Windows应用程 ...

  3. Inno Setup入门(二十二)——Inno Setup类参考(8)

    http://379910987.blog.163.com/blog/static/33523797201121331832201/ 列表框 列表框(ListBox)是Windows应用程序中重要的输 ...

  4. Inno Setup入门(二十一)——Inno Setup类参考(7)

    Install Setup 2013-02-02 11:31 378人阅读 评论(0) 收藏 举报 复选框 复选框(CheckBox)用于多个并不互斥的几个选项中作出一个或者多选择,例如字体可以有粗体 ...

  5. (转)Inno Setup入门(二十一)——Inno Setup类参考(7)

    本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17268435 复选框 复选框(CheckBox)用于多个并不互斥的几 ...

  6. Inno Setup入门(二十一)——Inno Setup类参考(7)

    复选框 复选框(CheckBox)用于多个并不互斥的几个选项中作出一个或者多选择,例如字体可以有粗体.斜体和下划线,这三种状态可以任意组合,像这样的选项可以采用复选框实现.Pascal脚本中对应的类是 ...

  7. Inno Setup入门(二十)——Inno Setup类参考(6)

    存储框 存储框也是典型的窗口可视化组件,同编辑框类似,可以输入.显示文本,但是和编辑框不同的是,编辑框只能编辑.显示单行文本,而存储框则可以对多行文本进行操作.存储框的类定义如下:< xmlna ...

  8. (转)Inno Setup入门(二十)——Inno Setup类参考(6)

    本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17251041 存储框 存储框也是典型的窗口可视化组件,同编辑框类似, ...

  9. Inno Setup入门(二十)——Inno Setup类参考(6)

    http://379910987.blog.163.com/blog/static/3352379720112515819485/ 存储框 存储框也是典型的窗口可视化组件,同编辑框类似,可以输入.显示 ...

  10. Inno Setup入门(二十四)——Inno Setup类参考(10)

    这里介绍一下FolderTreeView 类. TFolderTreeView = class(TCustomFolderTreeView)   property OnChange: TNotifyE ...

随机推荐

  1. nginx的常规配置

    程序员们,在北上广你还能买房吗? >>>   nginx的常规配置 nginx的使用非常简单,只需要配置好我们需要的各种指令,就能跑起来.如果你需要添加模块,还需要添加模块方面的配 ...

  2. [USACO1.3]虫洞

    Luogu链接 题目描述 农夫约翰爱好在周末进行高能物理实验的结果却适得其反,导致N个虫洞在农场上(2<=N<=12,n是偶数),每个在农场二维地图的一个不同点. 根据他的计算,约翰知道他 ...

  3. POJ1286 Necklace of Beads

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8263   Accepted: 3452 Description Beads ...

  4. 51nod 1791 合法括号子段

    有一个括号序列,现在要计算一下它有多少非空子段是合法括号序列. 合法括号序列的定义是: 1.空序列是合法括号序列. 2.如果S是合法括号序列,那么(S)是合法括号序列.3.如果A和B都是合法括号序列, ...

  5. 金中欢乐赛 A题

    题目传送门 这道题就贪心.... 正的一坨和负的一坨间隔 #include<cstdio> #include<cstring> #include<algorithm> ...

  6. ACdream 1113 The Arrow (概率dp求期望)

    E - The Arrow Time Limit:1000MS     Memory Limit:64000KB     64bit IO Format:%lld & %llu Submit  ...

  7. Spring容器整合WebSocket

    原链接:http://blog.csdn.net/canot/article/details/52575054 WebSocker是一个保持web客户端与服务器长链接的技术.这样在两者通信过程中如果服 ...

  8. Python与Mysql交互

    #转载请联系 在写内容之前,先放一张图,bling- 这张图算是比较详细的表达出了web开发都需要什么.用户访问网页,就是访问服务器的网页文件.这些网页文件由前端工程师编写的.服务器通常用nginx/ ...

  9. SQL语句中的select高级用法

    #转载请联系 为了更好的了解下面的知识点,我们先创建两张表并插入数据. # 学生表 +----+-----------+------+--------+--------+--------+------ ...

  10. Unity中Instantiate物体失效问题

    才开始学Unity,开始总是这样用Instantiate函数: GameObject temp = (GameObject)Instantiate(bulletSource, transform.po ...