Saltar al contenido

¿Cómo puedo agregar una casilla de verificación para archivos opcionales durante la instalación en Inno Setup?

Hacemos una verificación profunda cada sección en nuestro espacio con el objetivo de enseñarte siempre la información más veraz y certera.

Solución:

No tiene que crear casillas de verificación manualmente para eso. La forma estándar de permitir que el usuario elija qué instalar es usar el [Types] y [Components] secciones de su archivo de script.

Echa un vistazo a la Components.iss script ubicado en la carpeta de instalación de Inno Setupexamples.

; -- Components.iss --
; Demonstrates a components-based installation.

; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName=pfMy Program
DefaultGroupName=My Program
UninstallDisplayIcon=appMyProg.exe
OutputDir=userdocs:Inno Setup Examples Output

[Types]
Name: "full"; Description: "Full installation"
Name: "compact"; Description: "Compact installation"
Name: "custom"; Description: "Custom installation"; Flags: iscustom

[Components]
Name: "program"; Description: "Program Files"; Types: full compact custom; Flags: fixed
Name: "help"; Description: "Help File"; Types: full
Name: "readme"; Description: "Readme File"; Types: full
Name: "readmeen"; Description: "English"; Flags: exclusive
Name: "readmede"; Description: "German"; Flags: exclusive

[Files]
Source: "MyProg.exe"; DestDir: "app"; Components: program
Source: "MyProg.chm"; DestDir: "app"; Components: help
Source: "Readme.txt"; DestDir: "app"; Components: readmeen; Flags: isreadme
Source: "Readme-German.txt"; DestName: "Liesmich.txt"; DestDir: "app"; Components: readmede; Flags: isreadme

[Icons]
Name: "groupMy Program"; Filename: "appMyProg.exe"

En tiempo de ejecución, el instalador presenta este cuadro de diálogo dentro del asistente:

Diálogo de componentes

Necesitas hacer un Check función que devolverá el estado de la casilla de verificación de la [Code] sección de su guión. Algo como esto podría hacer lo que quieras, pero antes del script de código te corregiría en lo siguiente:

  • usar Nuevo… clases donde puedas, así que en tu caso usa TNewEdit en vez de TEdit
  • usar TWizardPage.Surface como un Parent si desea tener un determinado componente en la página (aquí no estoy seguro si esa es su intención, solo señale esto 🙂
  • formatea tu código, no necesita ser tan plano

En el siguiente ejemplo he usado Check función llamada InstallHelpFile para la instalación condicional de un determinado archivo, en este caso MyProg.chm. Él Check la función funciona simplemente; cuando devuelve True a la función, el archivo se procesa, se omite cuando devuelve False.

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName=pfMy Program
OutputDir=userdocs:Inno Setup Examples Output

[Files]
Source: "MyProg.exe"; DestDir: "app"
Source: "MyProg.chm"; DestDir: "app"; Check: InstallHelpFile;
[Code]
var
  InstallHelpCheckBox: TNewCheckBox;  

procedure InitializeWizard;
var  
  LabelFolder: TLabel;  
  MainPage: TWizardPage;  
  FolderToInstall: TNewEdit;  
begin
  MainPage := CreateCustomPage(wpWelcome, '', '');
  LabelFolder := TLabel.Create(MainPage);
  LabelFolder.Parent := WizardForm;
  LabelFolder.Top := 164;
  LabelFolder.Left := 6;
  LabelFolder.Caption := 'Directory:'

  FolderToInstall := TNewEdit.Create(MainPage);
  FolderToInstall.Parent := MainPage.Surface;
  FolderToInstall.Top := 182;
  FolderToInstall.Left := 85;
  FolderToInstall.Width := 380;
  FolderToInstall.Text :=  WizardDirValue;
  FolderToInstall.ReadOnly := True;

  InstallHelpCheckBox := TNewCheckBox.Create(MainPage);
  InstallHelpCheckBox.Parent := MainPage.Surface;
  InstallHelpCheckBox.Top := FolderToInstall.Top + FolderToInstall.Height + 8;
  InstallHelpCheckBox.Left := FolderToInstall.Left;
  InstallHelpCheckBox.Width := FolderToInstall.Width;
  InstallHelpCheckBox.Caption := 'Install help file';
end;

function InstallHelpFile: Boolean;
begin
   here is the Check function used above; if you return True to this 
   function, the file will be installed, when False, the file won't 
   be installed 
  Result := InstallHelpCheckBox.Checked;
end;

Puede hacerlo mucho más fácil con CreateInputOptionPage(). Consulte información detallada en la ayuda de Inno Setup. http://www.jrsoftware.org/ishelp/index.php?topic=scriptpages

Te invitamos a secundar nuestro trabajo dejando un comentario o dejando una puntuación te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *