2014-07-04 58 views
0

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

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

部分代码片段如下:

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 

回答

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 
+0

雅它的工作。谢谢安德斯 – beginner

+0

如何在完成其工作后禁用此自定义按钮? – beginner

+0

EnableWindow $ hwndExecModeRadio 0 – Anders