inno-setup

Inno Setup Colocando imagen/control en página personalizada



inno-setup (3)

Para eso está TWizardPage.Surface del tipo TNewNotebookPage .

Además, nunca use coordenadas absolutas y tamaños. Su diseño se romperá, cuando el asistente se muestre en una pantalla DPI / escala alta, lo que es bastante común hoy en día con pantallas "retina". Use las funciones ScaleX y ScaleY . Por la misma razón, debe tener imágenes con diferentes resoluciones listas (consulte Asistente de configuración de Inno, ImageFile se ve mal con la escala de fuente en Windows 7 ). O al menos escalar / estirar el mapa de bits.

CustomPage := CreateCustomPage(wpLicense, ''Heading'', ''Sub heading.''); ExtractTemporaryFile(''image.bmp''); BtnImage := TBitmapImage.Create(WizardForm); with BtnImage do begin Parent := CustomPage.Surface; Bitmap.LoadFromFile(ExpandConstant(''{tmp}'')+''/image.bmp''); AutoSize := True; AutoSize := False; Height := ScaleX(Height); Width := ScaleY(Width); Stretch := True; Left := ScaleX(90); Top := WizardForm.SelectTasksPage.Top + WizardForm.SelectTasksPage.Height - Height - ScaleY(8); Cursor := crHand; OnClick := @ImageOnClick; end;

Diseño con 100% de zoom (96 DPI):

Diseño con 150% de zoom (144 DPI):

Diseño con zoom del 150% (144 DPI) con escala de desplazamiento / tamaño y estiramiento de imagen:

Estoy tratando de tener una imagen en una página personalizada. Puedo mostrar la página personalizada o la imagen en una página predefinida, pero no en la página personalizada.

Creo que el problema es con Parent := CustomPage.ID; .

Parent := WizardForm.SelectTasksPage; funciona sin embargo.

¿Cómo hacer esto correctamente?

procedure ImageOnClick(Sender: TObject); var ErrorCode: Integer; begin ShellExec('''', ''http://test.com'', '''', '''', SW_SHOW, ewNoWait, ErrorCode); end; var CustomPage: TWizardPage; BtnImage: TBitmapImage; procedure InitializeWizard; begin CustomPage := CreateCustomPage(wpLicense, ''Heading'', ''Sub heading.''); ExtractTemporaryFile(''image.bmp''); BtnImage := TBitmapImage.Create(WizardForm); with BtnImage do begin Parent := CustomPage.ID; Bitmap.LoadFromFile(ExpandConstant(''{tmp}'')+''/image.bmp''); AutoSize := True; Left := 90; Top := WizardForm.SelectTasksPage.Top + WizardForm.SelectTasksPage.Height - Height - 8; Cursor := crHand; OnClick := @ImageOnClick; end; end;


Similar a la respuesta de Martin Prikryl. Para tratar con diferentes configuraciones de DPI y colocar un mapa de bits:

  1. configura tu máquina al 100% DPI
  2. hacer un mapa de bits con tamaño (ancho / alto) que se ajuste a su página / formulario InnoSetup
  3. obtener estos ancho y alto (clic derecho / propiedades en su archivo bmp)
  4. usa el siguiente código
  5. configure su máquina a 150% DPI y cree su mapa de bits para 150% DPI y utilícelo en su lugar el primero (que se ajusta a 100% DPI), de esta manera se verá bien para 100% y para 200%

El código:

WarningImage := TBitmapImage.Create(RisksForm); WarningImage.Parent := RisksForm; WarningImage.Bitmap.LoadFromFile(ExpandConstant(''{app}'')+''uninstall-warning-large.bmp''); WarningImage.Left := ScaleX(24); WarningImage.Top := ScaleY(120); WarningImage.Width := ScaleX(544); WarningImage.Height := ScaleY(211); WarningImage.Stretch := True;

Cambie 544 con el ancho de su mapa de bits y 211 con la altura de su mapa de bits (desde el paso 3)

Estirar: = True hace que el mapa de bits se expanda (si es más pequeño) o se contraiga (si es más grande) que las propiedades de ancho / alto

PS, por supuesto, podría usar varios archivos y usar uno dependiendo de la configuración DPI de los usuarios (configuración DPI con Inno Setup ), pero los mapas de bits no tienen compresiones, por lo que no me gusta esta idea.


puedes usar la biblioteca de Botva2 http://krinkels.org/threads/botva2.1931/ usa el traductor de Google si no puedes entender el ruso puedes crear un instalador increíble usando esta imagen en el ejemplo de Botva2

[code] #include "botva2.iss" var SomeImage : Longint; procedure InitializeWizard(); begin {Your Custom page Code Goes Here} SomeImage := ImgLoad(WizardForm.Handle,''Image.bmp'',0,0,854,480,true,true)‌​; end; procedure CurPageChanged(CurPageID: Integer); begin ImgSetVisibility(SomeImage,false); if (CurPageID = CustomPage.ID) ImgSetVisibility(SomeImage,true); end;