Проверьте / снимите флажки компонентов в зависимости от типа установки в Inno Setup - PullRequest
1 голос
/ 04 октября 2011

Я создаю пакет Inno Setup, который установит орфографические словари, которые использует мое приложение. Большинство людей будут устанавливать только один или несколько словарей, поэтому у меня есть два типа установки: Полная и Выборочная. Каждый словарь является подкомпонентом компонента под названием «Словари». (Есть более 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 других файлов при выборе этого типа. Но он по-прежнему отказывается снимать флажок, когда выбран пользовательский тип.

Ответы [ 2 ]

3 голосов
/ 04 октября 2011

Это совсем не странно;это просто, как работает «Пользовательский» тип.Действительно, это очень особенный тип из-за флага IsCustom.Если вы выберете этот тип, установщик не будет вносить автоматические изменения, поскольку по определению пользовательский тип должен позволять пользователю выбирать все вручную.Вы можете создать новый тип с именем «Типичный» или «Минимальный», который устанавливает только английский словарь.

1 голос
/ 23 ноября 2012

Ответ, предоставленный Андреасом Рейбрандом, правильный.Тем не менее, существует обходной путь для программного отключения пользовательских компонентов.См. Как разрешить установку только определенных компонентов в InnoSetup?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...