Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Shkutu,
Цитата Shkutu:
А вот такая проблемка. Есть код (дополняю деинсталлятор) ... Но Abort почему-то срабатывает, только если на кнопку "отмена" нажать дважды. Подскажите, плиз, можно ли с этим что-то сделать? »
я по твоему запросу игрался с кодом. всегда вылетает исключение. К слову, вовсе необязательно присваивать UninstallProgressForm.CancelButton.ModalResult := mrAbort; при нажатии. Это можно сделать и до показывания окна в модальном режиме, например так:
читать дальше »
Код: Выделить весь код
procedure InitializeUninstallProgressForm();
begin
...
UninstallProgressForm.CancelButton.ModalResult := mrAbort;
...
if ShowModal = mrAbort then Abort;
end;

могу посоветивать одно (считаю это действительно самым простым): вызывать своё окно вместо стандартного
вот пример. В нём возможно много для тебя ненужного кода, но думаю смысл понятен http://forum.oszone.net/post-1939326-305.html

вот упрощённая версия:
читать дальше »
Код: Выделить весь код
function CreateUninstallForm: Integer;
var
    UninstallForm: TSetupForm;
    UninstallButton, ExitButton: TButton;
begin
    UninstallForm := CreateCustomForm;
    with UninstallForm do
    begin
        BorderStyle := bsSingle;
        BorderIcons := [biSystemMenu,biMinimize];
        Position := poScreenCenter;
        Caption := 'Uninstall';
        ClientWidth := ScaleX(634);
        ClientHeight := ScaleY(586);

        //uninstall button
        UninstallButton := TButton.Create(nil);
        with UninstallButton do
        begin
            Parent := UninstallForm;
            SetBounds(ScaleX(500), ScaleY(527), ScaleX(69), ScaleY(23));
            Cursor := crHand;
            Caption := SetupMessage(msgButtonYes);
            ModalResult := mrOk;
        end;

        //exit button
        ExitButton := TButton.Create(nil);
        with ExitButton do
        begin
            Parent := UninstallForm;
            SetBounds(UninstallButton.Left - UninstallButton.Width - ScaleX(16), UninstallButton.Top, UninstallButton.Width, UninstallButton.Height);
            Caption := SetupMessage(msgButtonNo);
            Cursor := crHand;
            ModalResult := mrCancel;
        end;

        Result := ShowModal;

        Free;
    end;
end;

function Unstall(): Boolean;
begin
    Result := False;

//    if   условия выполнены, то возвращаем True, что ведёт к полному удалению
//     ... 
//    then Result := True;
end;

function InitializeUninstall(): Boolean;
var
    ResultCode: Integer;
begin
    Result := False;

    if not UninstallSilent then
    begin
        Exec(ExpandConstant('{uninstallexe}'), '/VERYSILENT', '', SW_SHOW, ewNoWait, ResultCode);
        Exit;
    end;

    if CreateUninstallForm = mrOk then Result := Unstall();
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:22, 20-11-2013 | #1471