Динамически отменить ControlEvent в InstallShield - PullRequest
0 голосов
/ 09 мая 2019

Я использую InstallShield 2013 SP1. В диалоговом окне у меня есть следующие ControlEvents на Next Кнопка:

Event     | Argument       | Condition
__________|________________|___________________________
NewDialog | CustomSetup    | CANCEL_NAVIGATION <> "1"
DoAction  | MyCustomAction | _IsSetupTypeMin = "Custom"

Идея состоит в том, что MyCustomAction делает свое дело, а затем устанавливает свойство CANCEL_NAVIGATION в 1, если событие NewDialog должно быть отменено. Однако условия оцениваются перед выполнением пользовательского действия, поэтому даже если установлено значение CANCEL_NAVIGATION, новое диалоговое окно все равно создается.

Если впоследствии невозможно оценить условие или каким-либо образом обойти это поведение, используйте другое решение, например, выполните другое настраиваемое действие в следующем диалоговом окне, оценивая свойство и перезапустив первое диалоговое окно.

Отключение кнопки Next не вариант, так как в моем диалоговом окне запускается окно выбора файла при нажатии Next (если соблюдены определенные условия), и только если это диалоговое окно отменено, поэтому следует перейти к следующему окну.

Я рассмотрел вопрос о добавлении кнопки в диалоговое окно, запускающее диалог выбора файла, но этот ответ не будет принят, так как я бы предпочел, чтобы описанное поведение не изменилось.

1 Ответ

0 голосов
/ 09 мая 2019

Как оказалось, я неправильно понял порядок ControlEvents. По некоторым причинам, я думал, что они были оценены снизу вверх, так как мой DoAction был оценен, хотя NewDialog был настроен выше. Переключение линий исправило мою проблему:

Event     | Argument       | Condition
__________|________________|___________________________
DoAction  | MyCustomAction | _IsSetupTypeMin = "Custom"
NewDialog | CustomSetup    | CANCEL_NAVIGATION <> "1"
...