anchor.diff:  REM At this point - we should have the version number.
   REM We can build the url like so: "https://www.python.org/ftp/python/[version]/python-[version]-amd64.exe"
   set "url=https://www.python.org/ftp/python/!release!/python-!release!-amd64.exe"
  +set "pytype=exe"
  +if "!targetpy!" == "2" (
  +    set "url=https://www.python.org/ftp/python/!release!/python-!release!.amd64.msi"
  +    set "pytype=msi"
  +)
   REM Now we download it with our slick powershell command
  -powershell -command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; (new-object System.Net.WebClient).DownloadFile('!url!','%TEMP%\pyinstall.exe')"
  +powershell -command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; (new-object System.Net.WebClient).DownloadFile('!url!','%TEMP%\pyinstall.!pytype!')"
   REM If it doesn't exist - we bail
  -if not exist "%TEMP%\pyinstall.exe" (
  +if not exist "%TEMP%\pyinstall.!pytype!" (
       goto checkpy
   )
   REM It should exist at this point - let's run it to install silently
   echo Installing...
  -echo pyinstall.exe /quiet PrependPath=1 Include_test=0 Shortcuts=0 Include_launcher=0
   pushd "%TEMP%"
  -pyinstall.exe /quiet PrependPath=1 Include_test=0 Shortcuts=0 Include_launcher=0
  +if /i "!pytype!" == "exe" (
  +    echo pyinstall.exe /quiet PrependPath=1 Include_test=0 Shortcuts=0 Include_launcher=0
  +    pyinstall.exe /quiet PrependPath=1 Include_test=0 Shortcuts=0 Include_launcher=0
  +) else (
  +    set "foldername=!release:.=!"
  +    echo msiexec /i pyinstall.msi /qb ADDLOCAL=ALL TARGETDIR="%LocalAppData%\Programs\Python\Python!foldername:~0,2!"
  +    msiexec /i pyinstall.msi /qb ADDLOCAL=ALL TARGETDIR="%LocalAppData%\Programs\Python\Python!foldername:~0,2!"
  +)
   popd
  -echo Installer finsihed with %ERRORLEVEL% status.
  +echo Installer finished with %ERRORLEVEL% status.
   REM Now we should be able to delete the installer and check for py again
  -del "%TEMP%\pyinstall.exe"
  +del "%TEMP%\pyinstall.!pytype!"
   REM If it worked, then we should have python in our PATH
   REM this does not get updated right away though - let's try
   REM manually updating the local PATH var
   set "spath="
   set "upath="
  -for /f "tokens=2* delims= " %%i in ('reg.exe query "HKCU\Environment" /v "Path" 2^> nul') do (
  -    if NOT "%%j"=="" (
  -		set "upath=%%j"
  -	)
  -)
  -for /f "tokens=2* delims= " %%i in ('reg.exe query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "Path" 2^> nul') do (
  -    if NOT "%%j"=="" (
  -		set "spath=%%j"
  -	)
  -)
  +for /f "tokens=2* delims= " %%i in ('reg.exe query "HKCU\Environment" /v "Path" 2^> nul') do ( if not "%%j" == "" set "upath=%%j" )
  +for /f "tokens=2* delims= " %%i in ('reg.exe query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "Path" 2^> nul') do ( if not "%%j" == "" set "spath=%%j" )
   if not "!spath!" == "" (
       REM We got something in the system path
       set "PATH=!spath!"
  
positive.code:         echo   ###     ###
          echo  # Warning #
          echo ###     ###
          REM Couldn't install for whatever reason - give the error message
          echo Python is not installed or not found in your PATH var.
          echo Please install it from https://www.python.org/downloads/windows/
  
negative.code:     )
  )
  goto runscript
  
  :checkpyversion <path> <py2v> <py2path> <py3v> <py3path>
  set "version="&for /f "tokens=2* USEBACKQ delims= " %%a in (`"%~1" -V 2^>^&1`) do (
      REM Ensure we have a version number
      call :isnumber "%%a"
      if not "!errorlevel!" == "0" goto :EOF
      set "version=%%a"
  )
  if not defined version goto :EOF
  if "!version:~0,1!" == "2" (
      REM Python 2
      call :comparepyversion "!version!" "!%~2!"
      if "!errorlevel!" == "1" (
          set "%~2=!version!"
          set "%~3=%~1"
      )
  ) else (
      REM Python 3
      call :comparepyversion "!version!" "!%~4!"
      if "!errorlevel!" == "1" (
          set "%~4=!version!"
          set "%~5=%~1"
      )
  )
  goto :EOF
  
  :isnumber <check>
  set "var="&for /f "delims=0123456789." %%i in ("%~1") do set var=%%i
  if defined var (exit /b 1)
  exit /b 0
  
  :comparepyversion <version1> <version2> <return>
  REM Exits with status 0 if equal, 1 if v1 gtr v2, 2 if v1 lss v2
  for /f "tokens=1,2,3 delims=." %%a in ("%~1") do (
      set a1=%%a
      set a2=%%b
      set a3=%%c
  )
  for /f "tokens=1,2,3 delims=." %%a in ("%~2") do (
      set b1=%%a
      set b2=%%b
      set b3=%%c
  )
  if not defined a1 set a1=0
  if not defined a2 set a2=0
  if not defined a3 set a3=0
  if not defined b1 set b1=0
  if not defined b2 set b2=0
  if not defined b3 set b3=0
  if %a1% gtr %b1% exit /b 1
  if %a1% lss %b1% exit /b 2
  if %a2% gtr %b2% exit /b 1
  if %a2% lss %b2% exit /b 2
  if %a3% gtr %b3% exit /b 1
  if %a3% lss %b3% exit /b 2
  exit /b 0
  
  :askinstall
  cls
  