@setlocal @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 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.