当前位置: 首页 > article >正文

Inno Setup 安装向导各个页面详解

概览

表中描述了使用Inno Setup生成的安装包在安装过程中各个页面的字段和对应的说明信息。后文会对各个页面的参数做进一步解释说明。

字段说明
wpWelcome欢迎页
wpLicense许可协议
wpPassword密码
wpInfoBefore信息
wpUserInfo用户信息
wpSelectDir选择目标位置
wpSelectComponents选择组件
wpSelectProgramGroup选择开始菜单文件夹
wpSelectTasks选择任务
wpReady准备安装
wpPreparing正在准备安装
wpInstalling正在安装
wpInfoAfter信息
wpFinished安装完成

Page1、wpWelcome

可设置是否显示欢迎页!

可设参数为yes和no,默认为yes,不显示欢迎页。

Example:
[Setup]
DisableWelcomePage=no   //显示欢迎页

Page2、wpLicense

指定可选许可协议文件的名称(.txt 或 .rtf(富文本)格式),该文件将在用户选择程序的目标目录之前显示。运行编译器时,该文件必须位于安装的源代码目录中,除非指定了完全限定路径名或路径名前缀为 “compiler:”,在这种情况下,编译器会在编译器目录中查找该文件。

Example:
[Setup]
LicenseFile=license.txt

如果用户选择的语言设置了 LicenseFile 参数,则该指令将被忽略。

Example:
[Setup]
LicenseFile=license.txt   //在languages中设置LicenseFile,此条设置会被忽略[Languages]
Name: "cn"; MessagesFile: "compiler:Languages\ChineseSimplified.isl" ; LicenseFile:"D:\INNO\test\files\用户许可协议-中文.txt"
Name: "en"; MessagesFile: "compiler:Languages\Default.isl"; LicenseFile:"D:\INNO\test\files\用户许可协议-英文.txt"

Page3、wpPassword

指定在安装开始时提示用户输入的密码。

使用密码时,可以考虑将 “加密 ”也设置为 “是”,否则文件将以纯文本形式存储,别人通过逆向工程获取文件并不困难。

密码本身不会以纯文本形式存储,而是以 160 位 SHA-1 哈希值和 64 位随机数加盐的形式存储。(注:启用加密后,存储的哈希值不会用于加密密钥,而是用不同的盐值生成不同的哈希值)。

Example:
[Setup]
Password=123     //设置安装密码
Encryption=yes   //将 “加密 ”设置为 “是”

Page4、wpInfoBefore

指定可选 “自述文件 ”的名称,文件格式为 .txt 或 .rtf(富文本),在用户选择程序的目标目录之前显示。运行编译器时,该文件必须位于安装的源代码目录中,除非指定了完全限定路径名或路径名前缀为 “compiler:”,在这种情况下,编译器会在编译器目录中查找该文件。

Example:
[Setup]
InfoBeforeFile=D:\INNO\test\files\InfoBefore.txt

如果用户选择的语言设置了 InfoBeforeFile 参数,该指令实际上将被忽略。

Page5、wpUserInfo

可设参数为yes和no,默认为no。

如果设置为 “yes”,安装程序将显示 “用户信息向导 ”页面,要求输入用户姓名、组织机构和序列号。用户输入的值将存储在 {userinfoname}、{userinfoorg} 和 {userinfoserial} 常量中。您可以在 [Registry] 或 [INI] 条目中使用这些常量来保存它们的值,以便以后使用。

要显示序列号字段,必须有 CheckSerial 事件函数。

DefaultUserInfoName、DefaultUserInfoOrg 和 DefaultUserInfoSerial 指令决定显示的默认名称、组织和序列号。如果 “UsePreviousUserInfo ”为 “是”(默认值),且 Setup 发现已安装了同一应用程序的上一版本,则会使用之前输入的名称、组织和序列号。

在静默安装时,将使用默认的用户名、机构和序列号值。安装程序不会检查用户名是否为空(因为用户无法更正),但仍会检查序列号。

Example:
[Setup]
UserInfoPage=yes

Page6、wpSelectDir

可设参数为auto、yes和no,默认为auto。

如果设置为 “是”,安装程序将不显示 “选择目标位置 ”向导页面。

如果设置为 “自动”,启动时安装程序将在注册表中查找是否已经安装了相同的应用程序,如果是,则不会显示 “选择目标位置 ”向导页面。

如果不显示 “选择目标位置 ”向导页面,则将始终使用默认目录名。

Example:
[Setup]
DisableDirPage=no

Page7、wpSelectComponents

本节为可选项。它定义了 Setup 将在设置类型自定义向导的 “选择组件 ”页面上显示的所有组件。

组件本身没有任何作用:它需要与其他安装项 “链接”。请参阅组件和任务参数。

下面是[组件]部分的示例:

Example:
[Components]
Name: "main"; Description: "Main Files"; Types: full compact custom; Flags: fixed
Name: "help"; Description: "Help Files"; Types: full
Name: "help\english"; Description: "English"; Types: full
Name: "help\dutch"; Description: "Dutch"; Types: full

上述示例生成了四个组件: 一个 “main”组件,如果最终用户选择了名称为 “full ”或 “compact ”的类型,它就会被安装;一个 “help ”组件,它有两个子组件,只有在最终用户选择了 “full ”类型时才会被安装。

以下是支持的参数列表:

Name

组件的内部名称。

组件名称中 \ 或 / 字符的总数称为组件的级别。任何级别为 1 或以上的组件都是子组件。列在子组件之前、级别比子组件低 1 的组件是父组件。与子组件具有相同父组件的其他组件为同级组件。

如果父组件未被选中,则子组件无法被选中。如果父组件的所有子组件都未被选中,则父组件也无法被选中,除非有一个组件参数直接引用了父组件,或者父组件包含 checkablealone 标志。

如果同级组件有排他性标记,则只能选择其中一个。

Description

组件的描述,可包括常量。该说明将在安装过程中显示给最终用户。

Types

该组件所属类型的空格分隔列表。如果最终用户从该列表中选择了一种类型,则将安装该组件。

如果不使用固定标记,Setup 将忽略此列表中的任何自定义类型(使用 iscustom 标记的类型)。

ExtraDiskSpaceRequired

此组件所需的额外磁盘空间,类似于 [Setup] 部分的 ExtraDiskSpaceRequired 指令。

Flags

该参数是一组额外选项。可用空格分隔多个选项。支持以下选项:

checkablealone

指定当该组件没有任何子组件时,可以检查该组件。默认情况下,如果没有 “组件 ”参数直接引用该组件,取消选中该组件的所有子组件将导致该组件被取消选中。

dontinheritcheck

指定当父级组件被选中时,该组件不应自动变为被选中。对顶层组件无影响,不能与 exclusive 标志结合使用。

exclusive

指示 Setup 将此组件与带有 exclusive 标志的同级组件互斥。

fixed

指示安装过程中最终用户不能手动选择或取消选择此组件。

restart

指示 Setup 在安装该组件时要求用户重启系统,无论是否有必要(例如,由于 [Files] 部分的条目带有 restartreplace 标志)。与 AlwaysRestart 类似,但针对每个组件。

disablenouninstallwarning

指示 Setup 在用户取消选择已安装的组件后,不要警告用户该组件不会被卸载。

根据组件的复杂程度,您可以尝试使用 [InstallDelete] 部分和此标记来自动 “卸载 ”已取消选择的组件。

Page8、wpSelectProgramGroup

可设参数为auto、yes和no,默认为auto。

如果设置为 “是”,安装程序将不显示 “选择开始菜单文件夹 ”向导页面。

如果设置为 “自动”,启动时安装程序将在注册表中查找是否已安装相同的应用程序,如果已安装,则不会显示 “选择开始菜单文件夹 ”向导页面。

如果不显示 “选择开始菜单文件夹 ”向导页面,系统将始终使用默认的开始菜单文件夹名称。

Page9、wpSelectTasks

本部分为可选部分。它定义了安装过程中 Setup 将执行的所有用户自定义任务。这些任务在 “选择附加任务 ”向导页面上显示为复选框和单选按钮。

任务本身没有任何作用:它需要与其他安装条目 “链接”。请参阅组件和任务参数。

下面是 [任务] 部分的示例:

[Tasks]
Name: desktopicon; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Components: main
Name: desktopicon\common; Description: "For all users"; GroupDescription: "Additional icons:"; Components: main; Flags: exclusive
Name: desktopicon\user; Description: "For the current user only"; GroupDescription: "Additional icons:"; Components: main; Flags: exclusive unchecked
Name: quicklaunchicon; Description: "Create a &Quick Launch icon"; GroupDescription: "Additional icons:"; Components: main; Flags: unchecked
Name: associate; Description: "&Associate files"; GroupDescription: "Other tasks:"; Flags: unchecked
显示效果

以下是支持的参数列表:

Name

任务的内部名称。

任务名称中 \ 或 / 字符的总数称为任务的级别。任何级别为 1 或以上的任务都是子任务。在子任务之前列出的、级别比子任务低 1 的任务是父任务。与子任务具有相同父任务的其他任务是同级任务。

如果父任务未被选中,则子任务无法被选中。如果父任务的子任务都未被选中,则父任务也无法被选中,除非任务参数直接引用了父任务,或者父任务包含 checkablealone 标志。

如果同级任务有排他性标记,则只能选择其中一个。

Description

任务描述,可包括常量。该说明将在安装过程中显示给最终用户。

GroupDescription

一组任务的组描述,可以包括常量。具有相同组描述的连续任务将在文本标签下方分组。文本标签显示组描述。

Components

该任务所属组件的空格分隔列表。如果最终用户从该列表中选择了一个组件,则会显示该任务。不带 Components 参数的任务条目将始终显示。

Flags

该参数是一组额外选项。可用空格分隔多个选项。支持以下选项:

checkablealone

指定当任务没有任何子任务时,可以检查该任务。默认情况下,如果没有任务参数直接引用该任务,取消选中该任务的所有子任务将导致该任务被取消选中。

checkedonce

指示 Setup 在发现同一应用程序的旧版本已安装时,应取消选中该任务。

如果 “UsePreviousTasks”[Setup] 部分指令为 “否”,则该标记将被禁用。

dontinheritcheck

指定当任务的父级任务被选中时,该任务不应自动被选中。对顶层任务无效,不能与 exclusive 标志结合使用。

exclusive

指示 Setup 将此任务与同样带有 exclusive 标志的同级任务互斥。

restart

如果选择了该任务,则指示 Setup 在安装结束时要求用户重启系统,无论是否有必要(例如,由于 [Files] 部分的条目带有 restartreplace 标志)。与 AlwaysRestart 类似,但针对每个任务。

unchecked

指示安装程序取消选中该任务。

Page10、wpReady

可设参数为yes和no,默认为no。

如果设置为 “是”,安装程序将不显示 “准备安装 ”向导页面。

当安装程序未静默运行时,如果在 “准备安装 ”向导页面之前尚未显示其他向导页面,则该指令将被忽略。

将此设置为 “是 ”不会自动将新的最后一个预安装向导页面上的 “下一步 ”按钮标题更改为 “安装”。您必须手动更改。例如,如果新的最后一个预安装向导页面是 “选择程序组 ”页面:

Example:
[Setup]
DisableReadyPage=yes[Code]
procedure CurPageChanged(CurPageID: Integer);
beginif CurPageID = wpSelectProgramGroup thenWizardForm.NextButton.Caption := SetupMessage(msgButtonInstall)elseWizardForm.NextButton.Caption := SetupMessage(msgButtonNext);
end;

Page11、wpPreparing

通常情况下,安装程序不会在此页面停止或暂停。只有当安装程序确定无法继续或检测到应用程序使用了需要更新的文件时,才会停止或暂停。

如果 PrepareToInstall 事件函数返回错误,或者 [Files] 和 [InstallDelete] 部分中指定的一个或多个文件被(其他安装程序)排队等待在下次重启时替换或删除,就会发生前一种情况。在这种情况下,系统会告诉用户需要重新启动计算机,然后再次运行安装程序。请注意,静默安装时也会执行此检查,但任何信息都会显示在消息框中,而不是向导页面内。

如果将 “CloseApplications ”设置为 “是 ”或 “强制”,就会出现后一种情况。

Page12、wpInstalling

在实际安装过程中显示。

Page13、wpInfoAfter

指定可选的 “readme ”文件(.txt 或 .rtf(富文本)格式)的名称,该文件将在安装成功后显示。运行编译器时,该文件必须位于安装的源代码目录中,除非指定了完全限定路径名或路径名前缀为 “compiler:”,在这种情况下,编译器会在编译器目录中查找该文件。

与 isreadme 文件不同的是,该文本将作为向导的一个页面显示,而不是在单独的记事本窗口中显示。

Example:
[Setup]
InfoAfterFile=D:\INNO\test\files\InfoAfter.txt

如果用户选择的语言设置了 InfoAfterFile 参数,则该指令将被忽略。

Page14、wpFinished

可设参数为yes和no,默认为no。

如果设置为 “是”,安装程序将不会显示 “安装已完成 ”向导页面,而是在安装过程结束后立即关闭安装程序。如果使用 nowait 标志在[运行]部分执行一个程序,并且不希望在其他程序启动后,Setup Completed 窗口仍留在后台,这可能会很有用。

请注意,如果认为有必要重启计算机,或如果有文件分配给 InfoAfterFile [Setup] 部分指令,则 DisableFinishedPage 指令将被忽略。在这种情况下,仍将显示 “设置完成 ”向导页面。

相关文章:

Inno Setup 安装向导各个页面详解

概览 表中描述了使用Inno Setup生成的安装包在安装过程中各个页面的字段和对应的说明信息。后文会对各个页面的参数做进一步解释说明。 字段说明wpWelcome欢迎页wpLicense许可协议wpPassword密码wpInfoBefore信息wpUserInfo用户信息wpSelectDir选择目标位置wpSelectComponent…...

转战web3远程工作的英语学习的路线规划

目录 一、明确学习目标与定位 二、基础阶段(0 - 6个月) (一)词汇积累 (二)语法学习 (三)听力与口语 三、进阶阶段(6 - 18个月) (一&#xf…...

OPENCV重点结构体Mat的讲解

一、Opencv的作用 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C 类构成,同时提供了Pytho…...

Java 创建线程池的几种方式

在 Java 中创建线程池主要通过 java.util.concurrent 包下的 ExecutorService 接口及其实现类。以下是创建线程池的几种常见方式: ✅ 1. 使用 Executors 工具类(最简单) ExecutorService executor Executors.newFixedThreadPool(10);常用方…...

【趣味Html】第11课:动态闪烁发光粒子五角星

打造炫酷的动态闪烁发光粒子五角星效果 前言 在现代Web开发中,视觉效果的重要性不言而喻。今天我们将深入探讨如何使用HTML5 Canvas和JavaScript创建一个令人惊艳的动态闪烁发光粒子五角星效果。这个项目不仅展示了Canvas的强大功能,还涉及了粒子系统、…...

AnyIO Event:异步编程中的同步利器

在异步编程的世界里,任务之间的通信和协调是一个常见的需求。AnyIO 提供的 Event 类,为这一需求提供了一个强大而简洁的解决方案。本文将深入探讨 anyio.Event 的使用方法、特点以及在实际应用中的最佳实践。 一、AnyIO Event 概述 anyio.Event 是 Any…...

CFTel:一种基于云雾自动化的鲁棒且可扩展的远程机器人架构

中文标题: CFTel:一种基于云雾自动化的鲁棒且可扩展的远程机器人架构 英文标题: CFTel: A Practical Architecture for Robust and Scalable Telerobotics with Cloud-Fog Automation 作者信息 Thien Tran, Jonathan Kua, Minh Tran, Hongh…...

Educational Codeforces Round 179 (Rated for Div. 2)

CF2111,简单手速场 A. Energy Crystals 贪心&#xff0c;每次最小值会乘2&#xff0c;直接模拟即可&#xff0c;复杂度 O ( log ⁡ n ) O(\log n) O(logn) void solve(){int x;cin>>x;multiset<int> s{0,0,0};int res0;while(*s.begin()<x){int x*s.begin();s…...

完成一个可交互的k8s管理平台的页面开发

使用deepseek完成设计一个k8s管理平台&#xff0c;关键词如下&#xff1a; 完成一个可交互的k8s管理平台的页面开发Kubernetes 管理平台页面设计 下面是一个基于现代Web技术的可交互Kubernetes管理平台的页面设计方案&#xff0c;使用React作为前端框架&#xff0c;配合Ant De…...

多线程编程技术解析及示例:pthread_cond_timedwait、pthread_mutex_lock 和 pthread_mutex_trylock

多线程编程技术解析及示例&#xff1a;pthread_cond_timedwait、pthread_mutex_lock 和 pthread_mutex_trylock 摘要 本文深入解析了多线程编程中 pthread_cond_timedwait、pthread_mutex_lock 和 pthread_mutex_trylock 三个函数的功能、使用场景及注意事项&#xff0c;并通…...

vue实现点击单选或者多选模式

toggleSelect(item) { if (!this.single) { // 多选模式 const itemIndex this.selectedItems.findIndex( (selectedItem) > selectedItem.userId item.userId ); // 假设每个对象都有一个唯一的id属性 if (itemIndex ! -1) { this.selectedItems.splice(itemIndex, 1); }…...

Windows系统工具:WinToolsPlus 之 SQL Server 日志清理

使用软件时提示数据库事务日志已满&#xff0c; 使用WinToolsPlus 数据库页签 先设置 数据源 &#xff0c; 选择 需要清理日志的数据库&#xff0c; 点击 数据库日志清理 即可。 下载地址&#xff1a; http://v.s3.sh.cn/archives/2279.html...

在Windows11上安装 Ubuntu WSL

不想安装虚拟机,想在Windows11上运行Linux。网上虽有教程,但是图片明显都是老图,与Windows11还是有些差异。网上缺乏一个齐全的真正的Windows11运行Linux的教程。 一、在Windows上的设置 1. 在window11的搜索框内(所有你找不到的应用都可以用这个搜索功能)&#xff0c;搜索&q…...

嵌入式Linux之RK3568

系统烧写镜像。 1、直接使用正点原子官方的updata.img(MIDP) 进入瑞芯微发开工具RKDevTool&#xff0c;选择升级固件&#xff0c;上传到固件&#xff0c;记住这里要进入maskrom模式或者是loader模式&#xff0c;进入该模式之后点击升级即可。 2、烧入自己制作的镜像(单独、一…...

Elasticsearch的插件(Plugin)系统介绍

Elasticsearch的插件(Plugin)系统是一种扩展机制,允许用户通过添加自定义功能来增强默认功能,而无需修改核心代码。插件可以提供从分析器、存储后端到安全认证、机器学习等各种功能,使Elasticsearch能够灵活适应不同的应用场景和业务需求。 一、插件的核心特点 模块化扩展…...

提取 PDF 文件中的文字以及图片中的文字

Adobe 提供了多种方案可以快速提取 PDF 文件中的文字以及图片中的文字&#xff0c;主要依赖其 Acrobat 系列产品和 OCR&#xff08;光学字符识别&#xff09;技术。以下是具体解决方案的概述&#xff0c;涵盖了文字和图片文字的提取方法&#xff1a; 1. 提取 PDF 中的文字 如果…...

JavaScript性能优化实战技术

目录 性能优化核心原则 代码层面优化 加载优化策略 内存管理实践 及时解除事件监听 避免内存泄漏模式 渲染性能调优 使用requestAnimationFrame优化动画 批量DOM操作减少回流 性能监控工具 现代API应用 缓存策略实施 性能优化核心原则 减少资源加载时间 避免阻塞主…...

LeetCode 热题 100 739. 每日温度

LeetCode 热题 100 | 739. 每日温度 大家好&#xff0c;今天我们来解决一道经典的算法题——每日温度。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求我们找到一个数组&#xff0c;其中每个元素表示从当前天开始&#xff0c;下一个更高温度出现的天数。如果之后没有更…...

网页前端开发(基础进阶3--Vue)

Vue3 Vue是一款用于构建用户界面的渐进式的JavaScript框架。 Vue由2部分组成&#xff1a;Vue核心包&#xff0c;Vue插件包 Vue核心包包含&#xff1a;声明式渲染&#xff0c;组件系统。 Vue插件包&#xff1a;VueRouter&#xff08;客户端路由&#xff09;&#xff0c;Vuex…...

tryhackme——Abusing Windows Internals(进程注入)

文章目录 一、Abusing Processes二、进程镂空三、线程劫持四、DLL注入五、Memory Execution Alternatives 一、Abusing Processes 操作系统上运行的应用程序可以包含一个或多个进程&#xff0c;进程表示正在执行的程序。进程包含许多其他子组件&#xff0c;并且直接与内存或虚…...

【游戏科学】游戏开发中数学算法的核心与应用

一、游戏科学&#xff08;Game Science&#xff09; 涉及大量数学算法和模型&#xff0c;用于实现物理模拟、图形渲染、人工智能、路径规划、碰撞检测等核心功能。 1.1、图形渲染与几何计算 1. 三维变换&#xff08;3D Transformations&#xff09; 矩阵变换&#xff1a; 模…...

【Day44】

DAY 44 预训练模型 知识点回顾&#xff1a; 预训练的概念常见的分类预训练模型图像预训练模型的发展史预训练的策略预训练代码实战&#xff1a;resnet18 作业&#xff1a; 尝试在cifar10对比如下其他的预训练模型&#xff0c;观察差异&#xff0c;尽可能和他人选择的不同尝试通…...

基于 Alpine 定制单功能用途(kiosk)电脑

前言 故事回到 7 年前, 在网上冲浪的时候发现了一篇介绍使用 Ubuntu 打造 kiosk 单功能用途电脑的文章, 挺好玩的, 就翻译了一下并比葫芦画瓢先后用了 CentOS 7, ArchLinux 进行了实现. 历史文章: 翻译 - 使用Ubutnu14.04和Chrome打造单功能用途电脑(大屏展示电脑) 使用CentOS…...

知识图谱系统功能实现,技术解决方案,附源码

基于Java、Neo4j和ElasticSearch构建的医疗知识图谱知识库&#xff0c;是一个融合图数据库技术与搜索引擎的智能化医疗知识管理系统。该系统以Neo4j图数据库为核心&#xff0c;利用其高效的图结构存储能力&#xff0c;将疾病、症状、药品、检查项目、科室等医疗实体抽象为节点&…...

第12节 Node.js 函数

在JavaScript中&#xff0c;一个函数可以作为另一个函数接收一个参数。我们可以先定义一个函数&#xff0c;然后传递&#xff0c;也可以在传递参数的地方直接定义函数。 Node.js中函数的使用与Javascript类似&#xff0c;举例来说&#xff0c;你可以这样做&#xff1a; funct…...

洛谷P12610 ——[CCC 2025 Junior] Donut Shop

题目背景 Score: 15. 题目描述 The owner of a donut shop spends the day baking and selling donuts. Given the events that happen over the course of the day, your job is to determine the number of donuts remaining when the shop closes. 输入格式 The first …...

1. 数据库基础

1.1 什么是数据库 ⭐ mysql 本质是一种网络服务, 是基于 C(mysql) S(mysqld)的 网络服务. 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库&#xff1f;文件保存数据存在以下缺点&#xff1a; 文件的安全性问题。文件不利于数据查询和管理。文件不利于存储海量数据。…...

英伟达288GB HBM4+50P算力

英伟达CEO黄仁勋在COMPUTEX 2025上突然官宣&#xff1a;以暗物质研究先驱Vera Rubin命名的新一代AI芯片即将量产&#xff01;这颗被称作“算力巨兽”的Rubin GPU&#xff0c;不仅搭载288GB HBM4显存和50 Petaflops推理算力&#xff0c;更携三大颠覆性技术直击AI行业痛点。更可怕…...

【Pandas】pandas DataFrame reset_index

Pandas2.2 DataFrame Reindexing selection label manipulation 方法描述DataFrame.add_prefix(prefix[, axis])用于在 DataFrame 的行标签或列标签前添加指定前缀的方法DataFrame.add_suffix(suffix[, axis])用于在 DataFrame 的行标签或列标签后添加指定后缀的方法DataFram…...

综合案例:斗地主

综合案例&#xff1a;斗地主 1.程序概述 这是一个模拟斗地主游戏发牌过程的C语言程序&#xff0c;实现了扑克牌的初始化、洗牌和发牌功能。 2.功能需求 2.1 扑克牌定义 使用结构体 Card 表示一张牌&#xff0c;包含&#xff1a; 花色属性suit&#xff08;0-3表示普通花色♥…...