Para evitar que el instalador se ejecuta, cuando la prueba falla requisitos previos, simplemente volver False
del InitializeSetup
. Esto saldrá del instalador incluso antes de que se muestre el asistente.
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 necesita probar requisitos previos justo antes de la instalación se inicia solamente (es decir, el InitializeSetup
es demasiado pronto), puede llamar a la Abort
function del 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;
A pesar de este escenario, puede utilizar el mecanismo de PrepareToInstall
event function, en lugar de salir de la configuración.
function PrepareToInstall(var NeedsRestart: Boolean): String;
begin
Result := '';
if not PrerequisitesTest then
begin
Result := 'Prerequisites test failed';
end;
end;
Si necesita forzar terminar la instalación de cualquier otro momento, utilice la llamada 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;
Aunque esta es la salida más segura, a fin de utilizarlo solo como el enfoque de último recurso.
** Sí, es posible. ** ¿Usted está esperando que alguien va a escribir el código para usted? ¿Puedes al menos publicar el código que ya tienes en la sección '[código']? –
La pregunta fue respondida aquí: http://stackoverflow.com/questions/6345920/inno-setup-how-to-abort-terminate-setup-during-install – 010110110101