Installation 加上“;全部选中/全部取消选中";一组任务的复选框?

Installation 加上“;全部选中/全部取消选中";一组任务的复选框?,installation,inno-setup,pascal,pascalscript,Installation,Inno Setup,Pascal,Pascalscript,我制作了一个包含4个任务组的安装程序,每个组有30-40个可检查的任务,手动取消选中所有任务有点疯狂,我不想设置组件,因为这样做的目的是让您可以自由选择/检查/取消选中安装程序中要执行的任何任务,我认为对于这个安装程序来说,组件可能是一个不好的方法 然后,我想知道是否可以在每个任务组的顶部添加一个名为“全部选中”的复选框,该复选框将选中或取消选中该任务组中的所有任务,该复选框将名称改为“全部取消选中”以执行相反的操作 如何做到这一点?是使用pascal代码所必需的?一种方法是构建任务层次结构,它

我制作了一个包含4个任务组的安装程序,每个组有30-40个可检查的任务,手动取消选中所有任务有点疯狂,我不想设置
组件
,因为这样做的目的是让您可以自由选择/检查/取消选中安装程序中要执行的任何任务,我认为对于这个安装程序来说,
组件
可能是一个不好的方法

然后,我想知道是否可以在每个任务组的顶部添加一个名为“全部选中”的复选框,该复选框将选中或取消选中该任务组中的所有任务,该复选框将名称改为“全部取消选中”以执行相反的操作


如何做到这一点?是使用pascal代码所必需的?

一种方法是构建任务层次结构,它可以通过编写由任务项的参数构建的路径来完成,这些参数由
\
/
字符分隔。这在参数文档中隐藏得很深:

任务名称中\或/字符的总数为 调用任务的级别。任何级别为1或更高的任务都是 子任务。在级别为1的子任务之前列出的任务 小于子任务的是父任务。与 与子任务相同的父任务是同级任务

例如,要创建父级、子级和子级的层次结构,可以编写:

[Tasks]
Name: parent; Description: "Parent task"; Flags: unchecked
Name: parent\child; Description: "Child task"; Flags: unchecked
Name: parent\child\subchild; Description: "Subchild task"; Flags: unchecked
“任务”页面将生成以下内容:

默认情况下,层次结构中构建的任务将继承检查状态(除非您为子任务条目指定标志),因此对于您的总体目标,您可以编写如下内容:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Tasks]
Name: group1; Description: "Check/uncheck all"; GroupDescription: "1. Group description"; Flags: unchecked
Name: group1\task1; Description: "1. Task"; Flags: unchecked
Name: group1\task2; Description: "2. Task"; Flags: unchecked
Name: group1\task3; Description: "3. Task"; Flags: unchecked

Name: group2; Description: "Check/uncheck all"; GroupDescription: "2. Group description"; Flags: unchecked
Name: group2\task1; Description: "1. Task"; Flags: unchecked
Name: group2\task2; Description: "2. Task"; Flags: unchecked
Name: group2\task3; Description: "3. Task"; Flags: unchecked
“任务”页面将生成以下内容:


您介意它们没有组描述,并且缩进吗?我正在考虑构建真正的任务层次结构()。@TLama感谢您的帮助,我想保留组描述,因为它是唯一的“分隔符”,正如我所说的,安装程序中充满了任务(+100),如果没有组描述,在没有必要的信息和分隔符的情况下浏览这些任务可能是疯狂的。如果您指的是源代码中的组描述参数,那么如果我仍然可以在UI中添加组描述,那么这并不重要。关于契约,你是什么意思?在源或结果UI中缩进?我想知道我是否可以保持我当前的UI大小,因为它很大。谢谢有了这个缩进,我的意思是,如果你有一个任务层次结构,子任务就有一个缩进(如果你运行我在链接的粘贴库中发布的脚本,你可以看到真实任务层次结构的输出)。但是,如果使用真正的任务层次结构,您将丢失组描述,这是您不希望看到的。另一方面,这种层次结构正是为此目的而设计的。嗯,我可以想出很多方法,但是每个方法都需要使用代码的索引访问,这很难维护。很抱歉,我没有注意到链接的url!,是的,这个结果太棒了!,我没有问题,缩进更具可读性,请随时发布答案,将其标记为已接受的答案,再次感谢!如果你能链接官方文档来解释这个层次结构,那就太好了