无法在NSIS卸载程序中隐藏后退按钮

问题描述

我在NSIS中创建了一个卸载程序。
它有3页(一个自定义页(确认),宏MUI_UNPAGE_INSTFILES和另一个自定义页(完成))。

我的问题是我无法在“ INSTFILES”页面中隐藏“返回”按钮。 我已经尝试过各种方法来隐藏它,但是它只是停留在禁用状态。

这是我用来隐藏“后退”按钮的代码

GetDlgitem $1 $HWNDPARENT 3
ShowWindow $1 ${SW_HIDE}

与ID 1和2一起使用时,上面的代码可用于“下一步”和“取消”按钮。

我在不同的地方尝试了上面的代码

代码

!define MUI_PAGE_CUSTOMFUNCTION_LEAVE un.InstShow
UninstPage custom un.UninstConfirm_Show
!define MUI_PAGE_CUSTOMFUNCTION_PRE un.InstShow
!define MUI_PAGE_CUSTOMFUNCTION_SHOW un.InstShow
!insertmacro MUI_UNPAGE_INSTFILES
UninstPage custom un.UninstFinish_Show

un.InstShow具有隐藏按钮的逻辑。

任何帮助将不胜感激。我花了将近4-5个小时没有运气。
现在是这样的屏幕(请注意,我在图像中隐藏了“下一步”和“取消”按钮,以说明隐藏这些按钮对我来说很好用):

enter image description here

解决方法

GetDlgItem $1 $HWNDPARENT 3
ShowWindow $1 ${SW_HIDE}

此代码是完全正确的,并且工作正常(经过测试)。

我认为还有一些其他代码可以再次显示该按钮。

例如在您在X页的“离开”功能中隐藏按钮的情况下,下一页可能会再次显示该按钮。这在常规用户界面中经常发生。

解决方案是检查所有自定义页面以及标准页面上有关此按钮的任何操作。

,

除了第一页以外,所有页面都设置了NSIS中的内部页面标志PF_BACK_SHOW,您必须设法解决它。

如果InstFiles页面是最后一页,或者如果您不希望之后的页面上的后退按钮,则可以移动按钮:

Section -un.Main
GetDlgItem $1 $hwndParent 3
System::Call USER32::MoveWindow(pr1,i-9,i1,i1)
SectionEnd

如果您只想在InstFiles页面上隐藏它,而不在之后的页面上隐藏,则必须use a timer并在计时器回调中调用ShowWindow