You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NSIS安装程序的欢迎页与完成页中修改图片宽度,用全屏背景图替换左侧横幅

如何在NSIS欢迎页/完成页设置全宽背景图

刚好我之前折腾过NSIS自定义界面,这个需求完全可以实现!下面给你一步步拆解具体做法:

核心思路

NSIS默认的欢迎/完成页左侧是固定宽度的Banner控件,右侧是文本区域。要实现全宽背景,我们需要修改Banner控件的尺寸,让它覆盖整个对话框宽度,再替换成自定义背景图即可。推荐使用Modern UI 2(NSIS自带的增强UI框架)来简化操作。

具体步骤

1. 引入Modern UI 2框架

在你的NSIS脚本开头,先引入Modern UI 2的头文件:

!include MUI2.nsh

2. 为页面绑定预初始化回调函数

我们需要在欢迎页和完成页加载前,调整控件尺寸。在定义页面时,指定自定义的预回调函数:

; 为欢迎页绑定预初始化函数
!define MUI_PAGE_CUSTOMFUNCTION_PRE WelcomePagePre
!insertmacro MUI_PAGE_WELCOME

; 为完成页绑定预初始化函数
!define MUI_PAGE_CUSTOMFUNCTION_PRE FinishPagePre
!insertmacro MUI_PAGE_FINISH

3. 编写回调函数调整控件并替换图片

接下来实现这两个回调函数,核心操作是找到Banner控件、修改它的尺寸为窗口全宽,再加载自定义背景图:

Function WelcomePagePre
  ; 获取欢迎页窗口的句柄
  FindWindow $0 "#32770" "" $HWNDPARENT
  ; 获取Banner控件的句柄(使用Modern UI预定义的控件ID)
  FindControl $1 ${MUI_CONTROL_BANNER} $0

  ; 获取窗口客户区的宽度($2是宽度值)
  GetClientSize $0 $2 $3

  ; 调整Banner控件的位置和大小:左上角对齐,宽度铺满窗口,高度保持默认Banner高度
  SetWindowPos $1 0 0 0 $2 ${MUI_BANNER_HEIGHT} ${SWP_NOZORDER|SWP_SHOWWINDOW}

  ; 可选:让图片拉伸填充整个控件(默认是居中显示)
  ModifyStyle $1 0 ${SS_REALSIZECLIENT}

  ; 加载自定义欢迎页背景图(替换成你的图片路径)
  !define MY_WELCOME_BG "welcome_background.bmp"
  LoadBitmap $4 "${MY_WELCOME_BG}"
  ; 将图片设置为Banner控件的内容
  SendMessage $1 ${STM_SETIMAGE} ${IMAGE_BITMAP} $4
FunctionEnd

Function FinishPagePre
  ; 完成页的操作和欢迎页几乎一致
  FindWindow $0 "#32770" "" $HWNDPARENT
  FindControl $1 ${MUI_CONTROL_BANNER} $0

  GetClientSize $0 $2 $3
  SetWindowPos $1 0 0 0 $2 ${MUI_BANNER_HEIGHT} ${SWP_NOZORDER|SWP_SHOWWINDOW}

  ModifyStyle $1 0 ${SS_REALSIZECLIENT}

  ; 加载自定义完成页背景图
  !define MY_FINISH_BG "finish_background.bmp"
  LoadBitmap $4 "${MY_FINISH_BG}"
  SendMessage $1 ${STM_SETIMAGE} ${IMAGE_BITMAP} $4
FunctionEnd

4. 额外优化提示

  • 图片尺寸适配:NSIS默认窗口宽度是340px,你可以用!define MUI_WELCOMEPAGE_WIDTH 400(自定义宽度)来调整窗口大小,然后让你的背景图宽度和这个值匹配,避免拉伸变形。
  • 文本层显示:如果背景图覆盖了原本的文本,你可以调整文本控件的Z顺序(用SetWindowPos的SWP_NOZORDER换成SWP_NOOWNERZORDER),或者修改文本的位置和颜色,让它在背景图上更清晰。
  • 图片格式:NSIS默认支持BMP格式,如果要用PNG,需要引入Bitmap插件来加载PNG图片。

内容的提问来源于stack exchange,提问作者אור הושמנד

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 15:47:36