NSIS以静默方式安装后弹出对话框/消息

问题描述 投票:0回答:1

我有一个NSIS安装程序设置为以静默模式运行。这非常有效。

安装完成后,我已经有客户请求信息弹出...但仍希望安装程序部分保持沉默!

我意识到这是违反直觉的。

那说的是在安装结束时覆盖静音?

我目前在.nsi脚本的开头设置了以下安装程序属性

SilentInstall silent
installer nsis
1个回答
0
投票

您可以使用.onInitSetSilent中打开或关闭静音模式,但是一旦该函数返回UI模式就无法更改。

简单的解决方案是在最后一个Banner末尾使用SplashSection插件之一来显示消息/图像。

或者,您可以使用仅显示进度条的最小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
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.