Hola,
Prueba a usar rutas absolutas en lugar de rutas relativas. Más o menos algo como esto:
Código Delphi
[-]
var
exePath : string;
rootDir : string;
begin
rootDir := ExtractFilePath( ParamStr( 0 ) );
exePath := rootDir + 'Instaladores\Enemy-Territory.exe';
if FileExists( exePath ) then
begin
ShellExecute
(
Self.Handle,
'open',
PChar( exePath ),
nil,
nil,
SW_SHOWNORMAL
);
end
else
begin
raise EInOutError.CreateFmt
(
'El ejecutable "%s" no está donde debe',
[ exePath ]
);
end;
end;