使用单选按钮,然后在nsis中使用自定义按钮

时间:2014-07-04 06:11:42

标签: button nsis radio

我使用NSIS创建了一个安装程序。在那我已经包括2个单选按钮。每当用户选择任何单选按钮时,它立即开始执行,但我想在选择单选按钮后,只有在用户按下自定义按钮后才开始执行,然后说下一步。

那么如何在我的脚本中添加按钮(比如说Next)以及如何连接我的单选按钮选择呢?

部分代码段如下:

Function mode_selection

    nsDialogs::Create 1018
    Pop $dialog
    ${NSD_CreateLabel} 0 10 75% 20u "Choose your preference....."
    Pop $0 

    ${NSD_CreateRadioButton}  20 60 100% 25u "Execution Mode"
    Pop $hwnd
    ${NSD_AddStyle} $hwnd ${WS_GROUP}
    ${NSD_OnClick} $hwnd exec_mode

    ${NSD_CreateRadioButton} 20 90 100% 25u "Debug Mode "
    Pop $hwnd
    ${NSD_OnClick} $hwnd debug_mode


nsDialogs::Show

FunctionEnd

Function exec_mode

    ;some code

FunctionEnd
Function debug_mode

     ;some code

FunctionEnd

1 个答案:

答案 0 :(得分:0)

!include nsDialogs.nsh
!include LogicLib.nsh
Page custom mode_selection

var hwndExecModeRadio

Function mode_selection
nsDialogs::Create 1018 
Pop $0
${NSD_CreateLabel} 0 10 75% 20u "Choose your preference....."
Pop $0 

${NSD_CreateRadioButton} 20 60 80% 25u "Execution Mode"
Pop $hwndExecModeRadio
${NSD_AddStyle} $hwndExecModeRadio ${WS_GROUP}

${NSD_CreateRadioButton} 20 90 80% 25u "Debug Mode "
Pop $0

${NSD_CreateButton} 20 150 -40 14u "Do it"
Pop $0
${NSD_OnClick} $0 perform_mode

nsDialogs::Show
FunctionEnd

Function perform_mode
    ${NSD_GetState} $hwndExecModeRadio $0
    ${If} $0 = ${BST_CHECKED}
        Call exec_mode
    ${Else}
        Call debug_mode
    ${EndIF}
FunctionEnd

Function exec_mode
    MessageBox mb_ok "exec_mode"
FunctionEnd 

Function debug_mode
    MessageBox mb_ok "debug_mode"
FunctionEnd