diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/ExecutablesCollector.cs b/WelsonJS.Toolkit/WelsonJS.Launcher/ExecutablesCollector.cs index b4e44ef..706c587 100644 --- a/WelsonJS.Toolkit/WelsonJS.Launcher/ExecutablesCollector.cs +++ b/WelsonJS.Toolkit/WelsonJS.Launcher/ExecutablesCollector.cs @@ -16,6 +16,7 @@ namespace WelsonJS.Launcher { executables.AddRange(GetInstalledSoftwareExecutables()); executables.AddRange(GetExecutablesFromPath()); + executables.AddRange(GetExecutablesFromNetFx()); } public List GetExecutables() @@ -96,11 +97,11 @@ namespace WelsonJS.Launcher private List GetExecutablesFromPath() { List executables = new List(); - string pathEnv = Environment.GetEnvironmentVariable("PATH"); + string[] paths = Environment.GetEnvironmentVariable("PATH")?.Split(';'); - if (!string.IsNullOrEmpty(pathEnv)) + if (paths != null) { - foreach (string path in pathEnv.Split(';')) + foreach (string path in paths) { if (Directory.Exists(path)) { @@ -118,5 +119,38 @@ namespace WelsonJS.Launcher return executables; } + + private List GetExecutablesFromNetFx() + { + List executables = new List(); + + string windir = Environment.GetEnvironmentVariable("WINDIR"); + + if (!string.IsNullOrEmpty(windir)) + { + string[] paths = new string[] + { + Path.Combine(windir, "Microsoft.NET", "Framework"), + Path.Combine(windir, "Microsoft.NET", "Framework64") + }; + + foreach (string path in paths) + { + if (Directory.Exists(path)) + { + try + { + executables.AddRange(Directory.GetFiles(path, "*.exe", SearchOption.AllDirectories)); + } + catch (Exception ex) + { + Debug.WriteLine($"Error enumerating executables in '{path}': {ex}"); + } + } + } + } + + return executables; + } } }