Hi,
please i use a silent mode for my installation, but I notied that installation is so silent , i don't have any sign, i would like using progress bar for user.
in my research I found the progress bar in a page, but my need is just a progress without page to have in idea for the progress installation.
Please help me.
Thx.
ProgressBar with silent silentMod
4 posts
I would really suggest NOT having a progress bar. It really annoys me when I want to install a 3rd party program or run a 3rd party command line application with a silent switch that isn't silent. The whole point of a silent switch is so that the caller can manage progress while waiting for your process to complete, perhaps with a simple one line message.
But to answer your question, this can't be done properly (i.e. like the NSIS progress bar) because in silent mode there is no NSIS UI and so no progress messages are sent (PBM_SETPOS). You can still use a plug-in such as Banner or NXS to show a message to the user but again this defeats the purpose of a silent install.
Stu
But to answer your question, this can't be done properly (i.e. like the NSIS progress bar) because in silent mode there is no NSIS UI and so no progress messages are sent (PBM_SETPOS). You can still use a plug-in such as Banner or NXS to show a message to the user but again this defeats the purpose of a silent install.
Stu
thx
thx for you answers
thx for you answers
This is ugly, but it sort of works:
!include LogicLib.nshRun with setup.exe /silentgui
!include FileFunc.nsh
Var SilentGUI
!define SILENTGUI_INSTJUMP 2 ;page jump from first page to instfiles
!define SWP_NOMOVE 0x0002
!define SWP_NOZORDER 0x0004
!define SWP_NOSIZE 0x0001
!define SWP_FRAMECHANGED 0x0020
Function .onGuiInit
${GetParameters} $0
ClearErrors
${GetOptions} $0 "/SilentGUI" $0
${IfNot} ${Errors}
StrCpy $SilentGUI 1
System::Call 'USER32::SetWindowLong(i $HWNDPARENT,i -16,i 0x800008C8|0x00400000)'
SendMessage $HWNDPARENT "0x408" "${SILENTGUI_INSTJUMP}" ""
${EndIf}
FunctionEnd
Function InstFilesShow
${IfNotThen} $SilentGUI <> 0 ${|} Return ${|}
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $9 $0 0x3EC
StrCpy $1 ""
hideloop:
FindWindow $1 "" "" $0 $1
ShowWindow $1 0
StrCmp $1 0 "" hideloop
ShowWindow $9 1
System::Call '*(i,i,i,i)i.r0'
System::Call 'USER32::GetClientRect(i $9,ir0)'
System::Call '*$0(i,i,i,i.r2)i'
System::Call 'USER32::GetClientRect(i $HWNDPARENT,ir0)'
System::Call '*$0(i,i,i.r1,i)i'
IntOp $3 $1 - 25
System::Call 'USER32::SetWindowPos(i $9,i,i0,i0,ir3,ir2,i ${SWP_NOZORDER})'
System::Free $0
IntOp $2 $2 + 25
System::Call 'USER32::SetWindowPos(i $HWNDPARENT,i,i,i,ir1,ir2,i ${SWP_NOMOVE}|${SWP_NOZORDER}|${SWP_FRAMECHANGED})'
FunctionEnd
Function InstFilesLeave
${If} $SilentGUI <> 0
Quit
Abort
${EndIf}
FunctionEnd
Section
Sleep 1000
Sleep 1000
Sleep 1000
Sleep 1000
SectionEnd
Page Components
Page Directory
Page InstFiles "" InstFilesShow InstFilesLeave