Bootstrap.bat: Change default behaviour to bootstrap with latest Visual Studio available

This commit is contained in:
Thomas Desveaux 2019-05-04 15:30:15 +02:00
parent ca50a00bdf
commit 830e13f06c

View File

@ -2,9 +2,17 @@
SETLOCAL SETLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION SETLOCAL ENABLEDELAYEDEXPANSION
REM ===========================================================================
SET SelfPath="%0"
SET VsWherePath="C:/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe"
REM ===========================================================================
SET vsversion=%1 SET vsversion=%1
IF "%vsversion%" == "" ( IF "%vsversion%" == "" (
SET vsversion=vs2015 CALL :BootstrapLatest
EXIT /B %ERRORLEVEL%
) )
IF "%vsversion%" == "vs2010" ( IF "%vsversion%" == "vs2010" (
@ -74,14 +82,12 @@ SET "VsVersionMax=%~3"
REM ref: https://github.com/Microsoft/vswhere/wiki/Start-Developer-Command-Prompt REM ref: https://github.com/Microsoft/vswhere/wiki/Start-Developer-Command-Prompt
SET VsWherePath="C:/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe"
IF NOT EXIST %VsWherePath% ( IF NOT EXIST %VsWherePath% (
ECHO Could not find vswhere.exe ECHO Could not find vswhere.exe
EXIT /B 2 EXIT /B 2
) )
SET VsWhereCmdLine="%VsWherePath% -nologo -latest -version [%VsVersionMin%,%VsVersionMax%) -property installationPath" SET VsWhereCmdLine="!VsWherePath! -nologo -latest -version [%VsVersionMin%,%VsVersionMax%) -property installationPath"
FOR /F "usebackq delims=" %%i in (`!VsWhereCmdLine!`) DO ( FOR /F "usebackq delims=" %%i in (`!VsWhereCmdLine!`) DO (
@ -98,6 +104,58 @@ REM :VsWhereVisualBootstrap
REM =========================================================================== REM ===========================================================================
:BootstrapLatest
IF EXIST %VsWherePath% (
REM First try for not legacy Visual Studios ( >vs2017 )
SET VsWhereCmdLine="!VsWherePath! -nologo -latest -property catalog.productLineVersion"
FOR /F "usebackq delims=" %%i in (`!VsWhereCmdLine!`) DO (
CALL %SelfPath% vs%%i
EXIT /B %ERRORLEVEL%
)
)
SET LegacyVSVersions=
REM Get latest Visual Studio legacy version
REM For all env var starting with VS
FOR /F "usebackq delims==" %%i in (`SET VS`) DO (
REM Check if env var match pattern VS*COMNTOOLS (ie: VS140COMNTOOLS)
ECHO "%%i" | FINDSTR /R /C:VS.*COMNTOOLS >nul && (
SET "LegacyVSVersions=%%i"
)
)
REM Strip VS
SET LegacyVSVersions=%LegacyVSVersions:VS=%
REM Strip COMNTOOLS
SET LegacyVSVersions=%LegacyVSVersions:COMNTOOLS=%
SET "VsVersionMap=140-vs2015;120-vs2013;110-vs2012;100-vs2010"
CALL SET PremakeVsVersion=%%VsVersionMap:*%LegacyVSVersions%-=%%
SET PremakeVsVersion=%PremakeVsVersion:;=&REM.%
IF NOT "%PremakeVsVersion%" == "" (
CALL %SelfPath% %PremakeVsVersion%
EXIT /B %ERRORLEVEL%
)
ECHO Could not find a Visual Studio installation
EXIT /B 2
REM :BootstrapLatest
REM ===========================================================================
REM SETLOCAL ENABLEDELAYEDEXPANSION REM SETLOCAL ENABLEDELAYEDEXPANSION
ENDLOCAL ENDLOCAL
REM SETLOCAL REM SETLOCAL