(转)Inno Setup入门(十三)——Pascal脚本(2)
本文转载自: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)的更多相关文章
- Inno Setup入门(一)——最简单的安装脚本
地址:http://379910987.blog.163.com/blog/static/3352379720110238252326/ 一个最简单的安装脚本: 1.最简单的安装文件脚本: [setu ...
- Inno Setup入门(十一)——完成安装后执行某些程序
Inno Setup入门(十一)——完成安装后执行某些程序 2011-02-16 16:24:23| 分类: Inno Setup | 标签:inno setup |举报 |字号 订阅 ...
- Inno Setup入门(十六)——Inno Setup类参考(2)
Inno Setup入门(十六)——Inno Setup类参考(2) http://379910987.blog.163.com/blog/static/33523797201112755641236 ...
- Inno Setup入门(十三)——Pascal脚本(2)
分类: Install Setup 2013-02-02 11:26 794人阅读 评论(0) 收藏 举报 事件函数(2) function CheckPassword(Password: Strin ...
- Inno Setup入门(十三)——Pascal脚本(2)
事件函数(2) function CheckPassword(Password: String): Boolean; 如果安装程序在Pascal 脚本中发现该函数,它自动显示密码页并调用CheckPa ...
- Inno Setup入门(十二)——Pascal脚本(1)
事件函数(1) Inno Setup支持以下函数和过程. function InitializeSetup(): Boolean; 该函数在安装程序初始化时调用,返回False 将中断安装,True则 ...
- (转)Inno Setup入门(十二)——Pascal脚本(1)
本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250917 事件函数(1) Inno Setup支持以下函数和过程 ...
- Inno Setup入门(十二)——Pascal脚本(1)
事件函数(1) Inno Setup支持以下函数和过程. function InitializeSetup(): Boolean; 该函数在安装程序初始化时调用,返回False 将中断安装,True则 ...
- Inno Setup入门(十九)——Inno Setup类参考(5)
: Install Setup 2013-02-02 11:29 377人阅读 评论(0) 收藏 举报 单选按钮 单选按钮在安装中也很常见,例如同一个程序可以选择安装不同的性质的功能,例如选择32位或 ...
随机推荐
- [JS]JavaScript判断操作系统版本
function detectOS() { var sUserAgent = navigator.userAgent; var isWin = (navigator.platform == " ...
- LVS模式二:隧道模式(Tun)
一.IP隧道(IP Tunneling) ip隧道是一个将ip报文封装到另一个ip报文的技术,这可以使得目标为一个ip地址的数据报文被封装和转发到另一个ip地址.ip隧道技术也成为ip封装技术. ...
- UE4中类自动生成代码解析
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/73189272 作者:car ...
- objc/runtime.h 相关
Objecitve-C的重要特性是Runtime(运行时),在Interacting with the Runtime(交互运行)中,运行时函数部分,苹果给出了/usr/lib/libobjc.A.d ...
- 【排序】快速排序,C++实现
原创博文,转载请注明出处! 本文代码的github地址 # 基本思想 ”快速排序“是对”冒泡排序“的改进. 基本原理:基于分治法,在待排线性表中取一个元素pivot作为枢轴值,通过一趟排序将待排线性表 ...
- Git 过滤文件,控制上传
在Git的版本控制中,可能有些文件是不需要加入控制的,那我们在提交代码时就需要忽略这些文件,下面讲讲应该怎么给Git配置一些忽略规则. 有三种方法可以忽略掉这些文件,这三种方法都能达到目的,只不过适用 ...
- 流畅设计 Fluent Design System 中的光照效果 RevealBrush,WPF 也能模拟实现啦!
UWP 才能使用的流畅设计效果好惊艳,写新的 UWP 程序可以做出更漂亮的 UI 啦!然而古老的 WPF 项目也想解解馋怎么办? 于是我动手实现了一个! 迫不及待看效果 ▲ 是不是很像 UWP 中 ...
- eclipse显示/隐藏代码行号
Window→Preferences→General→Editors→TextEditors→勾选Show line numbers
- 搭建Hadoop2.6.0+Eclipse开发调试环境(以及log4j.properties的配置)
上一篇在win7虚拟机下搭建了hadoop2.6.0伪分布式环境.为了开发调试方便,本文介绍在eclipse下搭建开发环境,连接和提交任务到hadoop集群. 1. 环境 Eclipse版本Luna ...
- ThinkPHP5 使用create 获取表单所有字段
TP5没有 TP3的那个create创建表单字段,如果字段太多,写起来是非常麻烦 只需要在 框架里面 think/db/Query.php 里面加上函数 public function create( ...