Installation 根据Inno安装程序中的安装类型,选中/取消选中组件

Installation 根据Inno安装程序中的安装类型,选中/取消选中组件,installation,inno-setup,Installation,Inno Setup,我正在创建一个Inno安装包,它将安装我的应用程序使用的拼写词典。大多数人将只安装一个或几个字典,所以我有两种安装类型:完整和自定义。每个字典都是名为“字典”的组件的子组件。(有20多个字典文件,为了简洁起见,我只展示了两个): 我想要达到的目标: 当用户选择“完整”时,安装程序应自动检查所有字典 当用户选择“自定义”时,安装程序应取消选择所有词典 相反,所有字典最初都是在完整模式下选择的,当用户选择自定义模式时,它们仍然处于选中状态。我希望在后一种情况下它们会自动取消选择,因为没有为任何组

我正在创建一个Inno安装包,它将安装我的应用程序使用的拼写词典。大多数人将只安装一个或几个字典,所以我有两种安装类型:完整和自定义。每个字典都是名为“字典”的组件的子组件。(有20多个字典文件,为了简洁起见,我只展示了两个):

我想要达到的目标:

  • 当用户选择“完整”时,安装程序应自动检查所有字典
  • 当用户选择“自定义”时,安装程序应取消选择所有词典
相反,所有字典最初都是在完整模式下选择的,当用户选择自定义模式时,它们仍然处于选中状态。我希望在后一种情况下它们会自动取消选择,因为没有为任何组件列出自定义类型


奇怪的是,如果我在两者之间插入另一种安装类型,例如“仅英语”,其中只包含英语词典,那么安装程序在选择此类型时会自动取消选中其他20个文件。但当选择自定义类型时,它仍然拒绝取消选中它们。

这一点也不奇怪;这只是“自定义”类型的工作方式。事实上,这是一种非常特殊的类型,因为有标志
IsCustom
。如果选择此类型,安装程序将不会进行自动更改,因为根据定义,自定义类型应该允许用户手动选择所有内容。您可以创建一个名为“典型”或“最小”的新类型,只安装英语词典。

这一点也不奇怪;这只是“自定义”类型的工作方式。事实上,这是一种非常特殊的类型,因为有标志
IsCustom
。如果选择此类型,安装程序将不会进行自动更改,因为根据定义,自定义类型应该允许用户手动选择所有内容。您可以创建一个名为“典型”或“最小”的新类型,只安装英语词典。

Andreas Rejbrand提供的答案是正确的。但是,有一种变通方法可用于以编程方式禁用自定义组件。参见

Andreas Rejbrand提供的答案是正确的。但是,有一种变通方法可用于以编程方式禁用自定义组件。看

[Types]
Name: Full; Description: "Install ALL dictionaries";
Name: Custom; Description: "Select the dictionaries to install"; Flags: IsCustom;

[Components]
Name: Dictionaries; Description: "Spelling dictionaries"; Types: Full;
Name: Dictionaries\EnUK; Description: "English (UK)"; Types: Full;
Name: Dictionaries\EnUS; Description: "English (US)"; Types: Full;

[Files]
Source: "E:\path\English (UK).adm"; DestDir: {app}; Components: Dictionaries\EnUK
Source: "E:\path\English (US).adm"; DestDir: {app}; Components: Dictionaries\EnUS