change runprebuild.bat to try to find msbuild of most recent visual studio instaled for compile.bat

0.9.1.0-post-fixes
UbitUmarov 2018-11-27 11:20:39 +00:00
parent 0307427b94
commit 28171e1d10
1 changed files with 28 additions and 15 deletions

View File

@ -1,12 +1,26 @@
@echo OFF
bin\Prebuild.exe /target nant
bin\Prebuild.exe /target vs2015
setlocal ENABLEEXTENSIONS
set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0"
set VALUE_NAME=MSBuildToolsPath
rem try find vs2017
if "%PROCESSOR_ARCHITECTURE%"=="x86" set PROGRAMS=%ProgramFiles%
if defined ProgramFiles(x86) set PROGRAMS=%ProgramFiles(x86)%
for %%e in (Enterprise Professional Community) do (
if exist "%PROGRAMS%\Microsoft Visual Studio\2017\%%e\MSBuild\15.0\Bin\MSBuild.exe" (
set ValueValue="%PROGRAMS%\Microsoft Visual Studio\2017\%%e\MSBuild\15.0\Bin\"
goto :found
)
)
rem We have to use grep or find to locate the correct line, because reg query spits
rem out 4 lines before Windows 7 but 2 lines after Windows 7.
rem We use grep if it's on the path; otherwise we use the built-in find command
@ -19,20 +33,19 @@ if defined FOUNDGREP (
set FINDCMD=find
)
FOR /F "usebackq tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul ^| %FINDCMD% "%VALUE_NAME%"`) DO (
set ValueName=%%A
set ValueType=%%B
for %%v in (14.0, 12.0, 4.0) do (
FOR /F "usebackq tokens=1-3" %%A IN (`REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\%%v" /v %VALUE_NAME% 2^>nul ^| %FINDCMD% "%VALUE_NAME%"`) DO (
set ValueValue=%%C
goto :found
)
)
if defined ValueName (
@echo Found msbuild path registry entry
@echo Value Name = %ValueName%
@echo Value Type = %ValueType%
@echo Value Value = %ValueValue%
@echo %KEY_NAME%\%VALUE_NAME% not found.
@echo Not creating compile.bat
exit
:found
@echo Found msbuild at %ValueValue%
@echo Creating compile.bat
@echo %ValueValue%\msbuild opensim.sln > compile.bat
) else (
@echo %KEY_NAME%\%VALUE_NAME% not found.
@echo Not creating compile.bat
)