; get names in local language for "Application Data", "Local Settings" and "Application Data" below "Local Settings"
RegRead AD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders, AppData
RegRead LS, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders, Local Settings
RegRead LAD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders, Local AppData

If LAD
  LAD := AD

StringRight ADc, AD, 1
StringRight LSc, LS, 1
StringRight LADc, LAD, 1

If (ADc = "\")
  StringTrimRight AD, AD, 1

If (LSc = "\")
  StringTrimRight LS, LS, 1

If (LADc = "\")
  StringTrimRight LAD, LAD, 1

SplitLast(null, ADn, AD, "\")
SplitLast(null, LSn, LS, "\")
SplitLast(null, LADn, LAD, "\")

EnvSet USERPROFILE, %U3_APP_DATA_PATH%

; %HOMEPATH% is without drive letter and colon, do it also here
EnvGet eSystemDrive, SystemDrive
StringReplace eHOMEPATH, U3_APP_DATA_PATH, %eSystemDrive%
EnvSet HOMEPATH, %U3_APP_DATA_PATH%
EnvSet HOMEDRIVE, % EnvValue("U3_DEVICE_PATH")
EnvSet APPDATA, % U3_APP_DATA_PATH . "\" . ADn

; add custom PATH directories
EnvGet ePATH, PATH
IniGetKeys("envdir", INIFile, "EnvPath")
Loop %envdir0%
{
  CurPath := envdir%A_Index%
  CurPath := EnvParseStr(CurPath)

  ePATH := CurPath . ";" . ePATH
}
EnvSet PATH, %ePATH%

EnvGet APPDATA, APPDATA
IfNotExist %APPDATA%
{
  FileCreateDir %APPDATA%
}
IfNotExist %U3_APP_DATA_PATH%\%LSn%\%LADn%
{
  FileCreateDir %U3_APP_DATA_PATH%\%LSn%\%LADn%
}

SetWorkingDir %U3_HOST_EXEC_PATH%
cmdl := AppExe
Loop %0%
{
  If (A_Index > 1)
  {
    cmdl := cmdl . " " . %A_Index%
  }
}
OnExit ASOnExit
RunWait %cmdl%
OnExit