Fix Visual Studio kit scanning with non-ASCII installation paths #4678
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This changes visible behavior
Kit scanning now works when Visual Studio is installed in directories containing non-ASCII characters (e.g., Hungarian "Fejlesztői Eszközök", Chinese characters).
The following changes are proposed:
The purpose of this change
The
collectDevBatVarsfunction writes temporary batch files containing Visual Studio paths to query environment variables. When VS is installed in a non-ASCII path:Before: Batch file written as UTF-8 → cmd.exe reads using system code page (e.g., windows-1250) → encoding mismatch → path not found
After: Batch file written using system code page → cmd.exe reads using same code page → paths resolve correctly
The fix obtains the Windows code page via
getWindowsCodepage()and encodes content withiconv.encode()before writing:This matches how the output file is already decoded (line 374), ensuring encoding consistency throughout.
Other Notes/Information
Only affects Windows systems with Visual Studio in non-ASCII paths. No breaking changes or API modifications.
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
2wrvsblobprodwus2180.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)40vvsblobprodwus2135.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)b15vsblobprodwus2164.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)b53vsblobprodwus2154.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)d94vsblobprodwus2119.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)k4pvsblobprodwus2140.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)n6wvsblobprodwus2123.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)p2tvsblobprodwus2189.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)v41vsblobprodwus2175.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
This section details on the original issue you should resolve
<issue_title>[Bug] Scan for Kits fails when VS is installed into a non-ASCII path</issue_title>
<issue_description>### Brief Issue Summary
With Visual Studio installed into a non-ASCII directory, the Scan for Kits function fails to call the vcvarsall.bat script.
CMake Tools Diagnostics
{ "os": "win32", "vscodeVersion": "1.106.3", "cmtVersion": "1.21.36", "configurations": [ { "folder": "e:\\Projects\\Visual Studio\\My Libraries\\testable_singleton", "cmakeVersion": "unknown", "configured": false, "generator": "unknown", "usesPresets": false, "compilers": {} } ], "cpptoolsIntegration": { "isReady": false, "hasCodeModel": false, "activeBuildType": "", "buildTypesSeen": [], "requests": [], "responses": [], "partialMatches": [], "targetCount": 0, "executablesCount": 0, "librariesCount": 0, "targets": [] }, "settings": [ { "communicationMode": "automatic", "useCMakePresets": "auto", "configureOnOpen": true } ] }Debug Log