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;