本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250933

事件函数(2)

function CheckPassword(Password: String): Boolean;

如果安装程序在Pascal 脚本中发现该函数,它自动显示密码页并调用CheckPassword检查密码。返回True 表示接受密码,返回False拒绝。测试代码如下:

function CheckPassword(Password: String): Boolean;

begin

if Password='castor' then

result:=true;

end;

在安装过程中将会出现询问安装密码的页面,如果输入错误将会出现下面的对话框:

为了避免在 [Code] 段内部贮存真实的密码,最好使用其他的信息进行比较,例如使用GetMD5OfString(Password)计算实际密码的MD5值保护实际密码。

function NeedRestart(): Boolean;

如果返回True,安装程序在安装结束时提示用户重启系统,False则不提示。测试代码如下:

function NeedRestart(): Boolean;

begin

result:=True;

end;

在安装完成之后的finish页面,将会出现如下的选项:

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;

如果脚本中存在该函数,则在Ready to Install页面变为活动页的时候自动调用该函数,该函数返回一段文本,该文本显示于Ready to Install页面中的设置备注中,并且该文本将用NewLine参数分割为一个单独的多行字符串,参数Space指代空格,测试是六个,其它参数将包含安装程序用于设置段的字符(可能是空的)。例如MemoDirInfo参数包含选择目录段的字符串。测试代码如下:

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoComponentsInfo, MemoTasksInfo: String): String;

var

res: String;

begin

res:='UpdateReadyMemo Function is here'+NewLine+'This is the Second Line';

res:=res+Space+'And with Six Spaces';

res:=res+NewLine+'MemoUserInfoInfo'+MemoUserInfoInfo;

res:=res+NewLine+'MemoDirInfo'+MemoDirInfo;

res:=res+NewLine+'MemoTypeInfo'+MemoTypeInfo;

res:=res+NewLine+'MemoComponentsInfo'+MemoComponentsInfo;

res:=res+NewLine+'MemoComponentsInfo'+MemoComponentsInfo;

res:=res+NewLine+'MemoTasksInfo'+MemoTasksInfo;

Result:=res;

end;

运行后在安装前会出现确认页面:

标记黄色文字下面是各个参数的内容。

procedure RegisterPreviousData(PreviousDataKey: Integer);

本过程实现在自定义向导页中贮存用户输入的设置,在脚本中放入本函数,并调用SetPreviousData(PreviousDataKey, ...)替换它,每次设置一个。

function CheckSerial(Serial: String): Boolean;

该函数将在用户信息向导页中自动出现一个序列号对象 (前提是[Setup]段中使用UserInfoPage=yes)。返回True表示接受序列号,返回False 拒绝。注意:当使用序列号时,该软件并没有被加密,而且Inno Setup源代码是免费获取的,有经验的人从安装程序中删除序列号保护并不是很困难的事。本函数只是方便用户在你的应用程序中仔细检查输入的序列号 (贮存在{userinfoserial}常量)。测试代码如下:

function CheckSerial(Serial: String): Boolean;

begin

if Serial='ABCDEF-1234567890' then

Result:=True;

end;

在安装过程中将会出现一个页面,如下:

如果Serial Number不正确,Next按钮将会无效,只有正确的序列号才能使得Next按钮有效,再次说明:不要指望使用这种方法保护你的软件。

function GetCustomSetupExitCode: Integer;

返回一个非零值,命令安装程序返回一个自定义退出代码,本函数只在安装程序运行完成并且退出代码已是零时才调用。常见的退出代码如下:

代码

说明

0

安装程序成功完成

1

安装程序初始化失败

2

用户在实际安装前点击取消,或者在开始的“这将安装……”时选择否

3

当准备到下一个安装阶段的时候发生致命错误,只有在比较极端的情况下发生这种错误,例如内存耗尽。

4

实际安装过程中发生致命错误

5

用户在实际安装过程中点击取消或者在“终止-重试-忽略”对话框中点击了终止

6

安装程序被调试器强制终止

7

准备安装阶段发现安装无法进行

8

准备安装阶段发现安装无法进行,并且系统需要重启来解决问题

例如在用Inno Setup调试编译后的安装文件时,按下Ctrl+F2后,下面的调试输出将会提示如下:

退出代码为6,可见安装程序被调试器强制终止。

function PrepareToInstall(var NeedsRestart: Boolean): String;

在与安装阶段返回一个非空字符串命令安装程序停止,该字符串将会作为错误消息,设置NeedsRestart为True将要求用户重启系统,该函数只在安装程序发现不能继续下去的时候才被调用。

(转)Inno Setup入门(十三)——Pascal脚本(2)的更多相关文章

  1. Inno Setup入门(一)——最简单的安装脚本

    地址:http://379910987.blog.163.com/blog/static/3352379720110238252326/ 一个最简单的安装脚本: 1.最简单的安装文件脚本: [setu ...

  2. Inno Setup入门(十一)——完成安装后执行某些程序

    Inno Setup入门(十一)——完成安装后执行某些程序 2011-02-16 16:24:23|  分类: Inno Setup |  标签:inno  setup   |举报 |字号 订阅   ...

  3. Inno Setup入门(十六)——Inno Setup类参考(2)

    Inno Setup入门(十六)——Inno Setup类参考(2) http://379910987.blog.163.com/blog/static/33523797201112755641236 ...

  4. Inno Setup入门(十三)——Pascal脚本(2)

    分类: Install Setup 2013-02-02 11:26 794人阅读 评论(0) 收藏 举报 事件函数(2) function CheckPassword(Password: Strin ...

  5. Inno Setup入门(十三)——Pascal脚本(2)

    事件函数(2) function CheckPassword(Password: String): Boolean; 如果安装程序在Pascal 脚本中发现该函数,它自动显示密码页并调用CheckPa ...

  6. Inno Setup入门(十二)——Pascal脚本(1)

    事件函数(1) Inno Setup支持以下函数和过程. function InitializeSetup(): Boolean; 该函数在安装程序初始化时调用,返回False 将中断安装,True则 ...

  7. (转)Inno Setup入门(十二)——Pascal脚本(1)

    本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250917 事件函数(1) Inno Setup支持以下函数和过程 ...

  8. Inno Setup入门(十二)——Pascal脚本(1)

    事件函数(1) Inno Setup支持以下函数和过程. function InitializeSetup(): Boolean; 该函数在安装程序初始化时调用,返回False 将中断安装,True则 ...

  9. Inno Setup入门(十九)——Inno Setup类参考(5)

    : Install Setup 2013-02-02 11:29 377人阅读 评论(0) 收藏 举报 单选按钮 单选按钮在安装中也很常见,例如同一个程序可以选择安装不同的性质的功能,例如选择32位或 ...

随机推荐

  1. java程序设计基础篇 复习笔记 第七单元&&第八单元

    7.1 int[][] triArray{ {1}, {1,2}, {1,2,3}, }; 7.2 array[2].length 8.1 Unified Modeling Language:UML ...

  2. 二十二、utl_inaddr(用于取得局域网或Internet环境中的主机名和IP地址)

    1.概述 作用:用于取得局域网或Internet环境中的主机名和IP地址. 2.包的组成 1).get_host_name作用:用于取得指定IP地址所对应的主机名语法:utl_inaddr.get_h ...

  3. ES6入门之对象扩展

    ES5对象(超类)原有: 属性:construct构造函数 方法: object.hasOwnProperty( propertyName ) //检测是否有一个本地的属性而不是继承的,返回boole ...

  4. Alpha冲刺(2/10)

    前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/9960487.html 作业博客:https://edu.cnblogs.com/campus/ ...

  5. C++11_shared_ptr

    版权声明:本文为博主原创文章,未经博主允许不得转载. shared_ptr智能指针的一种,它的使用类似于auto_ptr. shared_ptr它有两个指针,一个指向引用计数,一个指向data.由于拥 ...

  6. L162

    More than 250 corporate signatories joined together to try and deal with plastic pollution in an ann ...

  7. New Concept English three(21)

    27W 59 Boxing matches were very popular in England two hundred years ago. In those days, boxers foug ...

  8. ROW_NUMBER() OVER(PARTITION BY)

    select * from (select *,ROW_NUMBER() OVER(PARTITION BY GoodsID ORDER BY IsMain desc,OrderNum) as Mai ...

  9. 移动端 css 禁止长按屏幕选中

    *{ -webkit-touch-callout:none; -webkit-user-select:none; -khtml-user-select:none; -moz-user-select:n ...

  10. uglify-es 解决webpack 不能压缩es6 的问题

    https://www.npmjs.com/package/uglify-es