NSIS 消息框自定义按钮



我知道之前有人问过这个问题,并发现了几个他们说不的帖子,但我看到的最新帖子是 2014 年的,所以我想我会检查一下是否有任何新功能我缺少。

有没有办法将消息框按钮更改为自定义文本? 所以我可以使用UninstallReinstallCancel而不是YesNoCancel.

我需要具备此功能的几个消息框。

如果选项是编写一些自定义插件,有人可以为我执行此操作吗?

NSIS只使用MessageBox Windows功能,不允许您设置按钮文本。

最好的选择是自定义插件,但我怀疑有人愿意仅仅因为你问得很好就为你写一个。您可以在NSIS论坛上询问是否有人愿意支付少量费用。

作为解决方法,您可以在内置页面上使用 DlgHost 插件来创建具有您自己的自定义设计的嵌套对话框:

!include nsDialogs.nsh
!include DlgHost.nsh
Page InstFiles
Function CloseDlgHostDialog
Pop $0
DlgHost::Close
FunctionEnd
Function DoSomethingElse
Pop $0
MessageBox mb_ok "Hello"
FunctionEnd
Function MyDlgBoxCallback
${Select} $0
${Case} ${DLGHOST_DLGBOXMSG_INITDLG}
    nsDialogs::Create 1018
    Pop $1
    DlgHost::SetClient $1
    ${NSD_CreateLabel} 25% 20% 45% 15u "Hello from nsDialogs..."
    Pop $1
    ${NSD_CreateButton} 10u 60% 50u 15u "&Close"
    Pop $1
    ${NSD_OnClick} $1 CloseDlgHostDialog
    ${NSD_CreateButton} 70u 60% 80u 15u "&Do something else"
    Pop $1
    ${NSD_OnClick} $1 DoSomethingElse
${Case} ${DLGHOST_DLGBOXMSG_SHOWDLG}
    nsDialogs::Show
${EndSelect}
FunctionEnd
Function ShowNSDChildDlg
GetFunctionAddress $0 MyDlgBoxCallback
DlgHost::DlgBox "* $0 p 200u 120u Test Dialog"
FunctionEnd
Section
Call ShowNSDChildDlg
SectionEnd

最新更新