2013-10-25 2 views
2

Я пытаюсь переопределить кнопки Next/Cancel на странице wpFinished - NextButton должен показать загруженный файл и выйти из установки - он работает нормально, но CancelButton ничего не делает - он должен закрыть установщик со стандартным подтверждением. Интересно, что это возможно со стандартными событиями inno или мне нужно написать собственный код для выхода из приложения и показать подтверждение?Inno Setup заменит кнопки на wpфинированной странице

function NextButtonClick(CurPage: Integer): Boolean; 
begin 
    if CurPage = wpFinished then begin 
    ShowDownloadedFile(); 
    end; 
    Result := True; 
end; 


procedure CurPageChanged(CurPageID: Integer); 
begin 
    if CurPageID = wpFinished then begin 
    WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall); 
    WizardForm.CancelButton.Caption := SetupMessage(msgButtonFinish); 
    WizardForm.CancelButton.Visible := True; 
    end; 
end; 
+1

На странице 'wpFinished' ничего не нужно отменить - все уже установлено. – Miral

ответ

2

Вот она, но не делают это у себя дома детей :-)

[Setup] 
AppName=My Program 
AppVersion=1.5 
DefaultDirName={pf}\My Program 

[Code] 
procedure ExitProcess(uExitCode: UINT); 
    external '[email protected] stdcall'; 

function NextButtonClick(CurPage: Integer): Boolean; 
begin 
    Result := True; 
    // if the fake Finish button was clicked... 
    if CurPage = wpFinished then 
    MsgBox('Welcome to the next installation!', mbInformation, MB_OK); 
end; 

procedure CancelButtonClickFinishedPage(Sender: TObject); 
begin 
    // display the "Exit Setup ?" message box and if the user selects "Yes", 
    // then exit the process; it is currently the only way how to exit setup 
    // process manually 
    if ExitSetupMsgBox then 
    ExitProcess(0); 
end; 

procedure CurPageChanged(CurPageID: Integer); 
begin 
    if CurPageID = wpFinished then 
    begin 
    WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall); 
    WizardForm.CancelButton.Caption := SetupMessage(msgButtonFinish); 
    WizardForm.CancelButton.Visible := True; 
    // bind your own OnClick event for the Cancel button; the original one 
    // is already disconnected at this stage 
    WizardForm.CancelButton.OnClick := @CancelButtonClickFinishedPage; 
    end; 
end; 
1

Правильная альтернатива тому, что вы пытаетесь сделать, это включить [Run] запись вроде так:

[Run] 
Filename: {app}\yourfile.exe; Description: Run my application; Flags: postinstall nowait 

Это будет отображать флажок на странице wpFinished, давая им выбор, чтобы запустить приложение или нет.

Смежные вопросы