@echo off :: Copyright (c) 2016-2018 Denis Kuzmin [ entry.reg@gmail.com ] :: https://github.com/3F/DllExport if "%~1"=="/?" goto bl set "aa=%~dpnx0" set ab=%* set ac=%* if defined ab ( if defined __p_call ( set ac=%ac:^^=^% ) else ( set ab=%ab:^=^^% ) ) set wMgrArgs=%ac% set ad=%ab:!=^!% setlocal enableDelayedExpansion set "ae=^" set "ad=!ad:%%=%%%%!" set "ad=!ad:&=%%ae%%&!" set "af=1.6.2" set "wAction=" set "ag=DllExport" set "ah=tools/net.r_eg.DllExport.Wizard.targets" set "ai=packages" set "aj=https://www.nuget.org/api/v2/package/" set "ak=build_info.txt" set "al=!aa!" set "wRootPath=!cd!" set "am=" set "an=" set "ao=" set "ap=" set "aq=" set "ar=" set "as=" set "at=" set "au=" set /a av=0 if not defined ab ( if defined wAction goto bm goto bl ) call :bn bg !ad! bh goto bo :bl echo. @echo DllExport - v1.6.2.1044 [ 9fa5bbb ] @echo Copyright (c) 2009-2015 Robert Giesecke @echo Copyright (c) 2016-2018 Denis Kuzmin [ entry.reg@gmail.com ] :: github.com/3F echo. echo Distributed under the MIT license @echo https://github.com/3F/DllExport echo. echo Based on hMSBuild and includes GetNuTool core: https://github.com/3F echo. @echo. @echo Usage: DllExport [args to DllExport] [args to GetNuTool core] echo ------ echo. echo Arguments: echo ---------- echo -action {type} - Specified action for Wizard. Where {type}: echo * Configure - To configure DllExport for specific projects. echo * Update - To update pkg reference for already configured projects. echo * Restore - To restore configured DllExport. echo * Export - To export configured projects data. echo * Recover - To re-configure projects via predefined/exported data. echo * Unset - To unset all data from specified projects. echo * Upgrade - Aggregates an Update action with additions for upgrading. echo. echo -sln-dir {path} - Path to directory with .sln files to be processed. echo -sln-file {path} - Optional predefined .sln file to be processed. echo -metalib {path} - Relative path from PkgPath to DllExport meta library. echo -dxp-target {path} - Relative path to entrypoint wrapper of the main core. echo -dxp-version {num} - Specific version of DllExport. Where {num}: echo * Versions: 1.6.0 ... echo * Keywords: echo `actual` - Unspecified local/latest remote version; echo ( Only if you know what you are doing ) echo. echo -msb {path} - Full path to specific msbuild. echo -packages {path} - A common directory for packages. echo -server {url} - Url for searching remote packages. echo -proxy {cfg} - To use proxy. The format: [usr[:pwd]@]host[:port] echo -pkg-link {uri} - Direct link to package from the source via specified URI. echo -force - Aggressive behavior, e.g. like removing pkg when updating. echo -mgr-up - Updates this manager to version from '-dxp-version'. echo -wz-target {path} - Relative path to entrypoint wrapper of the main wizard. echo -pe-exp-list {module} - To list all available exports from PE32/PE32+ module. echo -eng - Try to use english language for all build messages. echo -GetNuTool {args} - Access to GetNuTool core. https://github.com/3F/GetNuTool echo -debug - To show additional information. echo -version - Displays version for which (together with) it was compiled. echo -build-info - Displays actual build information from selected DllExport. echo -help - Displays this help. Aliases: -help -h echo. echo ------ echo Flags: echo ------ echo __p_call - To use the call-type logic when invoking %~nx0 echo. echo -------- echo Samples: echo -------- echo DllExport -action Configure echo DllExport -action Restore -sln-file "Conari.sln" echo DllExport -proxy guest:1234@10.0.2.15:7428 -action Configure echo DllExport -action Configure -force -pkg-link http://host/v1.6.1.nupkg echo. echo DllExport -build-info echo DllExport -debug -restore -sln-dir ..\ echo DllExport -mgr-up -dxp-version 1.6.1 echo DllExport -action Upgrade -dxp-version 1.6.1 echo. echo DllExport -GetNuTool -unpack echo DllExport -GetNuTool /p:ngpackages="Conari;regXwild" echo DllExport -pe-exp-list bin\Debug\regXwild.dll goto bp :bo set /a aw=0 :bq set ax=!bg[%aw%]! if [!ax!]==[-help] ( goto bl ) else if [!ax!]==[-h] ( goto bl ) else if [!ax!]==[-?] ( goto bl ) if [!ax!]==[-debug] ( set am=1 goto br ) else if [!ax!]==[-action] ( set /a "aw+=1" & call :bs bg[!aw!] v set wAction=!v! for %%g in (Restore, Configure, Update, Export, Recover, Unset, Upgrade, Default) do ( if "!v!"=="%%g" goto br ) echo Unknown -action !v! exit/B 1 ) else if [!ax!]==[-sln-dir] ( set /a "aw+=1" & call :bs bg[!aw!] v set wSlnDir=!v! goto br ) else if [!ax!]==[-sln-file] ( set /a "aw+=1" & call :bs bg[!aw!] v set wSlnFile=!v! goto br ) else if [!ax!]==[-metalib] ( set /a "aw+=1" & call :bs bg[!aw!] v set wMetaLib=!v! goto br ) else if [!ax!]==[-dxp-target] ( set /a "aw+=1" & call :bs bg[!aw!] v set wDxpTarget=!v! goto br ) else if [!ax!]==[-dxp-version] ( set /a "aw+=1" & call :bs bg[!aw!] v set af=!v! goto br ) else if [!ax!]==[-msb] ( set /a "aw+=1" & call :bs bg[!aw!] v set ao=!v! goto br ) else if [!ax!]==[-packages] ( set /a "aw+=1" & call :bs bg[!aw!] v set ai=!v! goto br ) else if [!ax!]==[-server] ( set /a "aw+=1" & call :bs bg[!aw!] v set aj=!v! goto br ) else if [!ax!]==[-proxy] ( set /a "aw+=1" & call :bs bg[!aw!] v set at=!v! goto br ) else if [!ax!]==[-pkg-link] ( set /a "aw+=1" & call :bs bg[!aw!] v set ap=!v! goto br ) else if [!ax!]==[-force] ( set ar=1 goto br ) else if [!ax!]==[-mgr-up] ( set as=1 goto br ) else if [!ax!]==[-wz-target] ( set /a "aw+=1" & call :bs bg[!aw!] v set ah=!v! goto br ) else if [!ax!]==[-pe-exp-list] ( set /a "aw+=1" & call :bs bg[!aw!] v set aq=!v! goto br ) else if [!ax!]==[-eng] ( chcp 437 >nul goto br ) else if [!ax!]==[-GetNuTool] ( call :bt "accessing to GetNuTool ..." for /L %%p IN (0,1,8181) DO ( if "!ay:~%%p,10!"=="-GetNuTool" ( set az=!ay:~%%p! call :bu !az:~10! set /a av=%ERRORLEVEL% goto bp ) ) call :bt "!ax! is corrupted: !ay!" set /a av=1 goto bp ) else if [!ax!]==[-version] ( @echo v1.6.2.1044 [ 9fa5bbb ] goto bp ) else if [!ax!]==[-build-info] ( set an=1 goto br ) else if [!ax!]==[-tests] ( set /a "aw+=1" & call :bs bg[!aw!] v set au=!v! goto br ) else ( echo Incorrect key: !ax! set /a av=1 goto bp ) :br set /a "aw+=1" & if %aw% LSS !bh! goto bq :bm call :bt "dxpName = " ag call :bt "dxpVersion = " af call :bt "-sln-dir = " wSlnDir call :bt "-sln-file = " wSlnFile call :bt "-metalib = " wMetaLib call :bt "-dxp-target = " wDxpTarget call :bt "-wz-target = " ah if defined af ( if "!af!"=="actual" ( set "af=" ) ) if z%wAction%==zUpgrade ( call :bt "Upgrade is on" set as=1 set ar=1 ) call :bv ai set "ai=!ai!\\" set "a0=!ag!" set "wPkgPath=!ai!!ag!" if defined af ( set "a0=!a0!/!af!" set "wPkgPath=!wPkgPath!.!af!" ) if defined ar ( if exist "!wPkgPath!" ( call :bt "Removing old version before continue. '-force' key rule. " wPkgPath rmdir /S/Q "!wPkgPath!" ) ) set a1="!wPkgPath!\\!ah!" call :bt "wPkgPath = " wPkgPath if not exist !a1! ( if exist "!wPkgPath!" ( call :bt "Trying to replace obsolete version ... " wPkgPath rmdir /S/Q "!wPkgPath!" ) call :bt "-pkg-link = " ap call :bt "-server = " aj if defined ap ( set aj=!ap! if "!aj::=!"=="!aj!" ( set aj=!cd!/!aj! ) if "!wPkgPath::=!"=="!wPkgPath!" ( set "a2=../" ) set "a0=:!a2!!wPkgPath!|" ) if defined ao ( set a3=-msbuild "!ao!" ) set a4=!a3! /p:ngserver="!aj!" /p:ngpackages="!a0!" /p:ngpath="!ai!" /p:proxycfg="!at!" call :bt "GetNuTool call: " a4 if defined am ( call :bu !a4! ) else ( call :bu !a4! >nul ) ) if defined aq ( "!wPkgPath!\\tools\\PeViewer.exe" -list -pemodule "!aq!" set /a av=%ERRORLEVEL% goto bp ) if defined an ( call :bt "buildInfo = " wPkgPath ak if not exist "!wPkgPath!\\!ak!" ( echo information about build is not available. set /a av=2 goto bp ) type "!wPkgPath!\\!ak!" goto bp ) if not exist !a1! ( echo Something went wrong. Try to use another keys. set /a av=2 goto bp ) call :bt "wRootPath = " wRootPath call :bt "wAction = " wAction call :bt "wMgrArgs = " wMgrArgs if defined ao ( call :bt "Use specific MSBuild tools: " ao set a5="!ao!" goto bw ) call :bx bi & set a5="!bi!" if "!ERRORLEVEL!"=="0" goto bw echo MSBuild tools was not found. Try with `-msb` key. set /a av=2 goto bp :bw if not defined a5 ( echo Something went wrong. Use `-debug` key for details. set /a av=2 goto bp ) if not defined au ( call :bt "Target: " a5 a1 !a5! /nologo /v:m /m:4 !a1! ) :bp if defined au ( echo Running Tests ... "!au!" call :bx bj "!bj!" /nologo /v:m /m:4 "!au!" exit/B 0 ) if defined as ( (copy /B/Y "!wPkgPath!\\DllExport.bat" "!al!" > nul) && ( echo Manager has been updated. & exit/B !av! ) || ( echo -mgr-up failed. & exit/B %ERRORLEVEL% ) ) exit/B !av! :bx call :bt "Searching from .NET Framework - .NET 4.0, ..." for %%v in (4.0, 3.5, 2.0) do ( call :by %%v Y & if defined Y ( set %1=!Y! exit/B 0 ) ) call :bt "msb -netfx: not found" set "%1=" exit/B 2 :by call :bt "check %1" for /F "usebackq tokens=2* skip=2" %%a in ( `reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\%1" /v MSBuildToolsPath 2^> nul` ) do if exist %%b ( set a6=%%~b call :bt ":msbfound " a6 call :bz a6 bk set %2=!bk! exit/B 0 ) set "%2=" exit/B 0 :bz set %2=!%~1!\MSBuild.exe exit/B 0 :bt if defined am ( set a7=%1 set a7=!a7:~0,-1! set a7=!a7:~1! echo.[%TIME% ] !a7! !%2! !%3! ) exit/B 0 :bv call :b0 %1 call :b1 %1 exit/B 0 :b0 call :b2 %1 "-=1" exit/B 0 :b1 call :b2 %1 "+=1" exit/B 0 :b2 set a8=z!%1!z if "%~2"=="-=1" (set "a9=1") else (set "a9=") if defined a9 ( set /a "i=-2" ) else ( set /a "i=1" ) :b3 if "!a8:~%i%,1!"==" " ( set /a "i%~2" goto b3 ) if defined a9 set /a "i+=1" if defined a9 ( set "%1=!a8:~1,%i%!" ) else ( set "%1=!a8:~%i%,-1!" ) exit/B 0 :bn set "a_=%~1" set /a aw=-1 :b4 set /a aw+=1 set %a_%[!aw!]=%~2 shift & if not "%~3"=="" goto b4 set /a aw-=1 set %1=!aw! exit/B 0 :bs set %2=!%1! exit/B 0 :bu setlocal disableDelayedExpansion @echo off :: GetNuTool - Executable version :: Copyright (c) 2015-2018 Denis Kuzmin [ entry.reg@gmail.com ] :: https://github.com/3F/GetNuTool set ba=gnt.core set bb="%temp%\%random%%random%%ba%" if "%~1"=="-unpack" goto b5 set bc=%* if defined __p_call if defined bc set bc=%bc:^^=^% set bd=%__p_msb% if defined bd goto b6 if "%~1"=="-msbuild" goto b7 for %%v in (4.0, 14.0, 12.0, 3.5, 2.0) do ( for /F "usebackq tokens=2* skip=2" %%a in ( `reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\%%v" /v MSBuildToolsPath 2^> nul` ) do if exist %%b ( set bd="%%~b\MSBuild.exe" goto b6 ) ) echo MSBuild was not found. Try -msbuild "fullpath" args 1>&2 exit/B 2 :b7 shift set bd=%1 shift set be=%bc:!= #__b_ECL## % setlocal enableDelayedExpansion set be=!be:%%=%%%%! :b8 for /F "tokens=1* delims==" %%a in ("!be!") do ( if "%%~b"=="" ( call :b9 !be! exit/B %ERRORLEVEL% ) set be=%%a #__b_EQ## %%b ) goto b8 :b9 shift & shift set "bc=" :b_ set bc=!bc! %1 shift & if not "%~2"=="" goto b_ set bc=!bc: #__b_EQ## ==! setlocal disableDelayedExpansion set bc=%bc: #__b_ECL## =!% :b6 call :ca %bd% %bb% /nologo /p:wpath="%~dp0/" /v:m /m:4 %bc% set "bd=" set bf=%ERRORLEVEL% del /Q/F %bb% exit/B %bf% :b5 set bb="%~dp0\%ba%" echo Generating minified version in %bb% ... :ca %bb% set a=PropertyGroup&set b=Condition&set c=ngpackages&set d=Target&set e=DependsOnTargets&set f=TaskCoreDllPath&set g=MSBuildToolsPath&set h=UsingTask&set i=CodeTaskFactory&set j=ParameterGroup&set k=Reference&set l=Include&set m=System&set n=Using&set o=Namespace&set p=IsNullOrEmpty&set q=return&set r=string&set s=delegate&set t=foreach&set u=WriteLine&set v=Combine&set w=Console.WriteLine&set x=Directory&set y=GetNuTool&set z=StringComparison&set _=EXT_NUSPEC ^