У меня есть пользовательская страница в моем скрипте Inno Setup, которую я создаю, выполнив следующие действия:
var
installSelectPage: TInputOptionWizardPage;
{ ... }
procedure InitializeWizard;
begin
installSelectPage :=
CreateInputOptionPage(wpInfoBefore,
'Select Destination Location', 'Where should {#MyAppName} be installed?',
'Please select which {#MyGameName} distribution you want to mod',
True, False);
radioIndex_retailInstall := installSelectPage.Add('Retail/DVD');
radioIndex_steamInstall := installSelectPage.Add('Steam');
radioIndex_manualInstall := installSelectPage.Add('Manual Directory Selection')
Затем, в какой-то момент в процедуре InitializeWizard
, я читаю некоторые ключи реестра и отключаю переключатели, чьи соответствующие ключи не найдены:
if not(retailInstallAvailable) then
installSelectPage.CheckListBox.ItemEnabled[radioIndex_retailInstall] := False;
if not(steamInstallAvailable) then
installSelectPage.CheckListBox.ItemEnabled[radioIndex_steamInstall] := False;
Это в основном работает, но есть некоторая странная ошибка с появлением кнопок. При тестировании этого на компьютере, где отключены первая и вторая кнопки (третья никогда не отключается), когда я впервые захожу на эту пользовательскую страницу, если ни один из параметров не выбран, они выглядят так:
Это тонко, но если вы присмотритесь, вы заметите, как первые две радиокнопки (не их текст) по-прежнему выглядят частично включенными (и в разной степени!).
Если я затем выберу третий вариант (на этом аппарате доступен только один), нажмите и затем снова, чтобы обновить страницу, кнопки будут выглядеть правильно:
Кто-нибудь знает, что, черт возьми, делает Inno Setup и как мне заставить кнопки выглядеть полностью отключенными, пока ни одна из кнопок не выбрана?