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

Posted

技术标签:

【中文标题】向 NSIS 卸载程序欢迎页面添加复选框【英文标题】:Adding a checkbox to the NSIS Uninstaller Welcome Page 【发布时间】:2013-10-27 18:37:56 【问题描述】:

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

根据我找到的文档和其他answers,看起来完成页面更容易自定义。

有没有办法自定义欢迎页面?如果没有,实现意图的其他选项是什么?

【问题讨论】:

【参考方案1】:

您链接到的 MUI(1) 文档有一个关于如何在预/显示回调中自定义欢迎页面的说明。使用 MUI2,您可以在显示回调中添加控件。有关这些自定义控件的更多信息,请参阅 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

【讨论】:

该复选框对我来说有问题,它不会在其所有表面上都可以点击。我已更改坐标以使其正常工作:120u -20u 50% 20u

以上是关于向 NSIS 卸载程序欢迎页面添加复选框的主要内容,如果未能解决你的问题,请参考以下文章

想要向新用户显示欢迎页面,并在 Flutter Firebase 中向登录用户显示主屏幕

如何跳过 NSIS“组件”页面?

没有选定组件时禁用组件页面上的“下一步”按钮

如何等待卸载程序完成?

NSIS 卸载程序不删除目录

欢迎页面