Fix windows keep adding tools path to env:PATH (#8248)

Environment.GetEnvironmentVariable(PathName) means

Environment.GetEnvironmentVariable(PathName,
EnvironmentVariableTarget.Process)

However, I have added to .User. So the detection of path existence
failed. And it ends up adding the path again and again
This commit is contained in:
William Lee 2017-12-15 15:04:59 -08:00 committed by GitHub
parent a86e59aa5d
commit d833eaa657
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 8 deletions

View file

@ -33,8 +33,7 @@ namespace Microsoft.DotNet.ShellShim
{ {
environmentPath = new WindowsEnvironmentPath( environmentPath = new WindowsEnvironmentPath(
cliFolderPathCalculator.ExecutablePackagesPath, cliFolderPathCalculator.ExecutablePackagesPath,
Reporter.Output, Reporter.Output);
environmentProvider);
} }
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && hasSuperUserAccess) else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && hasSuperUserAccess)
{ {

View file

@ -11,18 +11,14 @@ namespace Microsoft.DotNet.ShellShim
internal class WindowsEnvironmentPath : IEnvironmentPath internal class WindowsEnvironmentPath : IEnvironmentPath
{ {
private readonly IReporter _reporter; private readonly IReporter _reporter;
private readonly IEnvironmentProvider _environmentProvider;
private const string PathName = "PATH"; private const string PathName = "PATH";
private readonly string _packageExecutablePath; private readonly string _packageExecutablePath;
public WindowsEnvironmentPath( public WindowsEnvironmentPath(
string packageExecutablePath, IReporter reporter, string packageExecutablePath, IReporter reporter)
IEnvironmentProvider environmentProvider)
{ {
_packageExecutablePath _packageExecutablePath
= packageExecutablePath ?? throw new ArgumentNullException(nameof(packageExecutablePath)); = packageExecutablePath ?? throw new ArgumentNullException(nameof(packageExecutablePath));
_environmentProvider
= environmentProvider ?? throw new ArgumentNullException(nameof(environmentProvider));
_reporter _reporter
= reporter ?? throw new ArgumentNullException(nameof(reporter)); = reporter ?? throw new ArgumentNullException(nameof(reporter));
} }
@ -44,7 +40,9 @@ namespace Microsoft.DotNet.ShellShim
private bool PackageExecutablePathExists() private bool PackageExecutablePathExists()
{ {
return _environmentProvider.GetEnvironmentVariable(PathName).Split(';').Contains(_packageExecutablePath); return Environment.GetEnvironmentVariable(PathName, EnvironmentVariableTarget.User).Split(';').Contains(_packageExecutablePath)
|| Environment.GetEnvironmentVariable(PathName, EnvironmentVariableTarget.Machine).Split(';').Contains(_packageExecutablePath)
|| Environment.GetEnvironmentVariable(PathName, EnvironmentVariableTarget.Process).Split(';').Contains(_packageExecutablePath);
} }
public void PrintAddPathInstructionIfPathDoesNotExist() public void PrintAddPathInstructionIfPathDoesNotExist()