2013-10-28 87 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