2011-05-03 44 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插件引起的。获取这个插件的新版本来解决它。

相关问题