使用NSIS进行即时操作的单选按钮?
我已经创建了带有两个修复和删除单选按钮的自定义页面。如果用户选择修复按钮,它将用于修复乐趣。但再次转到旧页面,即修复和删除页面。因此,用户选择了两个选项。我的要求是用户只选择一个选项,并只执行相应的操作。无需提供选择两个选项的选项按钮使用NSIS进行即时操作的单选按钮?,nsis,Nsis,我已经创建了带有两个修复和删除单选按钮的自定义页面。如果用户选择修复按钮,它将用于修复乐趣。但再次转到旧页面,即修复和删除页面。因此,用户选择了两个选项。我的要求是用户只选择一个选项,并只执行相应的操作。无需提供选择两个选项的选项按钮 Function nsDialogpage nsDialogs::Create 1018 Pop $Dialog ${If} $Dialog == error Abort ${EndIf} ${NSD
Function nsDialogpage
nsDialogs::Create 1018
Pop $Dialog
${If} $Dialog == error
Abort
${EndIf}
${NSD_CreateRadioButton} 0 5u 100% 10u "Repair"
Pop $Repair
${NSD_AddStyle} $Repair ${WS_GROUP}
${NSD_OnClick} $Repair Repair
${NSD_CreateRadioButton} 0 25u 100% 56u "Remove"
Pop $Remove
${NSD_OnClick} $Remove Remove
nsDialogs::Show
FunctionEnd
Function Repair
-- Do repair function.
FunctionEnd
Function Remove
ExecWait "$INSTDIR\uninstall.exe"
Quit
FunctionEnd
此外,如果删除乐趣,请删除安装程序并退出安装。
卸载程序已成功完成。但安装程序在该用户单击任何按钮后再次转到主页面,然后仅退出安装步骤
1.用户选择任意一个选项并离开此修复和删除页面
2.如果用户单击“删除”选项,请删除安装程序并立即退出该过程 Quit在页面操作回调中使用时不会立即退出,它会在页面更改时退出。单击单选按钮时执行某些操作不是正常的Windows行为。请尝试按TAB键,因此我也添加了一个正常的示例
!include nsDialogs.nsh
Page Custom RepairOrRemovePageInsane_Create
Page Custom RepairOrRemovePageNormal_Create RepairOrRemovePageNormal_Leave
Page InstFiles
Function Remove
ExecWait '"cmd" /C echo This is a dummy uninstall command...&pause' ; Call real uninstaller here
FunctionEnd
Function Repair
# Do repair....
FunctionEnd
Function RepairOrRemovePageInsane_Create
nsDialogs::Create 1018
Pop $0
${NSD_CreateRadioButton} 0 5u 100% 10u "Repair"
Pop $0
SendMessage $HWNDPARENT ${WM_NEXTDLGCTL} $0 1
${NSD_OnClick} $0 RepairInsane
${NSD_CreateRadioButton} 0 25u 100% 56u "Remove"
Pop $0
${NSD_OnClick} $0 RemoveInsane
GetDlgItem $0 $hwndparent 1 ; Get Next button handle and
EnableWindow $0 0 ; ...disable it because it does not make sense with this insane radio button handling
nsDialogs::Show
FunctionEnd
Function RemoveInsane
Call Remove
SendMessage $HWNDPARENT ${WM_CLOSE} 0 0
FunctionEnd
Function RepairInsane
Call Repair
SendMessage $HWNDPARENT 0x408 1 0 ; Go to next page
FunctionEnd
Function RepairOrRemovePageNormal_Create
nsDialogs::Create 1018
Pop $1
${NSD_CreateRadioButton} 0 5u 100% 10u "Repair"
Pop $1
${NSD_CreateRadioButton} 0 25u 100% 56u "Remove"
Pop $2
SendMessage $1 ${BM_CLICK} 0 0 ; Select one of them by default
nsDialogs::Show
FunctionEnd
Function RepairOrRemovePageNormal_Leave
${NSD_GetState} $1 $0
${If} $0 <> 0
Call Repair
${Else}
Call Remove
Quit
${EndIf}
FunctionEnd
请发布更多的代码…你说离开维修页面1是什么意思?您想让它转到下一页还是退出?如果用户选择“修复”按钮,请转到“修复”功能并继续执行下一页。在我的情况下,如果用户选择“修复”选项,它会一次又一次转到“修复”页。它会转到nsDialogpage页。然后只转到下一页。我认为这不是一个好的安装程序。