Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Jan 30, 2026

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:

  • Encode temporary batch files using Windows code page instead of UTF-8 before writing to disk
  • Add unit tests verifying encoding round-trip behavior for non-ASCII paths

The purpose of this change

The collectDevBatVars function 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 with iconv.encode() before writing:

const outputEncoding = await codepages.getWindowsCodepage();
const batContent = bat.join('\r\n');
const batBuffer = iconv.encode(batContent, outputEncoding);
await fs.writeFile(batPath, batBuffer);

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
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install (dns block)
  • 40vvsblobprodwus2135.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install (dns block)
  • b15vsblobprodwus2164.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install (dns block)
  • b53vsblobprodwus2154.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install (dns block)
  • d94vsblobprodwus2119.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install (dns block)
  • k4pvsblobprodwus2140.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install (dns block)
  • n6wvsblobprodwus2123.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install (dns block)
  • p2tvsblobprodwus2189.vsblob.vsassets.io
    • Triggering command: /usr/local/bin/node node /usr/local/bin/yarn install (dns block)
  • v41vsblobprodwus2175.vsblob.vsassets.io
    • Triggering command: /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

[visual-studio] Error running:C:\Program Files\Fejlesztői Eszközök\Visual Studio\2022\VC\Auxiliary\Build\vcvarsall.bat with args:x86 
Cannot find INCLUDE within:
Path := C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Fejlesztři Eszkřzřk\Git\cmd;C:\Program Files (x86)\Fejlesztři Eszkřzřk\Python;C:\Program Files (x86)\Fejlesztři Eszkřzřk\Python\Scripts;C:\Program Files\Fejlesztři Eszkřzřk\VS Code\bin;C:\Program Files (x86)\Fejlesztři Eszkřzřk\Visual Studio\Visual Leak Detector\bin\Win32;C:\Program Files (x86)\Fejlesztři Eszkřzřk\Visual Studio\Visual Leak Detector\bin\Win64;C:\Program Files\Fejlesztři Eszkřzřk\Android Studio\jbr\bin;C:\Program Files (x86)\Křp řs Videř\K-Lite Codec Pack\QT Lite\QTSystem;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\NVIDIA Corporation\NVIDIA app\NvDLISR;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Fejlesztři Eszkřzřk\TortoiseGit\bin;C:\Program Files\dotnet\;C:\Users\Speeder\AppData\Local\Microsoft\WindowsApps;C:\Users\Speeder\.dotnet\tools 
TMP := C:\Users\Speeder\AppData\Local\Temp 

Bat content are:
@echo off
cd /d "%~dp0"
set "VS170COMNTOOLS=C:\Program Files\Fejlesztői Eszközök\Visual Studio\2022\Common7\Tools"
set "INCLUDE="
call "C:\Program Files\Fejlesztői Eszközök\Visual Studio\2022\VC\Auxiliary\Build\vcvarsall.bat" x86 
setlocal enableextensions enabledelayedexpansion
cd /d "%~dp0"
if DEFINED DevEnvDir echo DevEnvDir := %DevEnvDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED Framework40Version echo Framework40Version := %Framework40Version% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED FrameworkDir echo FrameworkDir := %FrameworkDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED FrameworkDIR32 echo FrameworkDIR32 := %FrameworkDIR32% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED FrameworkDIR64 echo FrameworkDIR64 := %FrameworkDIR64% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED FrameworkVersion echo FrameworkVersion := %FrameworkVersion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED FrameworkVersion32 echo FrameworkVersion32 := %FrameworkVersion32% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED FrameworkVersion64 echo FrameworkVersion64 := %FrameworkVersion64% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED INCLUDE echo INCLUDE := %INCLUDE% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED LIB echo LIB := %LIB% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED LIBPATH echo LIBPATH := %LIBPATH% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED NETFXSDKDir echo NETFXSDKDir := %NETFXSDKDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED Path echo Path := %Path% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED UCRTVersion echo UCRTVersion := %UCRTVersion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED UniversalCRTSdkDir echo UniversalCRTSdkDir := %UniversalCRTSdkDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED user_inputversion echo user_inputversion := %user_inputversion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VCIDEInstallDir echo VCIDEInstallDir := %VCIDEInstallDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VCINSTALLDIR echo VCINSTALLDIR := %VCINSTALLDIR% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VCToolsInstallDir echo VCToolsInstallDir := %VCToolsInstallDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VCToolsRedistDir echo VCToolsRedistDir := %VCToolsRedistDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VCToolsVersion echo VCToolsVersion := %VCToolsVersion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VisualStudioVersion echo Vi...

</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

- Fixes microsoft/vscode-cmake-tools#4623

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey).
…s with Windows code page

Co-authored-by: hanniavalera <90047725+hanniavalera@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix Scan for Kits failure with non-ASCII path Jan 30, 2026
Copilot AI requested a review from hanniavalera January 30, 2026 14:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants