title: Set value of InstallDir in a function, or set auto populate value somehow?
body: <p>I'm creating an installer using NSIS.  This installer actually installs two programs in two different directories in the same installer.  I am doing this using the modern user interface (MUI) pages and simply calling MUI_PAGE_DIRECTORY twice specifying different starting parameteres, and capturing the directory in the LEAVE macro.  What I'm wondering is, can I somehow call InstallDir in a function, or set the auto directory populate value in a function?  Or possibly even call a function after the browse button has been returned from?</p>
  
  <p>The reason I want to do this is so when the user clicks the browse button in either of the two directory pages, after they select a directory, the name of the finnal directory specifed in InstallDir will be appended.  </p>
  
  <p>For example: 
  InstallDir value for program 1: c:\client
  InstallDir value for program 2: c:\program files\server</p>
  
  <p>user clicks browse on program 1 and chooses c:\temp the resulting path is c:\temp\client</p>
  
  <p>user clicks browse on program 2 and chooses c:\whatever the resulting path is c:\whatever\server</p>
  
  <p>For reference here are the code snipits of what I have that works, but does not deal with the auto append browse button behaviour:</p>
  
  <pre><code>!define MUI_PAGE_CUSTOMFUNCTION_LEAVE ClientDirectoryLeave
  !insertmacro MUI_PAGE_DIRECTORY
  
  !define MUI_PAGE_CUSTOMFUNCTION_LEAVE ServerDirectoryLeave
  !insertmacro MUI_PAGE_DIRECTORY
  
  ; Setup the page display for the client install page
  Function ShowPageClient
    !insertmacro MUI_HEADER_TEXT "Client" "Client"
    !insertmacro MUI_INNERDIALOG_TEXT 1006 "Client"
  
    ; setup intal directory
    Push $0
    StrCpy $0 $PROGRAMFILES 2 #
    ; CLIENT_FOLDER_NAME is defined as a folder, but this would basicaly
    ; result in C:\Client as the first 2 characters of $PROGRAMFILES
    ; is the hard drive with program files installed on it
    StrCpy $INSTDIR "$0\${CLIENT_FOLDER_NAME}"
    Pop $0
  
      ; set the inital value of the directory text box  
      !insertmacro MUI_INNERDIALOG_TEXT 1019 $INSTDIR
  
      ; find and disable the directory selection box 
      ; We do not want users to type in this box
      FindWindow $R0 "#32770" "" $HWNDPARENT
      GetDlgItem $R1 $R0 1019 ;Text Box
      EnableWindow $R1 0
  FunctionEnd
  
  
  ; Setup the page display for the server install location page
  Function ShowPageServer
    !insertmacro MUI_HEADER_TEXT "Server" "Server"
    !insertmacro MUI_INNERDIALOG_TEXT 1006 "Server"
  
    ; setup intal directory
    ; SERVER_FOLDER_NAME is defined as a folder, but this would basicaly
    ; result in C:\Program Files\Server 
    StrCpy $INSTDIR "$PROGRAMFILES\${SERVER_FOLDER_NAME}"
  
    ; set the inital value of the directory text box  
    !insertmacro MUI_INNERDIALOG_TEXT 1019 $INSTDIR
  
    ; find and disable the directory selection box 
    ; We do not want users to type in this box
    FindWindow $R0 "#32770" "" $HWNDPARENT
    GetDlgItem $R1 $R0 1019 ;Text Box
    EnableWindow $R1 0
  
  FunctionEnd
  </code></pre>
  
  <p>Note: I can make the browse button work for one of the directory pages, but then when I'm on the second page, the auto populate actual auto populates incorrectly</p>