Inno Setup入门(十二)——Pascal脚本(1)
http://379910987.blog.163.com/blog/static/33523797201111792121133/ 事件函数(1) Inno Setup支持以下函数和过程。 function InitializeSetup(): Boolean; 该函数在安装程序初始化时调用,返回False?将中断安装,True则继续安装,测试代码如下:
procedure InitializeWizard(); 该过程在开始的时候改变向导或者向导页,不要指望使用InitializeSetup函数实现改变向导页的功能,因为InitializeSetup函数触发时向导窗口并不存在。 procedure DeinitializeSetup(); ???????该过程在安装终止时被调用,注意及时在用户没有安装任何文件之前退出也会被调用。测试代码如下: |
procedure DeinitializeSetup(); begin ????msgbox('DeinitializeSetup is called',MB_OK); end; |
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('软件成功安装',u5b8bu4f53; font-size:16px"> 三个步骤的截图如下:
?
?
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?参数指定取消进程是否该发生;默认为True。Confirm?参数指定是否显示“退出安装程序吗?”的消息框;默认为True。如果Cancel?设为False,那么Confirm?的值将被忽略。测试代码如下:
procedure CancelButtonClick(CurPageID: Integer; var Cancel,Confirm: Boolean); begin ???????cancel:=False; end; |
和你所预料的一样,本段代码将会导致Cancel按钮失效,即逼迫用户完成安装或者采用非正常方式终止安装程序。
而上面的这段代码将会在用户点击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!',MB_OK); end; |
???????该段代码将会导致每出现一个新的一面的时候就会弹出一个消息框。
?(待续)
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!