我将NSIS安装程序设置为以静默模式运行。效果很好。
安装完成后,我已经收到客户要求提供信息弹出窗口的请求……但是仍然希望安装程序部分保持沉默!
我意识到这是反直观的。
话虽这么说,在安装结束时是否可以覆盖静默?
我目前在.nsi脚本的开头设置了安装程序属性
This is a blog post hey check out this website <a href="http://www.website.com">Website Name</a>. It is a real good domain.
答案 0 :(得分:0)
您可以使用.onInit
在SetSilent
中打开或关闭静默模式,但是一旦该函数返回,UI模式就无法更改。
简单的解决方案是在最后一个Section
末尾使用Banner或Splash插件之一来显示消息/图像。
或者您可以使用最小的UI(仅显示进度条)创建伪造的静默模式:
!include LogicLib.nsh
Var Silent
Function .onInit
${If} ${Silent}
SetSilent Normal ; Turn off real silent mode
SetAutoClose True
StrCpy $Silent 1 ; Fake silent mode
${EndIf}
FunctionEnd
Page Components SkipPageIfSilent
Page Directory SkipPageIfSilent
Page InstFiles "" TweakInstfilesPage
Function SkipPageIfSilent
IntCmp $Silent 0 +2
Abort
FunctionEnd
Function TweakInstfilesPage
${If} $Silent <> 0
SetSilent Silent ; Make IfSilent return true
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $0 0x403 ; Show details button
ShowWindow $0 0
System::Call 'USER32::GetWindowRect(p$0,@r1)' ; NSIS v3+
System::Call 'USER32::GetWindowRect(p$HWNDPARENT,@r2)' ; NSIS v3+
System::Call '*$1(i,i.r3,i,i)'
System::Call '*$2(i.r5,i.r6,i.r7,ir3r8)'
IntOp $5 $7 - $5 ; Width
IntOp $6 $8 - $6 ; Height
System::Call 'USER32::SetWindowPos(p$HWNDPARENT,p,i,i,ir5,ir6,i0x12)'
SetDetailsView Hide
${EndIf}
FunctionEnd
Section
Sleep 333
Sleep 333
Sleep 333
Sleep 333
SectionEnd