向NSIS卸载程序欢迎页面添加复选框

向NSIS卸载程序欢迎页面添加复选框,nsis,uninstallation,nsdialogs,nsis-mui,Nsis,Uninstallation,Nsdialogs,Nsis Mui,我正试图在NSIS卸载程序的欢迎屏幕中添加一个复选框,但我很难找到一个示例。在for MUI2中,我找不到任何可以在欢迎页面上运行的自定义函数 看起来基于文档和我找到的其他内容,finish页面更容易定制 有没有办法定制欢迎页面?如果没有,实现此目的的其他选项是什么?您链接到的MUI(1)文档中有一条说明,说明如何在pre/show回调中自定义欢迎页面。使用MUI2,您可以在show回调中添加控件。有关这些自定义控件的更多信息,请参阅nsDialogs文档 !include MUI2.nsh !

我正试图在NSIS卸载程序的欢迎屏幕中添加一个复选框,但我很难找到一个示例。在for MUI2中,我找不到任何可以在欢迎页面上运行的自定义函数

看起来基于文档和我找到的其他内容,finish页面更容易定制

有没有办法定制欢迎页面?如果没有,实现此目的的其他选项是什么?

您链接到的MUI(1)文档中有一条说明,说明如何在pre/show回调中自定义欢迎页面。使用MUI2,您可以在show回调中添加控件。有关这些自定义控件的更多信息,请参阅nsDialogs文档

!include MUI2.nsh
!insertmacro MUI_PAGE_INSTFILES
!define MUI_PAGE_CUSTOMFUNCTION_SHOW un.ModifyUnWelcome
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE un.LeaveUnWelcome
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE English

Var mycheckbox ; You could just store the HWND in $1 etc if you don't want this extra variable

Function un.ModifyUnWelcome
${NSD_CreateCheckbox} 120u -18u 50% 12u "Do something special"
Pop $mycheckbox
SetCtlColors $mycheckbox "" ${MUI_BGCOLOR}
${NSD_Check} $mycheckbox ; Check it by default
FunctionEnd

Function un.LeaveUnWelcome
${NSD_GetState} $mycheckbox $0
${If} $0 <> 0
    MessageBox mb_ok "I'm special"
${EndIf}
FunctionEnd

Section testuninstaller
Initpluginsdir
WriteUninstaller "$pluginsdir\u.exe"
ExecWait '"$pluginsdir\u.exe" _?=$pluginsdir'
Sectionend
!包括MUI2.nsh
!插入宏MUI_页面文件
!定义MUI\u页面\u自定义功能\u显示un.MODIFY不受欢迎
!定义MUI\u页面\u自定义功能\u离开不受欢迎
!插入宏MUI_UNPAGE_欢迎
!插入宏MUI_UNPAGE_INSTFILES
!插入宏梅语言英语
Var-mycheckbox;如果不需要这个额外变量,可以将HWND存储在$1等中
不受欢迎的功能
${NSD_CreateCheckbox}120u-18u 50%12u“做点特别的事”
弹出$mycheckbox
SetCtlColors$mycheckbox”“${MUI_BGCOLOR}
${NSD_Check}$mycheckbox;默认情况下选中它
功能端
不受欢迎的功能
${NSD_GetState}$mycheckbox$0
${If}$0
MessageBox mb_ok“我很特别”
${EndIf}
功能端
部分测试卸载程序
Initpluginsdir
WriteUninstaller“$pluginsdir\u.exe”
ExecWait'$pluginsdir\u.exe“\ux?=$pluginsdir”
分段结束

复选框有一个问题,就是它不能在其所有表面上单击。我已经改变了坐标,使其工作:
120u-20u 50%20u