2011-11-15 3 views
0

Dans mon programme d'installation, le bouton "Afficher les détails" est actuellement visible et vous pouvez cliquer dessus pour accéder aux détails d'installation.NSIS Masquer les détails après Afficher les détails

Y at-il un moyen d'obtenir un bouton "Masquer les détails" à ce stade pour pouvoir revenir à l'endroit où les détails sont cachés?

Répondre

1

Il n'y a pas de soutien officiel à cet effet (Trop d'espace perdu par le bouton probablement)

Si vous voulez vraiment cette fonctionnalité et ne vous dérange pas hacks vous pouvez utiliser ce code:

Outfile test.exe 
RequestExecutionLevel user 
!addplugindir ".\" ;http://nsis.sourceforge.net/ButtonEvent_plug-in 

!include WinMessages.nsh 
!include LogicLib.nsh 

Page InstFiles "" PageInstShow 

!define GWLP_ID -12 
!define IDC_DETAILS 0x3F8 
!define IDC_SHOWDETAILS 0x403 
!define IDC_MYTOGGLE 0x1000 

Function MyToggleClickHandler 
FindWindow $9 "#32770" "" $HWNDPARENT 
GetDlgItem $8 $9 ${IDC_MYTOGGLE} 
GetDlgItem $7 $9 ${IDC_DETAILS} 
System::Call 'user32::IsWindowVisible(ir7)i.r0' 
${If} $0 = 0 
    SendMessage $9 ${WM_COMMAND} ${IDC_SHOWDETAILS} 0 
    SendMessage $8 ${WM_SETTEXT} 0 "STR:Hide &details" 
    ShowWindow $8 1 
${Else} 
    SendMessage $8 ${WM_SETTEXT} 0 "STR:$(^ShowDetailsBtn)" 
    ShowWindow $7 0 
${EndIf} 
FunctionEnd 

Function PageInstShow 
FindWindow $9 "#32770" "" $HWNDPARENT 
GetDlgItem $8 $9 ${IDC_SHOWDETAILS} 
System::Call 'user32::SetWindowLong(ir8,i ${GWLP_ID},i ${IDC_MYTOGGLE})' 
GetFunctionAddress $1 MyToggleClickHandler 
ButtonEvent::AddEventHandler ${IDC_MYTOGGLE} $1 
System::Call '*(i,i,i,i)i.r1' 
System::Call 'user32::GetWindowRect(ir8,ir1)' 
System::Call 'user32::MapWindowPoints(i0,ir9,ir1,i2)' 
System::Call '*$1(i,i,i,i.r6)' 
GetDlgItem $7 $9 ${IDC_DETAILS} 
System::Call 'user32::GetWindowRect(ir7,ir1)' 
System::Call 'user32::MapWindowPoints(i0,ir9,ir1,i2)' 
System::Call '*$1(i.r2,i.r3,i.r4,i.r5)' 
System::Free $1 
IntOp $3 $6 + 4 ; list top = button bottom + padding 
IntOp $5 $5 - $3 
System::Call 'user32::SetWindowPos(ir7,i,ir2,ir3,ir4,ir5,i 0)' 
FunctionEnd 

Section 
SectionEnd 
1

de NSIS Scripting documentation de référence:

4.8.1.34 ShowInstDetails

masquer | show | nevershow

Définit si les détails de l'installation sont affichés ou non. Peut être 'cacher' pour cacher les détails par défaut, permettant à l'utilisateur de les voir, ou 'montrer' pour les montrer par défaut, ou 'nevershow', pour empêcher l'utilisateur de les voir. Notez que les sections peuvent remplacer cela en utilisant SetDetailsView.

Questions connexes