Dobry_Doctor
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Доброго времени суток всем. Для "красивого" прерывания процесса инсталла, если после wpInfoBefore (ну или wpWelcome) не прошла проверка некоторых условий, пользовался ShouldSkipPage() с пропуском wpSelectDir,wpSelectProgramGroup,wpSelectTasks,wpReady,wpPreparing,wpInstalling,wpInfoAfter. В результате довольно "красиво" вываливался в wpFinished. До тех пор пока не решил вручную создать свою форму с контролами и после ввода в контролы некоторых значений сделать еще одну проверку. Вопрос : какой PageID нужно указать в ShouldSkipPage(), чтобы и созданная MyPage (находящаяся сразу после wpInfoBefore) была пропущена ? Или может это делается как-то по-другому ? Вот кусок кода из секции Code: Код: var MyPage: TWizardPage; fAbortSetup: Boolean; procedure CreateNewPage; begin MyPage:=CreateCustomPage(wpInfoBefore, 'Текст1', 'Текст2'); TopText:=TLabel.Create(MyPage) ... Edit1:=TEdit.Create(MyPage) ... // и т.д. end; procedure InitializeWizard(); begin { Custom wizard pages } CreateNewPage; end; function InitializeSetup(): Boolean; begin fAbortSetup := false; Result:=True; end; function NextButtonClick(CurPageID: Integer): Boolean; begin Result := true; case CurPageID of wpInfoBefore: begin // проверка некоторых условий, например if условие=false then begin if ActiveLanguage = 'English' then MsgBox('The operating system is not found the installed program.', mbInformation, MB_OK); if ActiveLanguage = 'Russian' then MsgBox('В операционной системе не найдено установленной программы.', mbInformation, MB_OK); fAbortSetup := true; end; end; end; end; function ShouldSkipPage(PageID: Integer): Boolean; begin if fAbortSetup then begin case PageID of wpSelectDir,wpSelectProgramGroup,wpSelectTasks,wpReady,wpPreparing,wpInstalling,wpInfoAfter: Result := True; end; if ActiveLanguage = 'English' then WizardForm.FinishedLabel.Caption := 'Update installation is aborted.'+#10+#13+'Click "Finish" to exit the installation' else if ActiveLanguage = 'Russian' then WizardForm.FinishedLabel.Caption := 'Установка обновления прервана.'+#10+#13+'Нажмите "Завершить" чтобы выйти из программы установки.'; end; end; | Уровень - программист на языке Pascal (Delphi), так что паскалевский код для меня - не проблема... | Всего записей: 5 | Зарегистр. 12-09-2013 | Отправлено: 14:37 25-10-2013 | Исправлено: Dobry_Doctor, 14:47 25-10-2013 |
|