【问题标题】:Check / uncheck components depending on installation type in Inno Setup根据 Inno Setup 中的安装类型检查/取消选中组件
【发布时间】:2011-10-03 23:58:07
【问题描述】:

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

[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

我想要达到的目标:

  • 当用户选择“完整”时,安装程​​序应自动检查所有字典。
  • 当用户选择“自定义”时,安装程​​序应取消选择所有字典。

相反,所有字典最初是在完整模式下选择的,当用户选择自定义模式时,它们仍保持选中状态。我希望它们在后一种情况下会自动取消选择,因为没有为任何组件列出自定义类型。

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

【问题讨论】:

    标签: installation inno-setup


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      Andreas Rejbrand 提供的答案是正确的。但是,有一种解决方法可用于以编程方式禁用自定义组件。见How to allow to only install specific components in InnoSetup?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多