Inno Setup添加自定义页面
时间:2022-04-16
本文章向大家介绍Inno Setup添加自定义页面,主要包括Inno Setup添加自定义页面使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
目的
添加一个可以选中安装模式的自定义页面,如下图:
![](https://img2022.cnblogs.com/blog/2022968/202204/2022968-20220416111449584-1936790099.png)
简易模式: 跳过安装路径选择
自定义模式:正常选择安装路径
创建[Code]区段
-
[Code] 区段是一个指定Pascal脚本的可选区段。Pascal脚本可用于以多种方式自定义安装程序或卸载。请注意,创建 Pascal 脚本并不容易,需要具备 Inno Setup 的经验以及有关 Pascal 编程或至少类似编程语言的知识。
-
[Code] 区代码:
[Code] //#########################安装模式窗口属性########################### var //模式选择窗口 modePage:TwizardPage; //模式选择窗口ID modePageID:Integer; //单选按钮 RadioButton1, RadioButton2: TRadioButton; //标题 Lbl1, Lbl2: TNewStaticText; //#################################################################### //######################创建安装模式选择页面########################## procedure CreateModPage; begin modePage := CreateCustomPage(wpInfoBefore, '选择安装类型', '请根据您的需要选择安装的类型'); modePageID:= modePage.ID; RadioButton1 := TRadioButton.Create(modePage); RadioButton1.Left := ScaleX(80); RadioButton1.Top := ScaleY(40); RadioButton1.Width := modePage.SurfaceWidth; RadioButton1.Height := ScaleY(17); RadioButton1.Caption := '快速安装'; RadioButton1.Checked := True; RadioButton1.Parent := modePage.Surface; Lbl1 := TNewStaticText.Create(modePage); Lbl1.Left := ScaleX(95); Lbl1.Top := ScaleY(60); Lbl1.Width := ScaleX(250); Lbl1.Height := ScaleY(50); Lbl1.Caption := '按照简易模式安装软件到您的电脑'; Lbl1.Parent := modePage.Surface; RadioButton2 := TRadioButton.Create(modePage); RadioButton2.Left := ScaleX(80); RadioButton2.Top := RadioButton1.Top + ScaleY(60); RadioButton2.Width := modePage.SurfaceWidth; RadioButton2.Height := ScaleY(17); RadioButton2.Caption := '自定义安装'; RadioButton2.Checked := false; RadioButton2.Parent := modePage.Surface; Lbl2 := TNewStaticText.Create(modePage); Lbl2.Left := ScaleX(95); Lbl2.Top := Lbl1.Top + ScaleY(60); Lbl2.Width := ScaleX(250); Lbl2.Height := ScaleY(50); Lbl2.Caption := '您可以手动配置安装目录'; Lbl2.Parent := modePage.Surface; end; //################################################################### //##############################初始化引导窗口####################### procedure InitializeWizard(); begin //创建模式选择页面 CreateModPage; end; //################################################################### //#############################满足条件跳过窗口###################### function ShouldSkipPage(PageID: Integer): Boolean; var selectPage: TwizardPage; begin Result := False; if RadioButton1.Checked then begin case PageID of //路径选择页面 wpSelectDir: Result := True; end; end; end; //#####################################################################
-
部分方法解释
-
向导页面(页面ID对应意思):
字段 说明 wpWelcome 欢迎页 wpLicense 许可协议 wpPassword 密码 wpInfoBefore 信息 wpUserInfo 用户信息 wpSelectDir 选择目标位置 wpSelectComponents 选择组件 wpSelectProgramGroup 选择开始菜单文件夹 wpSelectTasks 选择任务 wpReady 准备安装 wpPreparing 正在准备安装 wpInstalling 正在安装 wpInfoAfter 信息 wpFinished 安装完成 -
InitializeWizard:
procedure InitializeWizard();
在启动时使用该事件函数来改变向导或向导页面。你不能在它被触发时使用 InitializeSetup 事件函数,因为向导窗体尚不存在。
-
CreateCustomPage:
function CreateCustomPage(const AfterID: Integer; const ACaption, ADescription: String): TWizardPage;
创建一个自定义向导页面。这个页面默认是空的;你可以创建自己的控件,然后放置到页面中(通过设置它们的上级属性为由这个函数返回的 TWizardPage 界面属性实例)。
参数:
AfterID: 在哪个页面ID之前显示
ACaption: 说明文字
ADescription:详细描述 -
ShouldSkipPage:
function ShouldSkipPage(PageID: Integer): Boolean;
向导调用这个事件函数确定是否在所有页面或不在一个特殊页面(用 PageID 指定)显示。如果返回 True,将跳过该页面;如果你返回 False,该页面被显示。
-
原文地址:https://www.cnblogs.com/zwbsoft/p/16152239.html
- 1688: [Usaco2005 Open]Disease Manangement 疾病管理
- 通过MySQL自动同步刷新Redis
- 13.MySQL(一) 数据库简介mysql安装数据库操作Mysql数据类型存储引擎
- 3314: [Usaco2013 Nov]Crowded Cows
- BZOJ4766: 文艺计算姬
- 14.MySQL(二) 数据之表操作表内容操作Mysql 连接事务外键
- 3450: Tyvj1952 Easy
- SP104 HIGH - Highways
- 1664: [Usaco2006 Open]County Fair Events 参加节日庆祝
- 15.MySQL(三) 索引类型
- 1054: [HAOI2008]移动玩具
- MatrixTree速成
- 1元搭建自己的云服务器&解析域名
- 洛谷P4180 [Beijing2010组队]次小生成树Tree
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- JavaWeb——CSS应用实例详解(概述、语法、选择器、属性、用户登录界面实例)
- JavaWeb——JavaScript精讲之事件监听机制与表单校验案例实战
- Java——扩展概念(匿名内部类、包装类、装箱与拆箱、数据类型的转换)
- Java——接口的基本总结(基本定义、使用接口定义标准、工厂设计模式、代理设计模式、抽象类与接口的区别)
- JavaWeb——HTML表单标签详解(input、label、select、textarea)
- Java——设计辅助概念(final关键字、对象多态性基本概念)
- JavaWeb——JavaScript精讲之DOM、BOM对象与案例实战(动态添加删除表格)
- JavaWeb——JavaScript精讲之ECMAScript标准(基本语法、JavaScript对象)
- JavaWeb——HTML基本标签详解及案例实战(文件标签、文本标签、图片标签、列表标签、链接标签、块标签、语义化标签、表格标签)
- JavaWeb——web概念概述(静态资源与动态资源)、HTML概念概述
- Java——内部类使用总结(基本概念、定义内部类、static定义内部类、方法中定义内部类)
- Java——泛型基本总结(通配符、泛型接口、泛型方法)
- Java——类图、时序图、用例图
- Java——四种访问控制权限及Java命名规范
- Java——static关键字总结(含义、定义属性或方法、使用时机)