如何为自定义的 nsis 安装程序添加边框

How to add a border to customized nsis installer

我正在 NSIS/MUI2.nsh 的帮助下开发自定义安装程序。我正在努力为安装程序添加边框。

当我在欢迎页面和完成页面上工作时,我只是在位图中添加边框(简单地绘制它)并将其相应地设置为控件 ID 1044。如何为许可证、组件或目录页面添加边框?

您可以通过创建额外的 windows:

来添加额外的边框
OutFile Test.exe
RequestExecutionLevel user

Page License "" onLicShow
Page InstFiles

!include nsDialogs.nsh ; WS_*
Function onLicShow
GetDlgItem  $hWndParent 0xFFFFFFFF
ShowWindow  0 ; Hide the original line
System::Call 'USER32::GetWindowRect(pr5,@r0)' ; NSIS v3+
System::Call 'USER32::MapWindowPoints(p0, p$hWndParent, pr0, i1)'
System::Call '*[=10=](i.r1,i.r2,i.r3,i.r4)'
IntOp   - 2 ; Adjust a little up
System::Call 'USER32::CreateWindowEx(i0, t"STATIC", p0, i ${WS_VISIBLE}|${WS_CHILD}, i 0, i r2, i 9999, i 4, p$hWndParent, p0, p0, p0)p.r0'
SetCtlColors [=10=] "" 0xff0000 ; Red

System::Call 'USER32::CreateWindowEx(i0, t"STATIC", p0, i ${WS_VISIBLE}|${WS_CHILD}, i 0, i 0, i 4, i 9999, p$hWndParent, p0, p0, p0)p.r0'
SetCtlColors [=10=] "" 0x00ff00 ; Green

System::Call 'USER32::GetClientRect(p$hWndParent,@r0)' ; NSIS v3+
System::Call '*[=10=](i,i,i.r3,i)'
IntOp   - 4 ; X = Window width - border width
System::Call 'USER32::CreateWindowEx(i0, t"STATIC", p0, i ${WS_VISIBLE}|${WS_CHILD}, i , i 0, i 4, i 9999, p$hWndParent, p0, p0, p0)p.r0'
SetCtlColors [=10=] "" 0xffff00 ; Yellow

System::Call 'USER32::CreateWindowEx(i0, t"STATIC", p0, i ${WS_VISIBLE}|${WS_CHILD}, i 0, i 0, i 9999, i 4, p$hWndParent, p0, p0, p0)p.r0'
SetCtlColors [=10=] "" 0xffffff ; White

FindWindow  "#32770" "" $hWndParent ; Find the inner dialog
System::Call 'USER32::CreateWindowEx(i0, t"STATIC", p0, i ${WS_VISIBLE}|${WS_CHILD}, i 0, i 0, i 9999, i 7, p, p0, p0, p0)p.r0'
SetCtlColors [=10=] "" 0x0000ff ; Blue
FunctionEnd
内部对话框中的

Windows仅在该页面可见,其他windows在所有页面可见。