2011-05-03 72 views
0

在GetButtonID函數中,如果指定了多個按鈕事件處理程序,則會在顯示目錄MUI頁面對話框之前自動退出。 但是,當只給出一個按鈕事件處理程序時,則顯示目錄頁面沒有任何問題。按鈕插件不適用於MUI中的多個按鈕NSIS安裝程序

!include "MUI2.nsh" 

!define IDC_BUTTON_CDRIVEPATH 1200 
!define IDC_BUTTON_DDRIVEPATH 1201 

;--------------------------------------- 
;Name and file 
Name Remove_ERROR 
OutFile solve_error.exe 
; ------------------------------- 

!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\setup.ico" ; 
!define MUI_HEADERIMAGE 
!define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\icon.bmp" 
!define MUI_WELCOMEFINISHPAGE_BITMAP"${NSISDIR}\Contrib\Graphics\Wizard\img.bmp" 
!define MUI_ABORTWARNING 

!insertmacro MUI_PAGE_WELCOME 
!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\licensefile.txt" 

!define MUI_PAGE_CUSTOMFUNCTION_SHOW GetButtonID ** <---in this function only one button event handler works, if two handlers are given , then installer crashes** 

!insertmacro MUI_PAGE_DIRECTORY 

!insertmacro MUI_PAGE_COMPONENTS 
!insertmacro MUI_PAGE_INSTFILES 
!insertmacro MUI_PAGE_FINISH 

Function **CDRIVEPATH** 
    MessageBox MB_OK|MB_ICONEXCLAMATION "The Software will be installed in : C Drive" 
FunctionEnd 

Function **DDRIVEPATH** 
    MessageBox MB_OK|MB_ICONEXCLAMATION "The Software will be installed in : D Drive" 
FunctionEnd 
;-------------------------------- 

Function **GetButtonID** 

GetFunctionAddress $R2 CDRIVEPATH 
ButtonEvent::AddEventHandler ${IDC_BUTTON_CDRIVEPATH} $R2 

;when this second button handler is given ,then installer autoexits as soon as it has to show the Directory MUI Page dialog: 

GetFunctionAddress $R3 DDRIVEPATH 
ButtonEvent::AddEventHandler ${IDC_BUTTON_DDRIVEPATH} $R3 

FunctionEnd 

;------------------------------------------------------------------ 
Section "INSTALL MAIN SOFTWARE" 

SetOutPath $INSTDIR 

File /r "myfolder\*.*" 

SectionEnd 
;------------------------------------------------------------------ 

enter image description here

回答

0

此問題是由錯誤的ButtonEvent.dll插件引起的。獲取這個插件的新版本來解決它。

相關問題