`
qq173684423
  • 浏览: 28062 次
社区版块
存档分类
最新评论

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

 
阅读更多

事件函数(2)

function CheckPassword(Password: String): Boolean;

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

function CheckPassword(Password: String): Boolean;

begin

       if Password='castor' then

              result:=true;

end;

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

Inno Setup入门(十三)——Pascal脚本(2) - Castor - 趁年轻,多折腾~~

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

function NeedRestart(): Boolean;

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

 

function NeedRestart(): Boolean;

begin

       result:=True;

end;

 

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

Inno Setup入门(十三)——Pascal脚本(2) - Castor - 趁年轻,多折腾~~

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;

 

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

Inno Setup入门(十三)——Pascal脚本(2) - Castor - 趁年轻,多折腾~~

 

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

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;

 

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

Inno Setup入门(十三)——Pascal脚本(2) - Castor - 趁年轻,多折腾~~

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

function GetCustomSetupExitCode: Integer;

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

代码

说明

0

安装程序成功完成

1

安装程序初始化失败

2

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

3

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

4

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

5

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

6

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

7

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

8

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

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

Inno Setup入门(十三)——Pascal脚本(2) - Castor - 趁年轻,多折腾~~

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

function PrepareToInstall(var NeedsRestart: Boolean): String;

 

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

分享到:
评论

相关推荐

    Inno_Setup入门——Pascal脚本.doc

    在Inno Setup中,Pascal脚本是一种强大的工具,用于自定义安装过程的行为。通过编写Pascal脚本,你可以控制安装程序的各个阶段,提供更个性化的用户体验。以下是基于提供的标题、描述和部分内容的关键知识点: 1. *...

    innosetup脚本范例

    `[Code]`部分允许编写Pascal脚本,这使得InnoSetup具有了更高级的功能,如运行自定义逻辑、读写文件、交互式询问用户等。 9. **多语言支持** InnoSetup可以创建多语言安装包,通过`[Languages]`部分定义语言选项...

    Inno Setup入门教程

    - **基础知识**:掌握Inno Setup内置的Pascal脚本语言。 - **应用场景**: - 编写复杂逻辑。 - 自定义安装行为。 - 操作文件系统和注册表等。 #### 十九至二十二、Inno Setup类参考 - **基础知识**:深入学习...

    Inno Setup 中文教程

    3. **源代码脚本**:Inno Setup的核心是基于 Pascal 脚本语言的源代码,用于定义安装过程中的各种行为,包括文件复制、注册表操作、启动菜单创建等。 二、脚本语法 1. **脚本结构**:Inno Setup脚本由几大块组成,...

    inno setup改变环境变量脚本

    在Inno Setup中,我们可以通过[Code]部分来编写Pascal脚本,实现环境变量的添加。以下是一个简单的示例: ```pascal [Code] function InitializeSetup(): Boolean; begin // 添加环境变量 AddEnvironmentVariable...

    Innosetup软件及安装界面美化iss脚本

    标题中的"Innosetup软件及安装界面美化iss脚本"指的是利用InnoSetup来制作安装程序,并通过定制的ISS(Inno Setup Script)脚本来实现安装界面的美化。ISS脚本是InnoSetup的核心,它是一个文本文件,包含了所有关于...

    Inno Setup 6.2.1以及中文语言包

    "innosetup-6.2.1.exe"是Inno Setup 6.2.1的主要安装程序文件,用户可以通过运行这个文件来安装或升级Inno Setup的开发环境。这个执行文件可能包含所有必要的组件,如编译器、脚本编辑器和帮助文档,使得用户可以在...

    inno setup 5脚本实现检测进程是否运行并结束.rar

    《Inno Setup 5 脚本:检测与结束进程详解》 Inno Setup是一款流行的安装包制作工具,尤其在Windows平台下,它以其简洁易用的特性深受开发者喜爱。Inno Setup 5是该系列的最新版本,提供了一系列强大的功能,其中...

    自定义Inno Setup安装界面(仿QQ安装界面)

    总之,自定义Inno Setup安装界面涉及对Pascal脚本语言的理解,以及对Inno Setup API的熟练运用。通过精心设计和编程,我们可以创建出与QQ安装界面类似的用户体验,提升软件的首印象和专业度。同时,对于Java项目的...

    InnoSetup中文帮助

    - **介绍**:InnoSetup内置了一个完整的Pascal脚本引擎,允许开发者编写复杂的安装逻辑。 - **创建[Code]段**:定义脚本代码的位置。 - **事件函数**:用于响应安装过程中的特定事件,如安装前、安装后等。 - **脚本...

    Inno setup 5 脚本实例。

    7. **[Code]** 部分:这是Inno Setup脚本的亮点,允许编写 Pascal 代码来执行更复杂的逻辑,如自定义对话框、文件解压验证、安装前后的脚本等。 以`SteamMods-SetupScript-1.6.iss`为例,我们可以推测这是一个与...

    Inno Setup 5.zip

    3. **脚本支持**:Inno Setup 5基于 Pascal 脚本语言,开发者可以通过编写脚本来实现复杂的安装逻辑,如文件的复制、注册表操作、启动服务等。 4. **多语言支持**:Inno Setup 5支持多语言安装包,可以方便地为不同...

    inno setup 脚本实现 psvince 检查进程

    总的来说,Inno Setup通过其内置的Pascal脚本功能,为开发者提供了强大的自定义能力,包括对系统状态的检测和操作。通过以上示例,我们可以了解到如何使用Inno Setup脚本检查特定进程,从而提升安装程序的智能性和...

    inno setup中文帮助文档

    2. **安装脚本语法**:详细介绍Inno Setup的安装脚本(.iss文件)编写规则,包括各种指令(如[Setup]、[Files]、[Dirs]等)、常量、变量、函数等。这些内容是制作安装包的基础,通过脚本可以控制安装过程的每一个...

    inno setup文件+脚本实例

    Inno Setup的核心在于它的脚本语言,这是一种基于Pascal的语法,用于定义安装过程中的各种细节,如安装路径、文件列表、注册表项、启动菜单项等。脚本文件通常以`.iss`为扩展名,它是整个安装程序的蓝图。 在提供的...

    inno完整打包脚本

    Inno Setup的脚本语言基于Pascal,但简化了很多,易于学习和使用。 2. **Inno Script Studio** 虽然Inno Setup支持文本编辑器编写脚本,但为了提高效率和减少错误,通常推荐使用Inno Script Studio这样的可视化...

    使用Inno setup 制作安装包 安装包脚本调用动态链接库实现特殊处理

    2. 配置安装脚本:在Inno Setup的脚本文件中,你可以通过`[Code]`部分来调用DLL。首先,使用`LoadLibrary`函数加载DLL,然后使用`GetProcAddress`获取DLL中的函数指针。最后,通过函数指针调用DLL中的函数。 ```...

    Inno工具,含InnoSetup和ISTool汉化可视化工具(汉化)

    1. **脚本驱动**:InnoSetup使用基于 Pascal 的简单脚本来定义安装过程,包括文件复制、注册表操作、启动菜单项创建等,这使得定制安装过程变得灵活且易于理解。 2. **多语言支持**:InnoSetup允许创建多语言安装包...

    Inno Setup 6.1.0+ Chinese-Simplified-Translation 中文包

    1. **编写脚本**:Inno Setup使用基于Pascal的脚本语言,开发者可以通过编写脚本来定义安装过程中的各种行为,如安装路径、文件复制、注册表操作等。 2. **编译脚本**:使用Inno Setup的编译器将脚本转换为可执行的...

    inno setup 入门学习的官方demo+网上案例+自己的案例

    以下是对"Inno Setup入门学习"的一些关键知识点的详细说明: 一、Inno Setup基础 1. **脚本语言**:Inno Setup通过其独特的脚本语言来编写安装过程,这使得你可以精确控制安装的每一个步骤。脚本主要由一系列的...

Global site tag (gtag.js) - Google Analytics