113 lines
3.1 KiB
Batchfile
113 lines
3.1 KiB
Batchfile
:: Wizard Kit: Windows PE Build Tool Launcher ::
|
|
|
|
@echo off
|
|
|
|
:Init
|
|
setlocal EnableDelayedExpansion
|
|
title Wizard Kit: Windows PE Build Tool
|
|
call :CheckFlags %*
|
|
call :CheckElevation || goto Exit
|
|
call :FindKitsRoot || goto ErrorKitNotFound
|
|
|
|
:LaunchPrep
|
|
rem Update environment using WADK script
|
|
set "dandi_set_env=%adk_root%\Deployment Tools\DandISetEnv.bat"
|
|
if not exist "%dandi_set_env%" (goto ErrorKitNotFound)
|
|
call "%dandi_set_env%" || goto ErrorUnknown
|
|
|
|
:EnsureCRLF
|
|
rem Rewrite main.py using PowerShell to have CRLF/`r`n lineendings
|
|
set "script=%~dp0\.bin\Scripts\borrowed\set-eol.ps1"
|
|
set "main=%~dp0\.bin\Scripts\settings\main.py"
|
|
powershell -executionpolicy bypass -noprofile -file %script% -lineEnding win -file %main% || goto ErrorUnknown
|
|
|
|
:Launch
|
|
set "script=%~dp0\.bin\Scripts\build_pe.ps1"
|
|
powershell -executionpolicy bypass -noprofile -file %script% || goto ErrorUnknown
|
|
goto Exit
|
|
|
|
:: Functions ::
|
|
:CheckElevation
|
|
rem Code based on StackOverflow comments
|
|
rem Question: https://stackoverflow.com/q/4051883
|
|
rem Using answer: https://stackoverflow.com/a/21295806
|
|
rem Asked by: https://stackoverflow.com/users/272237/flacs
|
|
rem Edited by: https://stackoverflow.com/users/330315/a-horse-with-no-name
|
|
rem Answer by: https://stackoverflow.com/users/3198799/and31415
|
|
fsutil dirty query %systemdrive% >nul
|
|
if %errorlevel% neq 0 (
|
|
call :RequestElevation
|
|
rem reset errorlevel to 1 to abort the current non-elevated script
|
|
color 00
|
|
)
|
|
@exit /b %errorlevel%
|
|
|
|
:CheckFlags
|
|
rem Loops through all arguments to check for accepted flags
|
|
set DEBUG=
|
|
for %%f in (%*) do (
|
|
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
|
)
|
|
@exit /b 0
|
|
|
|
:FindKitsRoot
|
|
set "adk_root="
|
|
set "found="
|
|
set "r_vname=KitsRoot10"
|
|
|
|
rem Check registry for WADK
|
|
set "r_path=HKLM\Software\Wow6432Node\Microsoft\Windows Kits\Installed Roots"
|
|
reg query "%r_path%" /v %r_vname% >nul 2>&1 && set "found=True"
|
|
if not defined found (
|
|
rem 32-bit systems?
|
|
set "r_path=HKLM\Software\Microsoft\Windows Kits\Installed Roots"
|
|
reg query "!r_path!" /v %r_vname% >nul 2>&1 && set "found=True"
|
|
)
|
|
for /f "skip=2 tokens=2*" %%i in ('reg query "%r_path%" /v %r_vname%') do (
|
|
set adk_root=%%j\Assessment and Deployment Kit
|
|
)
|
|
rem Set errorlevel if necessary
|
|
if not defined adk_root color 00
|
|
if not defined found color 00
|
|
@exit /b %errorlevel%
|
|
|
|
:RequestElevation
|
|
set "cscript=%systemroot%\system32\cscript.exe"
|
|
set "vb_script=.bin\tmp\Elevate.vbs"
|
|
mkdir ".bin\tmp" 2>nul
|
|
|
|
rem Create VB script
|
|
echo Set UAC = CreateObject^("Shell.Application"^) > "%vb_script%"
|
|
echo UAC.ShellExecute "%~s0", "", "", "runas", 3 >> "%vb_script%"
|
|
|
|
rem Run
|
|
"%cscript%" //nologo "%vb_script%" || goto ErrorUnknown
|
|
del "%vb_script%"
|
|
@exit /b 0
|
|
|
|
:: Errors ::
|
|
:ErrorKitNotFound
|
|
echo.
|
|
echo ERROR: Windows ADK installation not found.
|
|
goto Abort
|
|
|
|
:ErrorUnknown
|
|
echo.
|
|
echo ERROR: Encountered an unknown error.
|
|
goto Abort
|
|
|
|
:Abort
|
|
color 4e
|
|
echo Aborted.
|
|
echo.
|
|
echo Press any key to exit...
|
|
pause>nul
|
|
color
|
|
rem Set errorlevel to 1 by calling color incorrectly
|
|
color 00
|
|
goto Exit
|
|
|
|
:: Cleanup and exit ::
|
|
:Exit
|
|
endlocal
|
|
exit /b %errorlevel%
|