PDA

Ver la Versión Completa : Instalación condicional con Inno Setup


adebonis
06-04-2013, 19:36:06
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:


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 (http://www.jrsoftware.org/).

nlsgarcia
07-04-2013, 08:40:41
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:

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:

http://img825.imageshack.us/img825/2916/innosetup1.jpg

Revisa este link:

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.