Wonky Roger
Wonky Roger

Reputation: 257

Progressbar position in NSIS

How to change progress bar position for example on installation page and place it at the center of the form instead of the default top position?

Upvotes: 0

Views: 907

Answers (1)

Anders
Anders

Reputation: 101666

A) Edit one of the UI files with Resource Hacker and apply it with ChangeUI

or

B) Change it at runtime:

outfile "$%temp%\test.exe"
requestexecutionlevel user
showinstdetails nevershow

Page instfiles "" instfilesshow

Function instfilesshow
FindWindow $9 "#32770" "" $HWNDPARENT
GetDlgItem $8 $9 0x3EC
System::Call '*(i,i,i,i)i.r7' ; Allocate a RECT struct
System::Call 'USER32::GetClientRect(ir9,ir7)'
System::Call '*$7(i,i,i.r0,i.r1)' ; Get inner dialog width/height
System::Call 'USER32::GetWindowRect(ir8,ir7)'
System::Call '*$7(i.r2,i.r3,i.r4,i.r5)'
System::Free $7
IntOp $5 $5 - $3 ; progress height
StrCpy $2 10 ; left padding
IntOp $4 $0 - 20 ; width = dialog - left+right padding
IntOp $0 $5 / 2
IntOp $1 $1 / 2
IntOp $1 $1 - $0
!define SWP_NOZORDER 4
System::Call 'USER32::SetWindowPos(ir8,i0,ir2,ir1,ir4,ir5,i${SWP_NOZORDER})'
FunctionEnd

Section
SectionEnd

Upvotes: 1

Related Questions