@@ -417,11 +417,12 @@ echo PUBLISH_VSIX=%PUBLISH_VSIX%
417417echo MYGET_APIKEY=%MYGET_APIKEY%
418418echo TEMP=%TEMP%
419419
420- REM load Visual Studio 2017 developer command prompt if VS150COMNTOOLS is not set
420+ :: load Visual Studio 2017 developer command prompt if VS150COMNTOOLS is not set
421421
422- REM If this is not set, VsDevCmd.bat will change %cd% to [USERPROFILE]\source, causing the build to fail.
422+ :: If this is not set, VsDevCmd.bat will change %cd% to [USERPROFILE]\source, causing the build to fail.
423423SET VSCMD_START_DIR = %cd%
424424
425+ :: try to find an RC or RTM edition of VS2017
425426if " %VS150COMNTOOLS% " EQU " " if exist " %ProgramFiles(x86)% \Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat" (
426427 call " %ProgramFiles(x86)% \Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
427428)
@@ -431,15 +432,28 @@ if "%VS150COMNTOOLS%" EQU "" if exist "%ProgramFiles(x86)%\Microsoft Visual Stud
431432if " %VS150COMNTOOLS% " EQU " " if exist " %ProgramFiles(x86)% \Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" (
432433 call " %ProgramFiles(x86)% \Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat"
433434)
435+
436+ :: Allow build from Preview editions
437+ if " %VS150COMNTOOLS% " EQU " " if exist " %ProgramFiles(x86)% \Microsoft Visual Studio\Preview\Enterprise\Common7\Tools\VsDevCmd.bat" (
438+ call " %ProgramFiles(x86)% \Microsoft Visual Studio\Preview\Enterprise\Common7\Tools\VsDevCmd.bat"
439+ )
440+ if " %VS150COMNTOOLS% " EQU " " if exist " %ProgramFiles(x86)% \Microsoft Visual Studio\Preview\Professional\Common7\Tools\VsDevCmd.bat" (
441+ call " %ProgramFiles(x86)% \Microsoft Visual Studio\Preview\Enterprise\Common7\Tools\VsDevCmd.bat"
442+ )
443+ if " %VS150COMNTOOLS% " EQU " " if exist " %ProgramFiles(x86)% \Microsoft Visual Studio\Preview\Community\Common7\Tools\VsDevCmd.bat" (
444+ call " %ProgramFiles(x86)% \Microsoft Visual Studio\Preview\Enterprise\Common7\Tools\VsDevCmd.bat"
445+ )
446+
447+ :: If there's no installation of VS2017 or VS2017 Preview, use the build tools
434448if " %VS150COMNTOOLS% " EQU " " if exist " %ProgramFiles(x86)% \Microsoft Visual Studio\2017\BuildTools\Common7\Tools\VsDevCmd.bat" (
435449 call " %ProgramFiles(x86)% \Microsoft Visual Studio\2017\BuildTools\Common7\Tools\VsDevCmd.bat"
436450)
437451
438- echo .
452+ echo .
439453echo Environment
440454set
441- echo .
442- echo .
455+ echo .
456+ echo .
443457
444458echo ---------------- Done with arguments, starting preparation -----------------
445459
@@ -639,15 +653,17 @@ if "%OSARCH%"=="AMD64" set SYSWOW64=SysWoW64
639653
640654if not " %OSARCH% " == " x86" set REGEXE32BIT = %WINDIR% \syswow64\reg.exe
641655
642- echo SDK environment vars from Registry (note: ignore " ERROR: The system was unable to find .... " )
656+ echo SDK environment vars from Registry
643657echo ==================================
644- FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\WOW6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6.2\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS = %%B
645- if " %WINSDKNETFXTOOLS% " == " " FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\WOW6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6.1\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS = %%B
646- if " %WINSDKNETFXTOOLS% " == " " FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS = %%B
647- if " %WINSDKNETFXTOOLS% " == " " FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS = %%B
648- if " %WINSDKNETFXTOOLS% " == " " FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS = %%B
649- if " %WINSDKNETFXTOOLS% " == " " FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS = %%B
650- if " %WINSDKNETFXTOOLS% " == " " FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS = %%B
658+
659+ :: See https://stackoverflow.com/a/17113667/111575 on 2^>NUL for suppressing the error "ERROR: The system was unable to find the specified registry key or value." from reg.exe, this fixes #3619
660+ FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\WOW6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6.2\WinSDK-NetFx40Tools" /v InstallationFolder 2^ > NUL ') DO SET WINSDKNETFXTOOLS = %%B
661+ if " %WINSDKNETFXTOOLS% " == " " FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\WOW6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6.1\WinSDK-NetFx40Tools" /v InstallationFolder 2^ > NUL ') DO SET WINSDKNETFXTOOLS = %%B
662+ if " %WINSDKNETFXTOOLS% " == " " FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools" /v InstallationFolder 2^ > NUL ') DO SET WINSDKNETFXTOOLS = %%B
663+ if " %WINSDKNETFXTOOLS% " == " " FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools" /v InstallationFolder 2^ > NUL ') DO SET WINSDKNETFXTOOLS = %%B
664+ if " %WINSDKNETFXTOOLS% " == " " FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools" /v InstallationFolder 2^ > NUL ') DO SET WINSDKNETFXTOOLS = %%B
665+ if " %WINSDKNETFXTOOLS% " == " " FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx40Tools" /v InstallationFolder 2^ > NUL ') DO SET WINSDKNETFXTOOLS = %%B
666+ if " %WINSDKNETFXTOOLS% " == " " FOR /F " tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY " HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools" /v InstallationFolder 2^ > NUL ') DO SET WINSDKNETFXTOOLS = %%B
651667
652668set PATH = %PATH% ;%WINSDKNETFXTOOLS%
653669for /d %%i in (%WINDIR% \Microsoft.NET\Framework\v4.0.?????) do set CORDIR = %%i
@@ -659,7 +675,7 @@ IF NOT DEFINED SNEXE32 IF EXIST "%WINSDKNETFXTOOLS%\sn.exe" set
659675IF NOT DEFINED SNEXE64 IF EXIST " %WINSDKNETFXTOOLS% x64\sn.exe" set SNEXE64 = %WINSDKNETFXTOOLS% x64\sn.exe
660676IF NOT DEFINED ildasm IF EXIST " %WINSDKNETFXTOOLS% \ildasm.exe" set ildasm = %WINSDKNETFXTOOLS% ildasm.exe
661677
662- echo .
678+ echo .
663679echo SDK environment vars
664680echo =======================
665681echo WINSDKNETFXTOOLS: %WINSDKNETFXTOOLS%
0 commit comments