Pour empêcher l'installateur d'exécuter, lorsque le test de pré-requis échoue, juste retour False
du InitializeSetup
. Cela quittera le programme d'installation avant même que l'assistant affiche.
function InitializeSetup(): Boolean;
begin
Result := True;
if not PrerequisitesTest then
begin
SuppressibleMsgBox('Prerequisites test failed', mbError, MB_OK, MB_OK);
Result := False;
end;
end;

Si vous avez besoin de tester les conditions préalables juste avant l'installation ne démarre que (le InitializeSetup
est trop tôt), vous pouvez appeler le Abort
function du 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;

Bien que pour ce scénario, pensez à utiliser le mécanisme PrepareToInstall
event function au lieu de quitter le programme d'installation.
function PrepareToInstall(var NeedsRestart: Boolean): String;
begin
Result := '';
if not PrerequisitesTest then
begin
Result := 'Prerequisites test failed';
end;
end;

Si vous devez forcer mettre fin à l'installateur tout autre moment, utilisez l'appel 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;
Bien que ce soit la sortie plutôt dangereuse, afin de l'utiliser seulement comme approche de dernier recours.

** Oui, il est possible. ** Espérez-vous que quelqu'un va écrire le code pour vous? Pouvez-vous au moins publier le code que vous avez déjà dans la section '[code']? –
La question a été répondue ici: http://stackoverflow.com/questions/6345920/inno-setup-how-to-abort-terminate-setup-during-install – 010110110101