Skip to content

[Bug] Scan for Kits fails when VS is installed into a non-ASCII path #4623

@Sp3EdeR

Description

@Sp3EdeR

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 VisualStudioVersion := %VisualStudioVersion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VSINSTALLDIR echo VSINSTALLDIR := %VSINSTALLDIR% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsLibPath echo WindowsLibPath := %WindowsLibPath% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsSdkBinPath echo WindowsSdkBinPath := %WindowsSdkBinPath% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsSdkDir echo WindowsSdkDir := %WindowsSdkDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsSDKLibVersion echo WindowsSDKLibVersion := %WindowsSDKLibVersion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsSDKVersion echo WindowsSDKVersion := %WindowsSDKVersion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsSDK_ExecutablePath_x64 echo WindowsSDK_ExecutablePath_x64 := %WindowsSDK_ExecutablePath_x64% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsSDK_ExecutablePath_x86 echo WindowsSDK_ExecutablePath_x86 := %WindowsSDK_ExecutablePath_x86% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED CL echo CL := %CL% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED _CL_ echo _CL_ := %_CL_% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED LINK echo LINK := %LINK% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED _LINK_ echo _LINK_ := %_LINK_% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED TMP echo TMP := %TMP% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED UCRTCONTEXTROOT echo UCRTCONTEXTROOT := %UCRTCONTEXTROOT% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VCTARGETSPATH echo VCTARGETSPATH := %VCTARGETSPATH% >> vs-cmt-0.6975367841318897.bat.env
Execute output are:
A rendszer nem találja a megadott elérési utat.

...

Additional Information

The issue is that visualStudio.ts builds a batch file from UTF-8 strings, but launches it in cmd with the default locale, instead of matching it with the script's string encoding.

Metadata

Metadata

Assignees

No one assigned

    Labels

    buga bug in the product

    Type

    No type

    Projects

    Status

    Blocked

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions