簡體   English   中英

在 NSIS 安裝程序中調用 MUI 的 PRE 函數,在 NSIS 安裝程序中跳過頁面/對話框

[英]Calling PRE functions of MUI in NSIS installer, skipping pages/dialogs in NSIS installer

是否可以僅在需要時調用 MUI 對話框的 PRE function?

!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipComponentsPage
!insertmacro MUI_PAGE_COMPONENTS

Function SkipComponentsPage
 Abort
MessageBox MB_OK "You chose to UPDATE your current version"
FunctionEnd

//默認勾選此部分,即用戶將無法選擇 select 或取消選擇此部分,這必須執行..........怎么做?隱藏它,我在其名稱中包含一個 - 符號。 它的名字是“強制性的”

Section "-mandatory" SEC_UPDATE
    #Do update............
SectionEnd

我在 NSIS 安裝程序的自定義對話框頁面上有兩個 RadioButton(演示和更新)。 我希望當用戶選擇安裝更新(選擇更新單選按鈕)時,跳過組件頁面,並自動檢查並執行指定的部分。

但是,如果用戶選擇安裝 DEM(選擇 DEMO 單選按鈕),則不會跳過組件頁面,並且用戶可以在該組件頁面上選中或取消選中部分。

始終調用頁面回調,但您可以將邏輯放入 function 中:

...
section "" SEC_UPDATE 
sectionend

Function SkipComponentsPage
!insertmacro UnSelectSection ${SEC_UPDATE} ; Don't include update with demo by default?
${If} $InstallType == UPDATE
    !insertmacro SelectSection ${SEC_UPDATE}
    Abort
${EndIf}
Functionend

我不清楚您是否希望用戶能夠在演示模式下選擇更新,但如果您想強制更新,您可以將該部分設為只讀:

section "Update" SEC_UPDATE 
SectionIn RO
sectionend

(並從 pre 函數中刪除 UnSelectSection 調用)

...或者只是像您建議的那樣使用 -name 前綴使該部分不可見。

暫無
暫無

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

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