微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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',51); font-family:Arial; font-size:14px; line-height:26px"> procedure CurStepChanged(CurStep: TSetupStep);

该过程提供用户完成预安装和安装之后的任务,更多的是提供了安装过程中的状态。参数CurStep=ssInstall是在程序实际安装前(所有的路径等都配置好之后准备写入文件钱),CurStep=sspostInstall是实际安装完成后,而CurStep=ssDone是在一次成功的安装完成后、安装程序终止前(即点击finish按钮后执行)。测试代码如下:

procedure CurStepChanged(CurStep: TSetupStep);

begin

if CurStep=ssinstall then

MsgBox('准备写入文件',MB_OK);

if CurStep=sspostinstall then

MsgBox('文件复制完成',MB_OK);

if CurStep=ssDone then

MsgBox('软件成功安装',51); font-family:Arial; font-size:14px; line-height:26px"> 三个步骤的截图如下:

function NextButtonClick(CurPageID: Integer): Boolean;

用户单击下一步按钮时调用。如果返回True,向导将移到下一页;如果返回False,它仍保留在当前页。测试代码如下:

function NextButtonClick(CurPageID: Integer): Boolean;

begin

Result := MsgBox('下一页去吗?',MB_YESNO) = idYes;

end;

截图如下:

function BackButtonClick(CurPageID: Integer): Boolean;

和前面的NextButtonClick函数相反,当用户单击返回按钮时调用。如果返回True,向导将移到前;如果返回False,它仍保留在当前页,测试代码略。

procedure CancelButtonClick(CurPageID: Integer; var Cancel,Confirm: Boolean);

用户单击取消按钮或单击窗口中的关闭按钮时调用Cancel参数指定取消进程是否该发生;认为TrueConfirm参数指定是否显示退出安装程序吗?”的消息框;认为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,该页被显示。注意:这个事件函数不被wpWelcomewpPreparingwpInstalling 调用,还有安装程序已经确定要跳过的页也不会调用 (例如,没有包含组件安装程序的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!',MB_OK);

end;

该段代码将会导致每出现一个新的一面的时候就会弹出一个消息框。

(待续)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐