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. 斯坦福NLP笔记72 —— The Inverted Index
  2. 5 关于数据仓库维度数据处理的方法探究系列——缓慢变化维处理——全历史记录...
  3. 伪造服务钓鱼工具Ghost Phisher
  4. android 单选、多选弹出菜单
  5. python保存快捷键_超详细的Sublime Text配置python教程
  6. MongoDB Query 的几个方法
  7. CodeVs天梯黄金Gold题解
  8. C语言入门项目篇:贪吃蛇(完整代码+详细注释)
  9. 多层线性模型和面板数据模型笔记(待完善,持续更)
  10. 使用Md5加密算法对密码进行加密(工具类)
  11. TMS320C64x DSP L1 L2 Cache架构(1)——C64x Cache Architecture
  12. 更新WP Mango应用磁贴内容的3种方法
  13. linux tc取消网卡流量限制,Linux高级流量控制tc使用
  14. KGB成功破解特朗普的秘密消息
  15. 天龙八部手游服务器维护公告,-天龙八部手游-详情页-官方网站-天龙八部官方唯一正版3DMMORPG武侠手游...
  16. 禁用计算机硬盘,怎么禁止电脑开机就自动检测硬盘
  17. Redis一问多答(必背篇)
  18. 宋星:误读数据等于自杀
  19. 探针台选型的注意事项有哪些
  20. 2017年12306退票手续费新规定

热门文章

  1. python学习笔记 selenium
  2. CMU开设美国首个人工智能本科专业
  3. 性价比一直是数据仓库中唯一重要的东西
  4. 使用imap接收网易邮箱的邮件
  5. Craigslist :一个神奇的网站
  6. 计算机无法进入桌面怎么备份,Windows系统损坏 | 无法进入系统如何正常备份数据?...
  7. 屠龙猎手攻略(图)原创
  8. 若不用计算机tan35 怎么算,三角函数计算器-三角函数计算器
  9. ABB机器人虚拟软件RobotStudio和开发环境的安装包
  10. pyqt5多窗口来回切换