When there is any version older than XE6 is detected, the local variable "FileName" will be filled with the exe path of that version by line 372:
Found := RegReadStr(DelphiRegPaths[DelphiComp], 'App', FileName, HKEY_CURRENT_USER) and FileExists(FileName);
When XE6 is not installed, line 376:
FileName:=StringReplace(FileName, 'bds.exe', 'appmethod.exe', [rfReplaceAll]);
will be triggered. The local variable "Filename" will be used without proper initialization and happened to contains the exe path of last detected version. Results in XE6 is mis-detected.
When there is any version older than XE6 is detected, the local variable "FileName" will be filled with the exe path of that version by line 372:
Found := RegReadStr(DelphiRegPaths[DelphiComp], 'App', FileName, HKEY_CURRENT_USER) and FileExists(FileName);
When XE6 is not installed, line 376:
FileName:=StringReplace(FileName, 'bds.exe', 'appmethod.exe', [rfReplaceAll]);
will be triggered. The local variable "Filename" will be used without proper initialization and happened to contains the exe path of last detected version. Results in XE6 is mis-detected.