!include MUI2.nsh

Name `SpaceRequired`
OutFile `SpaceRequired.exe`
InstallDir $EXEDIR

!insertmacro MUI_PAGE_WELCOME
!define MUI_COMPONENTSPAGE_NODESC
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE ComponentsPage_Leave
!insertmacro MUI_PAGE_COMPONENTS
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE DirectoryPage_Leave
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_LANGUAGE English

Section `Installs nothing`
  SetOutPath $PLUGINSDIR
  File `${__FILE__}`
  Quit
SectionEnd

!macro _GetSpaceRequired OutRequired OutAvailable
  Call GetSpaceRequired
  Pop ${OutRequired}
  Pop ${OutAvailable}
!macroend
!define GetSpaceRequired `!insertmacro _GetSpaceRequired`

Function GetSpaceRequired
Push $R0
Push $R1
Push $R2

  FindWindow $R1 `#32770` `` $HWNDPARENT
  GetDlgItem $R0 $R1 1023
  System::Call user32::GetWindowText(iR0,t.R0,i${NSIS_MAX_STRLEN})
  StrLen $R2 `$(^SpaceRequired)`
  StrCpy $R0 $R0 `` $R2

  GetDlgItem $R1 $R1 1024
  ${If} ${Cmd} `IsWindow $R1`
    System::Call user32::GetWindowText(iR1,t.R1,i${NSIS_MAX_STRLEN})
    StrLen $R2 `$(^SpaceAvailable)`
    StrCpy $R1 $R1 `` $R2
  ${Else}
    StrCpy $R1 ``
  ${EndIf}

Pop $R2
Exch $R1
Exch
Exch $R0
FunctionEnd

Function ComponentsPage_Leave
  ${GetSpaceRequired} $R0 $R1
  MessageBox MB_OK|MB_ICONINFORMATION `$(^SpaceRequired)$R0`
FunctionEnd

Function DirectoryPage_Leave
  ${GetSpaceRequired} $R0 $R1
  MessageBox MB_OK|MB_ICONINFORMATION `$(^SpaceRequired)$R0$\r$\n$(^SpaceAvailable)$R1`
FunctionEnd