@@ -40,6 +40,12 @@ internal AbstractPluginEnvironment(List<PluginMetadata> pluginMetadataList, Plug
4040 PluginSettings = pluginSettings ;
4141 }
4242
43+ /// <summary>
44+ /// Resolves the configured runtime executable path to an absolute path.
45+ /// Supports both absolute paths and relative paths (relative to ProgramDirectory).
46+ /// </summary>
47+ private string ResolvedPluginsSettingsFilePath => FilesFolders . ResolveAbsolutePath ( PluginsSettingsFilePath ) ;
48+
4349 internal IEnumerable < PluginPair > Setup ( )
4450 {
4551 // If no plugin is using the language, return empty list
@@ -48,13 +54,16 @@ internal IEnumerable<PluginPair> Setup()
4854 return new List < PluginPair > ( ) ;
4955 }
5056
51- if ( ! string . IsNullOrEmpty ( PluginsSettingsFilePath ) && FilesFolders . FileExists ( PluginsSettingsFilePath ) )
57+ var resolvedPath = ResolvedPluginsSettingsFilePath ;
58+ if ( ! string . IsNullOrEmpty ( resolvedPath ) && FilesFolders . FileExists ( resolvedPath ) )
5259 {
5360 // Ensure latest only if user is using Flow's environment setup.
54- if ( PluginsSettingsFilePath . StartsWith ( EnvPath , StringComparison . OrdinalIgnoreCase ) )
55- EnsureLatestInstalled ( ExecutablePath , PluginsSettingsFilePath , EnvPath ) ;
61+ if ( resolvedPath . StartsWith ( EnvPath , StringComparison . OrdinalIgnoreCase ) )
62+ EnsureLatestInstalled ( ExecutablePath , resolvedPath , EnvPath ) ;
5663
57- return SetPathForPluginPairs ( PluginsSettingsFilePath , Language ) ;
64+ // Ensure the path is updated in settings in case environment was updated
65+ resolvedPath = ResolvedPluginsSettingsFilePath ;
66+ return SetPathForPluginPairs ( resolvedPath , Language ) ;
5867 }
5968
6069 var noRuntimeMessage = Localize . runtimePluginInstalledChooseRuntimePrompt ( Language , EnvName , Environment . NewLine ) ;
@@ -103,9 +112,11 @@ internal IEnumerable<PluginPair> Setup()
103112 InstallEnvironment ( ) ;
104113 }
105114
106- if ( FilesFolders . FileExists ( PluginsSettingsFilePath ) )
115+ // Ensure the path is updated when user has chosen to install or select environment executable
116+ resolvedPath = ResolvedPluginsSettingsFilePath ;
117+ if ( FilesFolders . FileExists ( resolvedPath ) )
107118 {
108- return SetPathForPluginPairs ( PluginsSettingsFilePath , Language ) ;
119+ return SetPathForPluginPairs ( resolvedPath , Language ) ;
109120 }
110121 else
111122 {
0 commit comments