@setlocal enableextensions | |
@echo off | |
set D=%~dp0 | |
set PCBUILD=%D%..\..\PCBuild\ | |
set TARGETDIR=%TEMP% | |
set TESTX86= | |
set TESTX64= | |
set TESTALLUSER= | |
set TESTPERUSER= | |
:CheckOpts | |
if "%1" EQU "-h" goto Help | |
if "%1" EQU "-x86" (set TESTX86=1) && shift && goto CheckOpts | |
if "%1" EQU "-x64" (set TESTX64=1) && shift && goto CheckOpts | |
if "%1" EQU "-t" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts | |
if "%1" EQU "--target" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts | |
if "%1" EQU "-a" (set TESTALLUSER=1) && shift && goto CheckOpts | |
if "%1" EQU "--alluser" (set TESTALLUSER=1) && shift && goto CheckOpts | |
if "%1" EQU "-p" (set TESTPERUSER=1) && shift && goto CheckOpts | |
if "%1" EQU "--peruser" (set TESTPERUSER=1) && shift && goto CheckOpts | |
if not defined TESTX86 if not defined TESTX64 (set TESTX86=1) && (set TESTX64=1) | |
if not defined TESTALLUSER if not defined TESTPERUSER (set TESTALLUSER=1) && (set TESTPERUSER=1) | |
if defined TESTX86 ( | |
for %%f in ("%PCBUILD%win32\en-us\*.exe") do ( | |
if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" | |
if errorlevel 1 exit /B | |
if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" | |
if errorlevel 1 exit /B | |
) | |
) | |
if defined TESTX64 ( | |
for %%f in ("%PCBUILD%amd64\en-us\*.exe") do ( | |
if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" | |
if errorlevel 1 exit /B | |
if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" | |
if errorlevel 1 exit /B | |
) | |
) | |
exit /B 0 | |
:test | |
@setlocal | |
@echo on | |
@if not exist "%~1" exit /B 1 | |
@set EXE=%~1 | |
@if not "%EXE:embed=%"=="%EXE%" exit /B 0 | |
@set EXITCODE=0 | |
@echo Installing %1 into %2 | |
"%~1" /passive /log "%~2\install\log.txt" TargetDir="%~2\Python" Include_debug=1 Include_symbols=1 %~3 | |
@if not errorlevel 1 ( | |
@echo Printing version | |
"%~2\Python\python.exe" -c "import sys; print(sys.version)" > "%~2\version.txt" 2>&1 | |
) | |
@if not errorlevel 1 ( | |
@echo Capturing Start Menu | |
@dir /s/b "%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" > "%~2\startmenu.txt" 2>&1 | |
@dir /s/b "%APPDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" >> "%~2\startmenu.txt" 2>&1 | |
@echo Capturing registry | |
@for /F "usebackq" %%f in (`reg query HKCR /s /f python /k`) do @( | |
echo %%f >> "%~2\hkcr.txt" | |
reg query "%%f" /s >> "%~2\hkcr.txt" 2>&1 | |
) | |
@reg query HKCU\Software\Python /s > "%~2\hkcu.txt" 2>&1 | |
@reg query HKLM\Software\Python /reg:32 /s > "%~2\hklm.txt" 2>&1 | |
@reg query HKLM\Software\Python /reg:64 /s >> "%~2\hklm.txt" 2>&1 | |
cmd /k exit 0 | |
) | |
@if not errorlevel 1 ( | |
@echo Installing package | |
"%~2\Python\python.exe" -m pip install "azure<0.10" > "%~2\pip.txt" 2>&1 | |
@if not errorlevel 1 ( | |
"%~2\Python\python.exe" -m pip uninstall -y azure python-dateutil six >> "%~2\pip.txt" 2>&1 | |
) | |
) | |
@if not errorlevel 1 ( | |
@echo Testing Tcl/tk | |
@set TCL_LIBRARY=%~2\Python\tcl\tcl8.6 | |
"%~2\Python\python.exe" -m test -uall -v test_ttk_guionly test_tk test_idle > "%~2\tcltk.txt" 2>&1 | |
@set TCL_LIBRARY= | |
) | |
@set EXITCODE=%ERRORLEVEL% | |
@echo Result was %EXITCODE% | |
@echo Removing %1 | |
"%~1" /passive /uninstall /log "%~2\uninstall\log.txt" | |
@echo off | |
exit /B %EXITCODE% | |
:Help | |
echo testrelease.bat [--target TARGET] [-x86] [-x64] [--alluser] [--peruser] [-h] | |
echo. | |
echo --target (-t) Specify the target directory for installs and logs | |
echo -x86 Run tests for x86 installers | |
echo -x64 Run tests for x64 installers | |
echo --alluser (-a) Run tests for all-user installs (requires Administrator) | |
echo --peruser (-p) Run tests for per-user installs | |
echo -h Display this help information | |
echo. | |
echo If no test architecture is specified, all architectures will be tested. | |
echo If no install type is selected, all install types will be tested. | |
echo. |