2013-10-28 22 views
1

对于我的安装,我添加了新的自定义页面。它在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宏)中完成?

所以我需要禁用返回按钮在完成页面。请帮助

回答

3

在makensis.exe(CEXEBuild :: ProcessPages)中有一些代码在页面上设置一个标志:p-> flags | = PF_BACK_ENABLE; UI.c中的代码检查这个标志。要覆盖此使用页面显示回调函数:

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 
+0

但是,此按钮启用和禁用?在我的情况下,添加自定义页面后,按钮在完成页面中启用。另见http://forums.winamp.com/showthread.php?t=373367 –

+1

我已经告诉过你,NSIS \ trunk \ Source \ exehead \ UI.c – Anders