Change caption of installer at runtime
From NSIS Wiki
Jump to navigationJump to search
Author: bholliger (talk, contrib) |
Description
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}" !macroend
Have a look at the following sample.
Sample
Outfile 'test.exe' InstallDir '$PROGRAMFILES\Test' !include WinMessages.nsh !define SetTitleBar "!insertmacro SetTitleBar" !macro SetTitlebar Str SendMessage $HWNDPARENT ${WM_SETTEXT} 0 "STR:${Str}" !macroend 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." SectionEnd Section "Section 2" ${SetTitleBar} "We are waiting... [Section 2]" Sleep 5000 ${SetTitleBar} "Ok, that's enough." SectionEnd Function .onSelChange IntOp $1 $1 + 1 ${SetTitleBar} "Changed sections $1 times" FunctionEnd Function .onInit StrCpy $1 "0" FunctionEnd
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.