2017-10-14 187 views
0

我知道这已被问及之前,发现他们说不,但最近发布的帖子是从2014年,所以我想我会检查是否有任何新功能我我错过了。NSIS消息框自定义按钮

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

有几个消息框我需要有这种能力。

如果该选项是写一些自定义插件,有人可以为我做这件事会在我的头上?

回答

1

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

最好的选择将是一个自定义插件,但我怀疑有人愿意为你写一个只是因为你问得很好。也许你可以在NSIS论坛上询问是否有人愿意收取少量费用。

作为一种变通方法,您可以使用DlgHost plug-in内置的页面创建一个嵌套的对话与自己的自定义设计:

!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