diff --git a/lazproj/coedit.lpi b/lazproj/coedit.lpi index 4e37e6a5..b074b3c4 100644 --- a/lazproj/coedit.lpi +++ b/lazproj/coedit.lpi @@ -112,7 +112,7 @@ - + @@ -148,7 +148,6 @@ - @@ -170,7 +169,6 @@ - @@ -190,12 +188,10 @@ - - @@ -241,7 +237,6 @@ - @@ -249,7 +244,6 @@ - @@ -262,6 +256,7 @@ + @@ -269,7 +264,6 @@ - @@ -284,12 +278,10 @@ - - @@ -326,7 +318,6 @@ - @@ -346,6 +337,7 @@ + diff --git a/src/ce_common.pas b/src/ce_common.pas index 60e31f46..965d8118 100644 --- a/src/ce_common.pas +++ b/src/ce_common.pas @@ -175,6 +175,11 @@ type *) function exeInSysPath(anExeName: string): boolean; + (** + * Returns the full to anExeName. Works if exeInSysPath(). + *) + function exeFullName(anExeName: string): string; + (** * Clears then fills aList with aProcess output stream. *) @@ -687,6 +692,7 @@ end; function exeInSysPath(anExeName: string): boolean; var ext: string; + env: string; begin ext := extractFileExt(anExeName); if ext <> exeExt then @@ -694,7 +700,31 @@ begin if FileExists(anExeName) then exit(true) else - exit(ExeSearch(anExeName, '') <> ''); + begin + env := sysutils.GetEnvironmentVariable('PATH'); + if Application <> nil then + env += PathSeparator + ExtractFileDir(ExtractFilePath(application.ExeName)); + exit(ExeSearch(anExeName, env) <> ''); + end; +end; + +function exeFullName(anExeName: string): string; +var + ext: string; + env: string; +begin + ext := extractFileExt(anExeName); + if ext <> exeExt then + anExeName += exeExt; + if FileExists(anExeName) then + exit(anExeName) + else + begin + env := sysutils.GetEnvironmentVariable('PATH'); + if Application <> nil then + env += PathSeparator + ExtractFileDir(ExtractFilePath(application.ExeName)); + exit(ExeSearch(anExeName, env)); + end; end; procedure processOutputToStrings(aProcess: TProcess; var aList: TStringList); diff --git a/src/ce_dcd.pas b/src/ce_dcd.pas index ea823c0b..1e2f1f23 100644 --- a/src/ce_dcd.pas +++ b/src/ce_dcd.pas @@ -74,14 +74,14 @@ begin exit; // fClient := TProcess.Create(self); - fClient.Executable := clientName; + fClient.Executable := exeFullName(clientName); fClient.Options := [poUsePipes{$IFDEF WINDOWS}, poNewConsole{$ENDIF}]; fClient.ShowWindow := swoHIDE; // fServerWasRunning := AppIsRunning((serverName)); if not fServerWasRunning then begin fServer := TProcess.Create(self); - fServer.Executable := serverName; + fServer.Executable := exeFullName(serverName); fServer.Options := [{$IFDEF WINDOWS} poNewConsole{$ENDIF}]; {$IFNDEF DEBUG} fServer.ShowWindow := swoHIDE; diff --git a/src/ce_symlist.pas b/src/ce_symlist.pas index 2dddb9f0..c9a187ba 100644 --- a/src/ce_symlist.pas +++ b/src/ce_symlist.pas @@ -670,7 +670,7 @@ begin fToolProc := TCheckedAsyncProcess.Create(nil); fToolProc.ShowWindow := swoHIDE; fToolProc.Options := [poUsePipes]; - fToolProc.Executable := toolExeName; + fToolProc.Executable := exeFullName(toolExeName); fToolProc.OnTerminate := @toolTerminated; fToolProc.OnReadData := @toolOutputData; fToolProc.CurrentDirectory := ExtractFileDir(Application.ExeName); diff --git a/src/ce_todolist.pas b/src/ce_todolist.pas index 4e95bb71..dffe34b9 100644 --- a/src/ce_todolist.pas +++ b/src/ce_todolist.pas @@ -415,7 +415,7 @@ begin killToolProcess; // process parameter fToolProc := TCheckedAsyncProcess.Create(nil); - fToolProc.Executable := ToolExeName; + fToolProc.Executable := exeFullName(ToolExeName); fToolProc.Options := [poUsePipes]; fToolProc.ShowWindow := swoHIDE; fToolProc.CurrentDirectory := ExtractFileDir(Application.ExeName);