Как отключить кнопку «Далее» в форме мастера в Inno Setup?

Есть ли способ отключить кнопку «Далее» в форме мастера установки Inno?


person Sasha    schedule 07.02.2010    source источник


Ответы (3)


Это должно работать:

Wizardform.NextButton.Enabled := False;

Для получения дополнительной информации посетите группы новостей InnoSetup:
http://www.jrsoftware.org/newsgroups.php

person Zyphrax    schedule 07.02.2010
comment
На каком мероприятии вы его используете? CurPageChanged? - person Zyphrax; 08.02.2010
comment
Я использую его в обработчике событий моей пользовательской кнопки. Я хочу отключить кнопку «Далее», чтобы пользователь не мог нажать на нее. - person Sasha; 08.02.2010
comment
Не могли бы вы опубликовать некоторые из сценариев InnoSetup в своем стартовом посте? Код должен работать, но это зависит от того, где вы его разместите. Теперь он может просто не вызываться или вызываться слишком поздно. - person Zyphrax; 08.02.2010
comment
Благодарю вас! Оно работает! Проблема заключалась в том, что после установки Enabled в False я использовал TOutputProgressWizardPage, и он изменил состояние кнопки Next. - person Sasha; 08.02.2010

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

Я хотел отключить кнопку ОТМЕНА после того, как пользователь начал обновление приложения. Используйте эту процедуру:

procedure CurPageChanged(CurPageID: Integer);
begin
  // always disable the cancel button; no going back now!!!
  if UpgradeInstallationMode then
    Wizardform.CancelButton.Enabled := False;
end;

Также другой способ сделать это вручную:

procedure DisableCancelButton();
begin
  WizardForm.CancelButton.Enabled := False;
  WizardForm.Update;
end;

procedure EnableCancelButton();
begin
  WizardForm.CancelButton.Enabled := True;
  WizardForm.Update;
end;

Другой способ - использовать эту директиву [Setup]:

[Setup]
AllowCancelDuringInstall=yes

Это очень полезно для простых сценариев; вы можете использовать это вместо описанных выше процедур.

person fubar    schedule 17.09.2013
comment
Я бы сказал, что заставлять WizardForm перекрашивать себя (эту строку WizardForm.Update) не нужно, и хотя вы ответили, как отключить кнопку «Отмена», я даю вам свой голос. - person TLama; 18.10.2013
comment
да, вы, вероятно, правы; это просто перебор! Иногда я просто использую двойное касание, чтобы убедиться! Я думаю, Java Swing repaint() до сих пор преследует меня... Тем не менее, если вы хотите использовать это вне CurPageChanged(), вам нужно WizardForm.Update;, иначе кнопка не обновится. - person fubar; 21.10.2013

Извините, что не могу помочь в вашей конкретной проблеме напрямую. Я хотел бы отметить, однако, что Inno Setup, похоже, не основан на установщике Windows, который, вероятно, гарантирует, что ваши программы не смогут соответствовать требованиям логотипа Windows.

Я бы посоветовал вам взглянуть на WiX 3, который является создателем установщика с открытым исходным кодом непосредственно от Microsoft, с отличной поддержкой со стороны многих людей, использующих его, и это позволяет вам легко создавать обычные пакеты установщика Windows. Отключить кнопку «Далее» легко с помощью Wix.

person villintehaspam    schedule 07.02.2010
comment
(Предположительно) требование MSI было снято - person Anders; 08.02.2010
comment
Извините, что это мужчины уронили? - person Sasha; 08.02.2010
comment
Выпало - значит больше не нужно. Ваша установка не обязательно должна основываться на установщике Windows, чтобы соответствовать требованиям к логотипу Windows. - person Zyphrax; 08.02.2010