Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Instalación condicional con Inno Setup (https://www.clubdelphi.com/foros/showthread.php?t=82724)

adebonis 06-04-2013 19:36:06

Instalación condicional con Inno Setup
 
Hola.

Necesito realizar una instalación de una aplicación con Inno Seup pero que se realice en función de la existencia de un archivo. De forma que si existe ese archivo no se realiceala instalación, pero sí si no existe el archivo.

Ya he visto que se puede condicionar la instalación de archivos individuales durante la instalación, pero a mí me interesa que no se realice la instalación completa.

Muchas gracis.

Adolfo de Bonis. Barcelona

dec 07-04-2013 00:58:08

Hola,

Puedes utilizar la función "InitializeSetup" en el apartado "code" de tu "script". Algo parecido a lo siguiente:

Código Delphi [-]
function InitializeSetup(): Boolean;
begin
  result := true;

  If not FileExists( 'C:\existingfile.txt' ) then
  begin
    MsgBox('Error:' #13#13 'Missing "C:\existingfile.txt": the installation cannot continue', mbError, MB_OK);
    result := false;
  end;
end;

Busca más información sobre la función "InitializeSetup" en la ayuda de InnoSetup.

nlsgarcia 07-04-2013 08:40:41

adebonis,

Cita:

Empezado por adebonis
...realizar una instalación de una aplicación con Inno Setup pero que se realice en función de la existencia de un archivo...

Revisa este código:
Código Delphi [-]
  const
     Path = 'C:\Control_Files\';

  var 
     CancelWithoutPrompt: boolean;

  function InitializeSetup(): Boolean;
  begin

     If not FileExists(Path + 'Control_Install.txt' ) then
     begin 
        MsgBox('InitializeSetup: No Existe el Archivo Control_Install.txt, Setup Canceled', mbInformation, MB_OK);
        Result := False
     end
     else
        Result := True;

  end;

  procedure CurStepChanged(CurStep: TSetupStep);
  begin

     CancelWithoutPrompt := True;

     if not FileExists( Path + 'Control_Install.txt' ) and (CurStep = ssInstall) then
     begin 
        MsgBox('CurStepChanged Antes de Install: No Existe el Archivo  Control_Install.txt, Setup Canceled', mbInformation, MB_OK);
        WizardForm.Close // Se ejecuta automáticamente por medio del procedure CancelButtonClick
     end

  end;

  procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
  begin
    if CurPageID=wpInstalling then
       Confirm := not CancelWithoutPrompt;
  end;
El código anterior cancela la instalación justo antes de la pantalla inicial del Setup por medio de la función InitializeSetup (Comentado en el Msg #2) o justo antes de iniciar la instalación (Botón de Install) por medio del procedimiento CurStepChanged. El método usado dependerá de los requerimientos de la aplicación.

Ambos métodos están predefinidos en Inno Setup y se codifican en la sección Code como se muestra en la imagen:



Revisa este link:
Cita:

Documentación de Inno Setup : http://www.jrsoftware.org/ishelp/
Espero sea útil :)

Nelson.

adebonis 08-04-2013 19:25:55

Perfecto. Las dos soluciones me solventan el tema.

Muy agradecido.

Adolfo de Bonis. Barcelona.


La franja horaria es GMT +2. Ahora son las 19:41:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi