From 10c2c5c59b42f2d0df5ec7d15c92dc3206e49d84 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Wed, 15 Jul 2026 10:44:13 +0200 Subject: [PATCH] Fix GDK redistribute deploy when using multiple MSVCs --- .../Flax.Build/Platforms/GDK/GDKToolchain.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Source/Tools/Flax.Build/Platforms/GDK/GDKToolchain.cs b/Source/Tools/Flax.Build/Platforms/GDK/GDKToolchain.cs index 341dee8d6..71f1ee58f 100644 --- a/Source/Tools/Flax.Build/Platforms/GDK/GDKToolchain.cs +++ b/Source/Tools/Flax.Build/Platforms/GDK/GDKToolchain.cs @@ -74,13 +74,21 @@ namespace Flax.Build.Platforms throw new Exception("Don't use debug CRT on GDK."); var name = Path.GetFileName(toolsetPath); var redistToolsPath = Path.Combine(toolsPath, "..", "..", "..", "..", "..", "..", "Redist/MSVC/"); + redistToolsPath = Utilities.RemovePathRelativeParts(redistToolsPath); var paths = Directory.GetDirectories(redistToolsPath, name.Substring(0, 2) + "*"); if (paths.Length == 0) throw new Exception($"Failed to find MSVC redistribute binaries for toolset '{Toolset}' inside folder '{toolsPath}'"); - int crtToolset; - for (crtToolset = (int)WindowsPlatformToolset.v145; crtToolset >= (int)Toolset; crtToolset--) + int crtToolset = 0; + string redistToolsPathBase = string.Empty; + for (int i = 0; i < paths.Length; i++) { - redistToolsPath = Path.Combine(paths[0], "x64", "Microsoft.VC" + (int)crtToolset + ".CRT"); + redistToolsPathBase = paths[i]; + for (crtToolset = (int)WindowsPlatformToolset.v145; crtToolset >= (int)Toolset; crtToolset--) + { + redistToolsPath = Path.Combine(redistToolsPathBase, "x64", "Microsoft.VC" + (int)crtToolset + ".CRT"); + if (Directory.Exists(redistToolsPath)) + break; + } if (Directory.Exists(redistToolsPath)) break; } @@ -96,7 +104,7 @@ namespace Flax.Build.Platforms options.DependencyFiles.Add(Path.Combine(redistToolsPath, "vcruntime140_1.dll")); if (OpenMP) { - redistToolsPath = Path.Combine(paths[0], "x64", "Microsoft.VC" + crtToolset + ".OpenMP"); + redistToolsPath = Path.Combine(redistToolsPathBase, "x64", "Microsoft.VC" + crtToolset + ".OpenMP"); redistToolsPath = Utilities.RemovePathRelativeParts(redistToolsPath); options.DependencyFiles.Add(Path.Combine(redistToolsPath, "vcomp140.dll")); }