This is a frequently asked question in the group. In fact, you can take a closer look at the help documentation and ask Baidu Google to solve the problem. There are only two solutions.
First, use tools such as reshacker to modify the NSIs UI template. The control ID is 1046. Drag the control to the full header and save it and reference it in the script.
The second code solves this problem. In fact, it is quite intuitive and understandable to modify the UI template, but there is no way to solve the code, depending on your habits and abilities, there are two methods to solve the problem using code: movewindow or setwindowpos. These two functions are not superior to others. I personally think movewindow is the opposite method.
Function: changes the position and size of a specified window. for the top window, the position and size depend on the upper left corner of the screen; for the Child window, the position and size depend on the upper left corner of the parent window customer area. for the owned window, the position and size depend on the upper left corner of the screen. function prototype: bool movewindow (hwnd, int X, int y, int nwidth, int nheight, bool brepaint); system is used in NSIs code. DLL calls the movewindow method as follows:
Getdlgitem $0 $ hwndparent1046 # obtain the image control handle
System: Call 'user32: movewindow (ir0, I0, I0, i500, I60, i1) in' # modify the position of the image control,
$ {Nsd_setimage} $0 "$ pluginsdir \ test.bmp" $1 # attach an image
NSIs header filled with images