对于我的安装,我添加了新的自定义页面。它出现在MUI_PAGE_INSTFILES之后。但在此自定义页面不存在之前。问题是,添加此自定义页面后,它已完成页面和完成页面现在已启用后退按钮。在它被禁用之前(我没有做任何编码之前禁用后退按钮)。但添加新的自定义页面完成页面后,启用了后退按钮。
我的页面顺序
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "${Stpath}read me.txt"
!define MUI_PAGE_CUSTOMFUNCTION_PRE wel_pre
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE DirectoryPageLeave
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
Page custom InstallPageCreate checkinstdir
!define MUI_FINISHPAGE_RUN "$INSTDIR\setupx.exe"
!define MUI_FINISHPAGE_RUN_PARAMETERS ""
!define MUI_PAGE_CUSTOMFUNCTION_PRE welfinish
!define MUI_PAGE_CUSTOMFUNCTION_SHOW FinishPageShow
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE myleave
!insertmacro MUI_PAGE_FINISH
行页面自定义InstallPageCreate checkinstdir 之前没有,完成页面没有启用后退按钮。
在完成页面中添加自定义页面后退按钮后,仅在将某个命令行传递给安装程序时显示自定义页面。因此,如果没有为我的setup.exe传递命令行,则在MUI_PAGE_INSTFILES之后,完成页面到来。如果用户单击后退按钮,则再次显示MUI_PAGE_INSTFILES,文件将复制到安装目录。此外,如果出现该自定义页面,则该页面已禁用后退按钮,这是正确的。 此外,我需要知道这个后退按钮禁用的位置?它是在宏MUI_PAGE_INSTFILES(nsis builtin宏)中完成的吗?
所以我需要在完成页面中禁用后退按钮。请帮忙
答案 0 :(得分:3)
makensis.exe(CEXEBuild :: ProcessPages)中有一些代码在页面上设置了一个标志:p-> flags | = PF_BACK_ENABLE;和UI.c中的代码检查此标志。要覆盖它,请使用页面show callback函数:
Function InstallPageCreate
StartMenu::Init /autoadd "Dummy page"
StartMenu::Show
FunctionEnd
!include MUI2.nsh
!insertmacro MUI_PAGE_INSTFILES
Page custom InstallPageCreate
!define MUI_FINISHPAGE_RUN "$INSTDIR\setupx.exe"
!define MUI_FINISHPAGE_RUN_PARAMETERS ""
!define MUI_PAGE_CUSTOMFUNCTION_SHOW FinishPageShow
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE English
Function FinishPageShow
GetDlgItem $0 $HWNDPARENT 3
EnableWindow $0 0
FunctionEnd