!include "MUI.nsh"

SetCompressor bzip2

; MUI Settings
!define PRODUCT_NAME "program_name"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "company"
!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "Program_name"
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_TEXT "Run Program_name"


; ----------------ADDED FOR 2ND DIRECTORY ----------------------
!define MUI_DIRECTORYPAGE
!define MUI_CUSTOMFUNCTION_COMPONENTS_LEAVE ComponentPost
!define MUI_CUSTOMFUNCTION_DIRECTORY_PRE DirectoryPre
!define MUI_CUSTOMFUNCTION_DIRECTORY_SHOW DirectoryShow
!define MUI_CUSTOMFUNCTION_DIRECTORY_LEAVE DirectoryLeave
; ---------------------------------------------------------------


Page custom RequirementPage

var ICONS_GROUP


; PAGES
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "copyrights/copyright.txt"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_DIRECTORY ;---------------------------------->>> ADDED THIS EXTRA PAGE_DIRECTORY FOR 2ND DIRECTORY
!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES

; Language files
!insertmacro MUI_LANGUAGE "English"

; Reserve files
ReserveFile "RequirementPage.ini"
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS


; --------------------- MUI end ------------------------------------


Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "installer.exe"
InstallDir "$PROGRAMFILES\Program_name"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""



; -------------------------------------------------------------------------

Section "Public Utilities" SecPUBLIC
  SetOutPath "$INSTDIR\bin\x86"
  CreateDirectory "$INSTDIR\bin\x86"
  File "bin\x86\blabla.exe"
  File "bin\x86\blabla2.exe"
SectionEnd


; -------------------------------------------------------------------------

Section "Example schematics" SecExamples
  SetOutPath "$INSTDIR\Examples"
  CreateDirectory "$INSTDIR\Examples"
  ;File /r "examples\"
SectionEnd

; -------------------------------------------------------------------------

Section -AdditionalIcons
  CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
  CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Program_name.lnk" "$INSTDIR\Program_name.lnk" "" "$INSTDIR\Program_name-icon.ico"
  CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd

; -------------------------------------------------------------------------

Section -Post
  Delete "$PROFILE\file.txt"
SectionEnd

; -------------------------------------------------------------------------

; Section descriptions
  !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${SecPUBLIC}     "description 1"
  !insertmacro MUI_DESCRIPTION_TEXT ${SecExamples}   "description 2"
!insertmacro MUI_FUNCTION_DESCRIPTION_END


; -------------------------------------------------------------------------

Section "Uninstall"
  
  Delete "$INSTDIR\Program_name-icon.ico"
  ;....(removed)

  SetAutoClose true
SectionEnd

; -------------------------------------------------------------------------

Function .onInit

  ;Extract InstallOptions INI files
  !insertmacro MUI_INSTALLOPTIONS_EXTRACT "RequirementPage.ini"

FunctionEnd

; -------------------------------------------------------------------------

Function RequirementPage

  !insertmacro MUI_HEADER_TEXT "Requirements" "Please check the following requirements needed to run ${PRODUCT_NAME} ${PRODUCT_VERSION}."
  !insertmacro MUI_INSTALLOPTIONS_DISPLAY "RequirementPage.ini"

FunctionEnd

; -------------------------------------------------------------------------

Function un.onInit
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove Program_name and all of its components?" IDYES +2
  Abort
FunctionEnd

; -------------------------------------------------------------------------

Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "Program_name was successfully removed from your computer."
FunctionEnd

; ----------------------------------------------
; ------------ ADDED CODE  2ND DIR -------------
; ----------------------------------------------

 
Function DirectoryShow
  StrCmp $9 "0" AppDirectoryPage
  StrCmp $9 "1" DataDirectoryPage
 
AppDirectoryPage:
  StrCpy $9 "1"
  !insertmacro MUI_INNERDIALOG_TEXT 1041 "Destination Folder"
  !insertmacro MUI_INNERDIALOG_TEXT 1019 "$PROGRAMFILES\${MUI_PRODUCT}\"
  !insertmacro MUI_INNERDIALOG_TEXT 1006 "Setup will install ${MUI_PRODUCT} in the following folder.$\r$\n$\r$\nTo install in a different folder, click Browse and select another folder. Click Next to continue."
  Goto EndDirectoryShow
 
DataDirectoryPage:
  StrCpy $9 "2"
  !insertmacro MUI_HEADER_TEXT "Choose Data Location" "Choose the folder in which to install ${MUI_PRODUCT} - Data Files."
  !insertmacro MUI_INNERDIALOG_TEXT 1041 "Data Destination Folder"
  !insertmacro MUI_INNERDIALOG_TEXT 1019 "$INSTDIR\Data\"
  !insertmacro MUI_INNERDIALOG_TEXT 1006 "Setup will install ${MUI_PRODUCT} - Data Files in the following folder.$\r$\n$\r$\nTo install in a different folder, click Browse and select another folder. Click Install to start the installation."
EndDirectoryShow: 				
FunctionEnd
 
Function DirectoryLeave
  StrCmp $9 "1" SaveInstallDir
  StrCmp $9 "2" SaveDatabaseDir
  Goto EndDirectoryLeave
 
SaveInstallDir:
  StrCpy $2 $INSTDIR
  Goto EndDirectoryLeave
 
SaveDatabaseDir:
  StrCpy $3 $INSTDIR
 
EndDirectoryLeave:
FunctionEnd




