* Network drivers disabled (for now until the sigs are manually verified) * Replaced Notepad2-Mod with Notepad++
177 lines
No EOL
7.1 KiB
Batchfile
177 lines
No EOL
7.1 KiB
Batchfile
@echo off
|
|
|
|
:Init
|
|
setlocal EnableDelayedExpansion
|
|
title WK-WinPE creation tool
|
|
color 1b
|
|
pushd %~dp0
|
|
|
|
:Flags
|
|
for %%f in (%*) do (
|
|
if /i "%%f" == "/DEBUG" (@echo on)
|
|
)
|
|
|
|
:GetDate
|
|
:: Credit to SS64.com Code taken from http://ss64.com/nt/syntax-getdate.html
|
|
:: Use WMIC to retrieve date and time in ISO 8601 format.
|
|
FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
|
|
IF "%%~L"=="" goto s_done
|
|
Set _yyyy=%%L
|
|
Set _mm=00%%J
|
|
Set _dd=00%%G
|
|
Set _hour=00%%H
|
|
SET _minute=00%%I
|
|
)
|
|
:s_done
|
|
:: Pad digits with leading zeros
|
|
Set _mm=%_mm:~-2%
|
|
Set _dd=%_dd:~-2%
|
|
Set _hour=%_hour:~-2%
|
|
Set _minute=%_minute:~-2%
|
|
Set iso_date=%_yyyy%-%_mm%-%_dd%
|
|
|
|
:Variables
|
|
set "wd=%cd%"
|
|
set "winpe_ocs=%programfiles(x86)%\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment"
|
|
set "pe_out=!wd!\pe_out"
|
|
|
|
:CheckForCleanup
|
|
echo Scanning for old build folders...
|
|
set "found_old="
|
|
if exist "!wd!\mount" (
|
|
echo. Found: "!wd!\mount"
|
|
set "found_old=true"
|
|
)
|
|
if exist "!wd!\pe_files" (
|
|
echo. Found: "!wd!\pe_files"
|
|
set "found_old=true"
|
|
)
|
|
if defined found_old (
|
|
goto Cleanup
|
|
) else (
|
|
echo. No build folders found.
|
|
)
|
|
goto :BuildBoth
|
|
|
|
:Cleanup
|
|
echo.
|
|
choice /t 30 /c YN /d N /m "Delete the above folders?"
|
|
if %errorlevel% neq 1 goto Abort
|
|
rmdir /s /q "!wd!\mount"
|
|
rmdir /s /q "!wd!\pe_files"
|
|
|
|
:BuildBoth
|
|
for %%a in (amd64 x86) do (
|
|
rem set vars
|
|
set "arch=%%a"
|
|
set "drivers=!wd!\Drivers\!arch!"
|
|
set "mount=!wd!\mount\!arch!"
|
|
set "pe_files=!wd!\pe_files\!arch!"
|
|
set "winpe_ocs=%programfiles(x86)%\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\!arch!\WinPE_OCs"
|
|
|
|
rem Copy main files
|
|
call copype.cmd !arch! "!pe_files!"
|
|
for %%t in (bg-bg cs-cz da-dk de-de el-gr en-gb es-es es-mx et-ee fi-fi fr-ca fr-fr hr-hr hu-hu it-it ja-jp ko-kr lt-lt lv-lv nb-no nl-nl pl-pl pt-br pt-pt ro-ro ru-ru sk-sk sl-si sr-latn-cs sr-latn-rs sv-se tr-tr uk-ua zh-cn zh-hk zh-tw) do (
|
|
rmdir /s /q "!pe_files!\media\%%t"
|
|
rmdir /s /q "!pe_files!\media\Boot\%%t"
|
|
rmdir /s /q "!pe_files!\media\EFI\Microsoft\Boot\%%t"
|
|
)
|
|
|
|
rem Mount Image
|
|
mkdir "!mount!"
|
|
dism /mount-image /imagefile:"!pe_files!\media\sources\boot.wim" /index:1 /mountdir:"!mount!" /logpath:"dism.log"
|
|
|
|
rem Add Packages - More info: https://msdn.microsoft.com/en-us/library/windows/hardware/dn938382.aspx
|
|
dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\WinPE-EnhancedStorage.cab" /logpath:"dism.log"
|
|
dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\WinPE-FMAPI.cab" /logpath:"dism.log"
|
|
dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\WinPE-WMI.cab" /logpath:"dism.log"
|
|
dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\en-us\WinPE-EnhancedStorage_en-us.cab" /logpath:"dism.log"
|
|
dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\en-us\WinPE-WMI_en-us.cab" /logpath:"dism.log"
|
|
|
|
rem rem Install WinPE-WMI before you install WinPE-NetFX.
|
|
rem dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\WinPE-NetFx.cab" /logpath:"dism.log"
|
|
rem dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\en-us\WinPE-NetFx_en-us.cab" /logpath:"dism.log"
|
|
|
|
rem rem Install WinPE-WMI and WinPE-NetFX before you install WinPE-Scripting.
|
|
rem dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\WinPE-Scripting.cab" /logpath:"dism.log"
|
|
rem dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\en-us\WinPE-Scripting_en-us.cab" /logpath:"dism.log"
|
|
|
|
rem rem Install WinPE-WMI, WinPE-NetFX, and WinPE-Scripting before you install WinPE-PowerShell.
|
|
rem dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\WinPE-PowerShell.cab" /logpath:"dism.log"
|
|
rem dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\en-us\WinPE-PowerShell_en-us.cab" /logpath:"dism.log"
|
|
|
|
rem rem Install WinPE-WMI, WinPE-NetFX, WinPE-Scripting, and WinPE-PowerShell before you install WinPE-DismCmdlets.
|
|
rem dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\WinPE-DismCmdlets.cab" /logpath:"dism.log"
|
|
rem dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\en-us\WinPE-DismCmdlets_en-us.cab" /logpath:"dism.log"
|
|
|
|
rem rem Install WinPE-WMI, WinPE-NetFX, WinPE-Scripting, and WinPE-PowerShell before you install WinPE-SecureBootCmdlets.
|
|
rem rem dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\WinPE-SecureBootCmdlets.cab" /logpath:"dism.log"
|
|
|
|
rem rem Install WinPE-WMI, WinPE-NetFX, WinPE-Scripting, and WinPE-PowerShell before you install WinPE-StorageWMI.
|
|
rem dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\WinPE-StorageWMI.cab" /logpath:"dism.log"
|
|
rem dism /add-package /image:"!mount!" /packagepath:"!winpe_ocs!\en-us\WinPE-StorageWMI_en-us.cab" /logpath:"dism.log"
|
|
|
|
rem Add Drivers
|
|
REM dism /add-driver /image:"!mount!" /driver:"!drivers!" /recurse /logpath:"dism.log"
|
|
|
|
rem Force RamDisk size to try and avoid capture-image errors
|
|
dism /image:"!mount!" /set-scratchspace:512
|
|
|
|
rem Add WK Stuff
|
|
del "!wd!\WK\Scripts\WK.log"
|
|
mkdir "!mount!\WK"
|
|
robocopy /s /r:3 /w:0 "!wd!\WK\!arch!" "!mount!\WK"
|
|
mkdir "!mount!\WK\Scripts"
|
|
robocopy /s /r:3 /w:0 "!wd!\Scripts" "!mount!\WK\Scripts"
|
|
|
|
rem Add System32 Stuff
|
|
copy /y "!wd!\System32\menu.cmd" "!mount!\Windows\System32\menu.cmd"
|
|
copy /y "!wd!\System32\Winpeshl.ini" "!mount!\Windows\System32\Winpeshl.ini"
|
|
|
|
rem Background
|
|
takeown /f "!mount!\Windows\System32\winpe.jpg" /a
|
|
icacls "!mount!\Windows\System32\winpe.jpg" /grant administrators:F
|
|
copy /y "!wd!\System32\winpe.jpg" "!mount!\Windows\System32\winpe.jpg"
|
|
copy /y "!wd!\System32\winpe.jpg" "!mount!\WK\ConEmu\ConEmu.jpg"
|
|
|
|
rem Registry Edits
|
|
reg load HKLM\WinPE-SW "!mount!\Windows\System32\config\SOFTWARE"
|
|
reg load HKLM\WinPE-SYS "!mount!\Windows\System32\config\SYSTEM"
|
|
|
|
rem Add 7-Zip and Python to path
|
|
reg add "HKLM\WinPE-SYS\ControlSet001\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%%SystemRoot%%\system32;%%SystemRoot%%;%%SystemRoot%%\System32\Wbem;%%SYSTEMROOT%%\System32\WindowsPowerShell\v1.0\;%%SystemDrive%%\WK\7-Zip;%%SystemDrive%%\WK\python;%%SystemDrive%%\WK\wimlib" /f
|
|
|
|
rem Replace Notepad
|
|
reg add "HKLM\WinPE-SW\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v Debugger /t REG_SZ /d "X:\WK\NotepadPlusPlus\notepadplusplus.exe /z" /f
|
|
|
|
rem Unload registry hives
|
|
reg unload HKLM\WinPE-SW
|
|
reg unload HKLM\WinPE-SYS
|
|
|
|
rem Unmount Image
|
|
dism /unmount-image /mountdir:"!mount!" /commit
|
|
|
|
rem Create ISO
|
|
del "wk-winpe-!iso_date!-!arch!.iso"
|
|
call makewinpemedia.cmd /iso "!pe_files!" "wk-winpe-!iso_date!-!arch!.iso"
|
|
)
|
|
goto Done
|
|
|
|
:Abort
|
|
color 4e
|
|
echo.
|
|
echo Aborted.
|
|
goto Exit
|
|
|
|
:Done
|
|
echo.
|
|
echo Done.
|
|
goto Exit
|
|
|
|
:Exit
|
|
echo.
|
|
echo Press any key to exit...
|
|
pause>nul
|
|
popd
|
|
color
|
|
endlocal |