Change caption of installer at runtime

From NSIS Wiki

Author: bholliger (talk, contrib)


This sample describes how to change the window title of the installer at runtime. It is based on this Forum-Thread. Thx rsegal.

The main code is

  SendMessage $HWNDPARENT ${WM_SETTEXT} 0 "STR:Your text"

This can be abstracted as a Macro through:

  !include "WinMessages.nsh"
  !define SetTitleBar "!insertmacro SetTitleBar"
  !macro SetTitlebar Str
    SendMessage $HWNDPARENT ${WM_SETTEXT} 0 "STR:${Str}"

Have a look at the following sample.


Outfile 'test.exe'
InstallDir '$PROGRAMFILES\Test'
!include WinMessages.nsh
!define SetTitleBar "!insertmacro SetTitleBar"
!macro SetTitlebar Str
  SendMessage $HWNDPARENT ${WM_SETTEXT} 0 "STR:${Str}"
Caption "My Installer"
page components
page directory
page instfiles
Section "Section 1"
  SendMessage $HWNDPARENT ${WM_SETTEXT} 0 "STR:We are waiting... [Section 1]"
  Sleep 5000
  SendMessage $HWNDPARENT ${WM_SETTEXT} 0 "STR:Ok, that's enough."
Section "Section 2"
  ${SetTitleBar} "We are waiting... [Section 2]"
  Sleep 5000
  ${SetTitleBar} "Ok, that's enough."
Function .onSelChange
  IntOp $1 $1 + 1
  ${SetTitleBar} "Changed sections $1 times"
Function .onInit
  StrCpy $1 "0"

Please note that you have to call this function in every page's opening (or pre) function, as otherwise the titlebar will be reset to the default set by Caption commands.

Additionally, the above function will only change the titlebar of the main installer window. Any messageboxes, error dialogs, etc. that may present themselves during installation will use the title set by Caption commands.

Personal tools