簡體   English   中英

NSIS以靜默方式安裝后彈出對話框/消息

[英]Popping up a dialog/message after NSIS install in silent mode

我將NSIS安裝程序設置為以靜默模式運行。 這很好。

安裝完成后,我曾有客戶要求彈出信息提示框...但仍然希望安裝程序部分保持沉默!

我意識到這是反直觀的。

話雖這么說,在安裝結束時是否有替代靜默的方法?

我目前在.nsi腳本的開頭在下面設置了installer屬性

SilentInstall silent

您可以使用SetSilent.onInit打開或關閉靜音模式,但是一旦該函數返回,則無法更改UI模式。

簡單的解決方案是僅在最后一Section的末尾使用BannerSplash插件之一來顯示消息/圖像。

或者,您可以使用最小的UI創建偽造的靜默模式,該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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM