Per evitare che l'installatore da corsa, quando i prerequisiti test ha esito negativo, basta tornare False
dalla InitializeSetup
. Questo uscirà dal programma di installazione anche prima della visualizzazione della procedura guidata.
function InitializeSetup(): Boolean;
begin
Result := True;
if not PrerequisitesTest then
begin
SuppressibleMsgBox('Prerequisites test failed', mbError, MB_OK, MB_OK);
Result := False;
end;
end;
Se hai bisogno di testare prerequisiti destra prima dell'installazione inizia solo (cioè il InitializeSetup
è troppo presto), è possibile chiamare il Abort
function dal CurStepChanged(ssInstall)
:
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
if not PrerequisitesTest then
begin
SuppressibleMsgBox('Prerequisites test failed', mbError, MB_OK, MB_OK);
Abort;
end;
end;
end;
Anche se per questo scenario, è consigliabile utilizzare il meccanismo PrepareToInstall
event function anziché uscire dall'installazione.
function PrepareToInstall(var NeedsRestart: Boolean): String;
begin
Result := '';
if not PrerequisitesTest then
begin
Result := 'Prerequisites test failed';
end;
end;
Se è necessario forzare terminare l'installazione di qualsiasi altro momento, utilizzare la chiamata ExitProcess
WinAPI:
procedure ExitProcess(uExitCode: Integer);
external '[email protected] stdcall';
function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = wpReady then
begin
if not PrerequisitesTest then
begin
SuppressibleMsgBox('Prerequisites test failed', mbError, MB_OK, MB_OK);
ExitProcess(1);
end;
end;
Result := True;
end;
Anche se questo è uscita piuttosto pericoloso, in modo da utilizzare solo come l'ultimo ricorso.
fonte
2016-09-30 10:08:23
** Sì, è possibile. ** speri che qualcuno scriverà il codice per voi? Puoi almeno postare qualsiasi codice che hai già nella sezione '[code']? –
La domanda è stata data qui: http://stackoverflow.com/questions/6345920/inno-setup-how-to-abort-terminate-setup-during-install – 010110110101