簡體   English   中英

使用 nsis 安裝程序,添加自定義單選按鈕,根據選擇的單選按鈕調用部分

[英]using nsis installer, adding custom radiobuttons, calling sections according to radiobutton chosen

在此處輸入圖像描述

我希望如果沒有選擇任何 RadioButtons,那么當按下 Next 按鈕時,它應該會發出警報,請選擇至少一個項目,並且它不應該 go 到下一個對話框。

另外,我希望如果用戶選擇選項:更新現有軟件,則只復制一些文件,如果選擇了另一個單選按鈕,則復制所有文件,

這是否可以使用必須使用的部分或功能? 我可以調用一個部分,例如如果選擇 RadioButton 1,則調用 SECTION CREATEALLFILES,否則調用 SECTION CREATEONLYTWOFILES?

據我說,我想我想要代碼來保存這兩個 RadioButtons 的 id 並相應地使用它們來調用不同的部分或函數。 代碼是什么? 請幫忙?

此外,在此頁面上按 NEXT 后,下一個對話框將如下圖所示:我想顯示一個 LABEL,無論是 DEMO 完成還是 UPDATE 正在運行,為此我將使用 Resource Hacker 添加一個 Label,但是如何顯示 Label 並根據用戶選擇的 RadioButton 隱藏它在此處輸入圖像描述

您可以選擇/取消選擇部分或將邏輯放在一個部分中,此示例同時執行以下操作:

!include nsDialogs.nsh
!include Sections.nsh

var InstallType

Section 
#Install common files...
${If} $InstallType == DEMO
    #Do demo specific stuff
${Else}
    #Do update specific stuff
${EndIf}
SectionEnd

Section "" SEC_DEMO
#Install demo..
SectionEnd

Section "" SEC_UPDATE
#Do update..
SectionEnd

Page custom InstTypePageCreate InstTypePageLeave

Function InstTypePageCreate
nsDialogs::Create 1018
pop $0
${NSD_CreateRadioButton} 0 50u 100% 10u "Demo"
pop $1
${IfThen} $InstallType == DEMO ${|} ${NSD_Check} $1 ${|}
${NSD_CreateRadioButton} 0 70u 100% 10u "Update"
pop $2
${IfThen} $InstallType == UPDATE ${|} ${NSD_Check} $2 ${|}
nsDialogs::Show
FunctionEnd

Function InstTypePageLeave
${NSD_GetState} $1 $0
${If} $0 = ${BST_CHECKED}
    StrCpy $InstallType DEMO
    !insertmacro UnselectSection ${SEC_UPDATE}
    !insertmacro SelectSection ${SEC_DEMO}
${Else}
    ${NSD_GetState} $2 $0
    ${If} $0 = ${BST_CHECKED}
        StrCpy $InstallType UPDATE
        !insertmacro UnselectSection ${SEC_DEMO}
        !insertmacro SelectSection ${SEC_UPDATE}
    ${Else}
        MessageBox MB_ICONSTOP "You must select something!"
        Abort
    ${EndIf}
${EndIf}
FunctionEnd

要設置下一頁上的文本,只需在測試 $InstallType 的 if 塊中使用${NSD_SetText} $hwndYourLabel "Text"和 ShowWindow(此代碼需要在該頁面的 show function 回調(MUI_PAGE_CUSTOMFUNCTION_SHOW)中)

暫無
暫無

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

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