{
process.StartInfo.FileName = executablePath;
process.StartInfo.Arguments = CreateArgumentList(arguments);
- SetupEnvironment(process.StartInfo.EnvironmentVariables, environmentVariables);
+ SetupEnvironment(process.StartInfo.EnvironmentVariables, executablePath, environmentVariables);
process.StartInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory;
process.Start();
SetProcessPriority(process, priorityClass);
return false;
}
- private static void SetupEnvironment(StringDictionary dictionary, IReadOnlyDictionary<string, string> environmentVariables)
+ private static void SetupEnvironment(StringDictionary dictionary, string executablePath, IReadOnlyDictionary<string, string> environmentVariables)
{
+ string baseDirectory = Path.GetDirectoryName(executablePath);
+ dictionary["PATH"] = string.IsNullOrEmpty(baseDirectory) ? Environment.SystemDirectory : baseDirectory;
if (!ReferenceEquals(environmentVariables, null))
{
foreach (KeyValuePair<string, string> entry in environmentVariables)
{
- dictionary.Add(entry.Key, entry.Value);
+ dictionary[entry.Key] = entry.Value;
}
}
}