2011-05-03 3 views
0

Dans la fonction GetButtonID, lorsque plus d'un gestionnaire d'événements de bouton est donné, il s'exécute automatiquement avant d'afficher la boîte de dialogue Directory MUI. Toutefois, lorsqu'un seul gestionnaire d'événement de bouton est donné, la page Répertoire s'affiche sans aucun problème.Le plugin de bouton ne fonctionne pas pour plus d'un bouton dans l'installeur 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

Répondre

0

Ce comportement est dû bug dans le plugin ButtonEvent.dll. Obtenez la nouvelle version de ce plugin pour le résoudre.