当前位置: 首页 > 教程资源 > Inno Setup 教程 > 正文
Inno Setup 脚本中 Flags 标记都有哪些,分别是什么意思?

Inno Setup 脚本中 Flags 标记都有哪些,分别是什么意思?

作者:大眼仔~旭 日期:3周前 (06-27) 评论:0 条

摘要:在 Inno Setup 脚本中,Flags(标记)参数是赋予安装包灵活行为的核心机制。它通常作为附加选项出现,允许开发者通过简单的关键字组合,精确控制文件的复制、程序的运行以及界面的交互。多个 Flags 之间可以使用空格进行分隔。 一、 [Files] 段 Flags:精准掌控文件部署 [Files] 段的 Fla…

在 Inno Setup 脚本中,Flags(标记)参数是赋予安装包灵活行为的核心机制。它通常作为附加选项出现,允许开发者通过简单的关键字组合,精确控制文件的复制、程序的运行以及界面的交互。多个 Flags 之间可以使用空格进行分隔。

一、 [Files] 段 Flags:精准掌控文件部署

[Files] 段的 Flags 决定了文件如何从安装包提取并写入用户系统,是制作补丁和更新包的重中之重。

  • ignoreversion:完全不比较版本信息,无论目标文件版本号如何,都强制替换。此标志仅应用于应用程序私有文件,绝不可用于共享的系统文件,否则可能引发系统崩溃。
  • recursesubdirs:指示编译器递归搜索源目录下的所有子目录。通常与通配符(如 *.*)配合使用,实现整个文件夹的打包。
  • createallsubdirs:默认情况下,Inno Setup 会跳过空的子目录。此标志会强制在安装时创建所有子目录结构,必须与 recursesubdirs 配合使用。
  • overwritereadonly:如果目标文件具有“只读”属性,安装程序会自动去除该属性并强制覆盖。若不使用此标志,安装程序会弹出提示询问用户是否覆盖。
  • confirmoverwrite:在替换现有文件之前,始终要求用户确认。适用于需要用户知晓文件被替换的场景。
  • onlyifdoesntexist:只有在用户系统中不存在该文件时才进行安装。常用于安装初始配置文件,避免覆盖用户已修改的设置。
  • onlyifdestfileexists:只有当目标文件已存在时才安装。这在制作现有软件的增量补丁时非常有用,可防止误装用户未安装的文件。
  • isreadme:将文件标记为“自述文件”。安装完成后会提示用户是否查看,且整个安装过程中只能有一个文件使用此标志。
  • deleteafterinstall:指示安装程序在复制该文件并在 [Run] 段执行相关操作后,将其从系统中删除。常用于提取临时数据或辅助程序。
  • dontcopy:在常规文件复制阶段不复制该文件,而是将其静态编译到安装程序中。通常与 [Code] 段的 ExtractTemporaryFile 函数配合,用于按需释放临时文件。
  • nocompression:防止编译器压缩该文件。对于 JPEG、MP3 等已高度压缩的文件,使用此标志可加快编译速度并略微减小安装包体积。
  • regserver:指示安装程序调用 DLL/OCX 文件导出的 DllRegisterServer 函数进行注册,卸载时自动调用反注册函数。
  • regtypelib:用于注册类型库(.tlb 文件)。

二、 [Run] 段 Flags:灵活调度安装后任务

[Run] 段的 Flags 用于控制安装完成后程序的启动行为、权限以及用户交互。

  • postinstall:在安装完成的向导页面创建一个复选框,允许用户决定是否运行该程序。
  • nowait:安装程序启动该进程后不等待其完成,直接继续后续操作或结束安装。不能与 waituntilterminated 等组合使用。
  • waituntilterminated:安装程序会一直等待该进程完全终止后,才继续执行。这是默认行为,但在使用 shellexec 标志时必须显式指定。
  • waituntilidle:等待进程处于空闲状态(即等待用户输入)时才继续,而不是等待其完全退出。
  • runhidden:在隐藏窗口中运行程序。常用于执行后台批处理或命令行工具,避免弹出黑色控制台窗口。
  • runminimized / runmaximized:分别以最小化或最大化窗口运行指定的程序或文档。
  • shellexec:如果 Filename 不是 .exe 或 .com 文件(如 .txt、.doc 或文件夹),必须使用此标志。它会调用系统默认关联的程序来打开目标。
  • skipifsilent:如果用户使用了 /silent 或 /verysilent 命令行参数进行静默安装,则跳过此条目。
  • skipifnotsilent:仅在静默安装模式下执行,非静默模式下跳过。
  • unchecked:配合 postinstall 使用,将完成页面的复选框默认设置为未选中状态。
  • hidewizard:在该程序运行期间,隐藏安装向导界面。
  • 32bit / 64bit:控制 {sys} 常量映射到 32 位还是 64 位系统目录。注意,这两个标志不能与 shellexec 组合使用。

三、 [Setup] 段 Flags:定义安装程序全局行为

[Setup] 段的 Flags 用于控制安装向导的整体表现和系统兼容性。

  • iscustom:在 [Types] 段中使用,告诉安装程序该安装类型为“自定义类型”。当用户手动更改了组件选择时,安装类型会自动切换为此项。

四、 [Components] 段 Flags:组件化安装控制

[Components] 段的 Flags 用于精细化控制安装组件的层级与选择逻辑。

  • fixed:该组件为必装组件,用户无法取消勾选。
  • exclusive:同级组件中只能选择其中一个(单选逻辑)。
  • checkablealone:即使其所有子组件都未被选中,该组件依然可以被单独勾选。
  • dontinheritcheck:当父组件被选中时,该组件不会自动继承选中状态,需要用户手动勾选。

五、 [Registry] 段 Flags:注册表操作保障

  • uninsdeletekey:卸载程序时删除该注册表项及其所有子项。
  • uninsdeletevalue:卸载程序时仅删除该特定的注册表值。
  • createkeyifdoesntexist:仅当该注册表键不存在时才创建并赋值。

Flags 是 Inno Setup 脚本的灵魂。熟练掌握这些标记,不仅能大幅减少 [Code] 段中复杂的 Pascal 脚本编写,还能让安装程序的底层逻辑更加清晰、稳定。在实际开发中,建议查阅官方文档以获取最新的 Flags 列表及参数组合限制。

声明:大眼仔旭 | 本文采用署名-非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
文章名称:《Inno Setup 脚本中 Flags 标记都有哪些,分别是什么意思?
文章固定链接:https://www.dayanzai.me/flags-in-inno-setup-script.html
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。
转载声明
全部评论: (0条)
^_^ 暂无评论!

发表评论

返回顶部