Inno Setup入门(十五)——Inno Setup类参考(1)

nno setup脚本能够支持许多的类,这些类使得安装程序的功能得到很大的加强,通过对这些类的使用,将会创建出许多让人惊奇的安装程序,下面开始类的学习。
创建自定义向导页

自定义向导页需要在InitializeWizard事件函数中创建,通过使用CreateCustomPage函数创建一个空的页面,或者使用CreateInput…Page和CreateOutput…Page等函数创建预建的页面,例如CreateInputDirPage、CreateInputFilePage、CreateOutputProgressPage等函数。当创建好了页面之后,就可以在页面上添加控件了,可以手动创建控件,也可以使用预建页面的特殊函数。大部分的Create…Page函数的第一个参数通常都是Page ID,该参数指定了新创建的页面被放在哪个已存在的页面后面。有几种方法获取一个已经存在页面的Page ID,例如用户创建的页面有一个属性是ID,该属性为一个只读的整型,其值即为页面的ID,内建的向导页有预定的ID,可用的名称如下表:

wpWelcome wpLicense wpPassword wpInfoBefore
wpUserInfo wpSelectDir wpSelectComponents wpSelectProgramGroup
wpSelectTasks wpReady wpPreparing wpInstalling
wpInfoAfter wpFinished

当自定义页面创建完成后,安装程序将会显示,并会像对待预建页面一样处理他们,例如调用所有页面都关联的NextButtonClick和ShouldSkipPage事件函数。

CreateCustomPage函数原型如下:

function CreateCustomPage(const AfterID: Integer; const ACaption, ADescription: String): TwizardPage

第一个参数和前面的Page ID是一样的,可以使用上述表中任何一个作为参数,第二个参数Acaption指定页面的标题,该标题将会显示在页面上方,第三个参数则是对该页面的描述。函数的返回值是一个TwizardPage类,根据Inno Setup的帮助文档,该类的原型如下:

TWizardPage = class(TComponent)
property ID: Integer; read;
property Caption: String; read write;
property Description: String; read write;
property Surface: TNewNotebookPage; read write;
property SurfaceHeight: Integer; read write;
property SurfaceWidth: Integer; read write;
property OnActivate: TWizardPageNotifyEvent; read write;
property OnBackButtonClick: TWizardPageButtonEvent; read write;
property OnCancelButtonClick: TWizardPageCancelEvent; read write;
property OnNextButtonClick: TWizardPageButtonEvent; read write;
property OnShouldSkipPage: TWizardPageShouldSkipEvent; read write;
end;TWizardPageNotifyEvent = procedure(Sender: TWizardPage);
TWizardPageButtonEvent = function(Sender: TWizardPage): Boolean;
TWizardPageCancelEvent = procedure(Sender: TWizardPage; var ACancel, AConfirm: Boolean);
TWizardPageShouldSkipEvent = function(Sender: TWizardPage): Boolean;

下面的程序将会创建一个最简单的自定义页面,并显示在欢迎页面后面:

[setup]
AppName=Test
AppVerName=TEST
DefaultDirName="E:\TEST"
AppVersion=1.0[files]
Source: "F:\desktop\test\ipmsg.exe";Flags:dontcopy[code]
procedure InitializeWizard();
begin
CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');
end;

运行后,当从Welcome页面点击Next按钮后,将会出现下面的页面:

另外,我们也可是测试一下CreateCustomPage的返回值TwizardPage类的属性。例如下面这个例子将测试一下ID属性和NextButtonClick属性:

[code]
var
myPage:TwizardPage;
myPageID:Integer;
function NextButtonClick(CurPageID:Integer): Boolean;
begin
if CurPageID=myPageID then
begin
if MsgBox('确定要离开本页面吗?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = IDYES then result:=true;
end
else
result:=true;
end;
procedure InitializeWizard();
begin
myPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');
myPageID:=myPage.ID;
end;

运行该程序,当到达自定义页面并单击Next的后,将会出现如下的确认对话框:

选择“是”将到下一页,“否”将留在本页。

虽然上面的页面没有任何空间,但是,在成功创建好页面之后,往上面添加各种控件也不是将会变得简单,这就像是把地基打好了之后,盖房子就方便多了。

Inno Setup入门(十五)——Inno Setup类参考(1)相关推荐

  1. JAVASE基础模块十五(StringBuffer类)

    JAVASE基础模块十五(StringBuffer类) public class Stbuffer { public static void main(String[] args) { //总共创建五 ...

  2. Python学习笔记(十五):类基础

    以Mark Lutz著的<Python学习手册>为教程,每天花1个小时左右时间学习,争取两周完成. --- 写在前面的话 2013-7-24 23:59 学习笔记 1,Python中的大多 ...

  3. 十五、Events类

    与互斥和信号量对象一样,事件也是一个系统范围内的资源同步方法.为了从托管代码中使用系统事件,.NET Framework在System.Threading名称空间中提供了ManualResetEven ...

  4. 自学前端第十五天:伪类伪元素和属性选择器和精灵图

    #一.基础伪类选择器(也是交集选择器一种,优先级也要叠加) 1.概念:某个选择器的镜像,当光标移动到盒子时会触发新的一面不同的效果,但是是短暂的而已 2.作用:伪类选择器用于向某些选择器添加特殊的效果 ...

  5. 3D游戏编程入门(十五)索引缓存

    如我公告所言,7号我将断网进行复习,我很愿意把编程学习看做在学武功,高手都会选择一段时间内进行闭关修炼的,这样更方便自己修身养性,抛开一些网络上的繁杂事宜,很容易全身心的投入自己的事情中,待得出关后功 ...

  6. CarSim仿真快速入门(十五)—CarSim传感器仿真之ADAS Sensor Objects (1)

    BikeSim,CarSim和TruckSim数学模型包括多达200个可选对象,其位置和运动可以独立于仿真车辆进行控制.这些对象可以表示其他车辆,固定对象(树木,建筑物),行人,动物,道路标记和其他感 ...

  7. WebGL入门(十五)-使用多幅纹理/纹理叠加

    使用多幅纹理/纹理叠加 1.demo效果 2.实现要点 2.1 顶点着色器中声明varying变量v_TexCoord 2.2 片元着色器中多纹理处理 2.3 外部纹理图像加载 2.4 纹理叠加处理与 ...

  8. 【零基础学Java】—Socket类(五十五)

    [零基础学Java]-Socket类(五十五) Socket类:该类实现客户端套接字,套接字是指两台设备之间通讯的端点. 在Java中,提供了两个类用于实现TCP通信程序 客户端:java.net.S ...

  9. IM开发者的零基础通信技术入门(十二):上网卡顿?网络掉线?一文即懂!

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<上网慢?经常掉线?这篇文章告诉你该怎么办!>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注 ...

最新文章

  1. ThreadLocalMap的enrty的key为什么要设置成弱引用
  2. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...
  3. 报班学python到底怎么样-学Python真的能让你找到出路吗?
  4. Python调用茉莉机器人API接口
  5. MongoDB--架构搭建(主从、副本集)之副本集
  6. AMD官宣350亿美元收购赛灵思 赛灵思大涨8.56%
  7. 浅析C++代码规范注释有哪些讲究?
  8. windows 安装php7.4并配置phpstorm环境
  9. 【Leetcode】数学题(Python)
  10. 机器学习的四种学习方法
  11. 关于常用第三方统计平台比较
  12. 微信公众号开发系列-玩转微信开发-目录汇总
  13. 算法原理系列:红黑树
  14. self-attention
  15. vue使用trim修饰符去掉空格
  16. 湛蓝代码自动生成工具有感
  17. Centos7系统下使用Docker部署SpringBoot项目及安装Mysql
  18. 无事可做的张张,没事更新点方法吧~~~~
  19. 代理工具SPP的使用
  20. 华为虚拟机服务器关闭,虚拟机服务器重启命令行

热门文章

  1. VS2019 MFC 对话框拆分窗格
  2. 提高C++程序运行效率,减少运行时间的方法
  3. 手机视频性能测试软件,手机看视频拒绝卡顿!三款常见加速软件对比实测
  4. 360新闻api,通过关键字检索最新新闻动态
  5. 24 孔复音 C 调口琴
  6. php-2612硒鼓加墨_HP2612A硒鼓加粉图解
  7. 5、每日搞笑段子API接口,免费好用
  8. Joda-Time 入门
  9. python中arch模块_在Arch下安装pip
  10. 由于计算机主板的闪存中固化了,主板bios内存设置