vrnRaptor
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Всем привет, помогите пожалуйста, пол дня мучился с кодом, он создает страницу удаления или переустановки программы, так вот на этой странице кнопка cancel закрывает установку без предупреждения, хотелось бы чтобы предупреждение появлялось, но когда программа просто удаляется чтобы установка закрывалась без предупреждения. Это должно быть не сложно, но я никак не могу сделать. var StaticText: TNewStaticText; RadioButton_1, RadioButton_2, RadioButton_3: TRadioButton; Uninstall,Location,AppID:string; ResultCode:Integer; //Процедура NextButtonClick для новой страницы. function Page_NextButtonClick(Page: TWizardPage): Boolean; begin if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + '{#SetupSetting("AppID")}_is1', 'UninstallString', Uninstall) then Uninstall:=RemoveQuotes(Uninstall); if RadioButton_1.Checked then begin if not Exec(Uninstall, ' /SILENT', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK); Result:=True; end else if RadioButton_3.Checked then begin if not Exec(Uninstall, ' /SILENT', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK); Result:=True; MainForm.Close; end else begin if not RadioButton_1.Checked or RadioButton_3.Checked then Result:=True; end; end; //Процедура CancelButtonClick для новой страницы (Отмена без подтвеждения). procedure Page_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean); begin Confirm:=False; Cancel:=True; end; //Эта процедура создает новую страницу и все что на ней находится function CheckInstalledPage(PreviousPageId: Integer): Integer; var Page: TWizardPage; begin RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\' + '{#SetupSetting("AppID")}_is1', 'InstallLocation', Location) Page := CreateCustomPage(PreviousPageId,'Установка уже выполнена','Пожалуйста выберите действие.'); //Текст на странице StaticText := TNewStaticText.Create(Page); StaticText.Parent := Page.Surface; StaticText.Caption :='Установка выполнена в папку:' + ' ' +#13+ '' + Location + '' ++ ' '+#13+ 'Рекомендуется удалить текущую версию прежде чем продолжить.'; StaticText.Left := 0; StaticText.Top := ScaleY(24); StaticText.TabOrder := 0; StaticText.AutoSize:=True; //Первый RadioButton RadioButton_1 := TRadioButton.Create(Page); RadioButton_1.Parent := Page.Surface; RadioButton_1.Caption := 'Удалить и установить (Рекомендуется)'; RadioButton_1.Left := 0; RadioButton_1.Top := ScaleY(100); RadioButton_1.Width := ScaleX(300); RadioButton_1.Height := ScaleY(17); RadioButton_1.Checked := True; RadioButton_1.TabOrder := 1; RadioButton_1.TabStop := True; //Второй RadioButton RadioButton_2 := TRadioButton.Create(Page); RadioButton_2.Parent := Page.Surface; RadioButton_2.Caption := 'Установить'; RadioButton_2.Left := 0; RadioButton_2.Top := ScaleY(140); RadioButton_2.Width := ScaleX(170); RadioButton_2.Height := ScaleY(17); RadioButton_2.TabOrder := 2; //Третий RadioButton RadioButton_3 := TRadioButton.Create(Page); RadioButton_3.Parent := Page.Surface; RadioButton_3.Caption := 'Удалить'; RadioButton_3.Left := 0; RadioButton_3.Top := ScaleY(180); RadioButton_3.Width := ScaleX(170); RadioButton_3.Height := ScaleY(17); RadioButton_3.TabOrder := 3; Page.OnNextButtonClick := @Page_NextButtonClick; Page.OnCancelButtonClick := @Page_CancelButtonClick; Result := Page.ID; end; procedure InitializeWizard(); begin if RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\' + '{#SetupSetting("AppID")}_is1', 'UninstallString', Uninstall) then CheckInstalledPage(wpWelcome); //Если параметр реестра присутствует,будет создана новая страница end; |