diff --git a/setup/build_pe.cmd b/setup/build_pe.cmd
index 44903d91..e04718f4 100644
--- a/setup/build_pe.cmd
+++ b/setup/build_pe.cmd
@@ -6,10 +6,6 @@
setlocal EnableDelayedExpansion
title WizardKit: Build Tool
call :CheckFlags %*
-rem TODO: Remove warning
-echo "Windows PE build is currently under development"
-echo " Proceeding will likely result in errors so be warned"
-pause
call :CheckElevation || goto Exit
call :FindKitsRoot || goto ErrorKitNotFound
@@ -19,14 +15,8 @@ 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"
+set "script=%~dp0\pe\build_pe.ps1"
powershell -executionpolicy bypass -noprofile -file %script% || goto ErrorUnknown
goto Exit
diff --git a/setup/pe/README.md b/setup/pe/README.md
index 2b3ab464..2c70d836 100644
--- a/setup/pe/README.md
+++ b/setup/pe/README.md
@@ -1,3 +1,3 @@
# WizardKit: WinPE #
-_Under construction_
+Requires ADK for Windows 10, version 2004
diff --git a/setup/pe/System32/Winpeshl.ini b/setup/pe/System32/Winpeshl.ini
deleted file mode 100644
index 9147e972..00000000
--- a/setup/pe/System32/Winpeshl.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[LaunchApp]
-[LaunchApps]
-wpeinit
-wpeutil updatebootinfo
-cd /d "%SystemDrive%\.bin"
-"%SystemDrive%\.bin\ConEmu\ConEmu.exe", /cmd cmd /k cd "%SystemDrive%\.bin" & python "%SystemDrive%\.bin\Scripts\winpe_root_menu.py"
diff --git a/setup/pe/System32/menu.cmd b/setup/pe/System32/menu.cmd
deleted file mode 100644
index 76edf44a..00000000
--- a/setup/pe/System32/menu.cmd
+++ /dev/null
@@ -1,2 +0,0 @@
-@echo off
-python "%SystemDrive%\.bin\Scripts\winpe_root_menu.py"
diff --git a/setup/pe/bin/ConEmu/ConEmu.xml b/setup/pe/additions/Program Files/ConEmu/ConEmu.xml
similarity index 98%
rename from setup/pe/bin/ConEmu/ConEmu.xml
rename to setup/pe/additions/Program Files/ConEmu/ConEmu.xml
index 43160e68..8a2049b9 100644
--- a/setup/pe/bin/ConEmu/ConEmu.xml
+++ b/setup/pe/additions/Program Files/ConEmu/ConEmu.xml
@@ -1,765 +1,765 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/setup/pe/bin/NotepadPlusPlus/config.xml b/setup/pe/additions/Program Files/NotepadPlusPlus/config.xml
similarity index 98%
rename from setup/pe/bin/NotepadPlusPlus/config.xml
rename to setup/pe/additions/Program Files/NotepadPlusPlus/config.xml
index 8becc843..999daa1b 100644
--- a/setup/pe/bin/NotepadPlusPlus/config.xml
+++ b/setup/pe/additions/Program Files/NotepadPlusPlus/config.xml
@@ -1,56 +1,56 @@
-
-
-
-
-
- standard
- hide
-
- vertical
- hide
-
- no
- yes
- no
- no
- yes
- yes
- no
- yes
-
-
-
-
- yes
- yes
- 2
-
-
-
-
-
- hide
-
-
-
-
-
-
-
-
-
- yes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ standard
+ hide
+
+ vertical
+ hide
+
+ no
+ yes
+ no
+ no
+ yes
+ yes
+ no
+ yes
+
+
+
+
+ yes
+ yes
+ 2
+
+
+
+
+
+ hide
+
+
+
+
+
+
+
+
+
+ yes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/setup/pe/additions/Program Files/NotepadPlusPlus/npp.cmd b/setup/pe/additions/Program Files/NotepadPlusPlus/npp.cmd
new file mode 100644
index 00000000..f3817e41
--- /dev/null
+++ b/setup/pe/additions/Program Files/NotepadPlusPlus/npp.cmd
@@ -0,0 +1,3 @@
+@echo off
+
+start "" "%SystemDrive%\Program Files\NotepadPlusPlus\notepad++.exe" %2 %3 %4 %5 %6 %7 %8 %9
\ No newline at end of file
diff --git a/setup/pe/bin/NotepadPlusPlus/stylers.model.xml b/setup/pe/additions/Program Files/NotepadPlusPlus/stylers.model.xml
similarity index 99%
rename from setup/pe/bin/NotepadPlusPlus/stylers.model.xml
rename to setup/pe/additions/Program Files/NotepadPlusPlus/stylers.model.xml
index a93f074b..17235271 100644
--- a/setup/pe/bin/NotepadPlusPlus/stylers.model.xml
+++ b/setup/pe/additions/Program Files/NotepadPlusPlus/stylers.model.xml
@@ -1,1371 +1,1371 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/setup/pe/additions/Windows/System32/Winpeshl.ini b/setup/pe/additions/Windows/System32/Winpeshl.ini
new file mode 100644
index 00000000..b983e2c7
--- /dev/null
+++ b/setup/pe/additions/Windows/System32/Winpeshl.ini
@@ -0,0 +1,6 @@
+[LaunchApp]
+[LaunchApps]
+wpeinit
+wpeutil InitializeNetwork
+wpeutil UpdateBootInfo
+"%SystemRoot%\System32\cmd.exe"
diff --git a/setup/pe/additions/Windows/System32/custom.doskey b/setup/pe/additions/Windows/System32/custom.doskey
new file mode 100644
index 00000000..57fc0442
--- /dev/null
+++ b/setup/pe/additions/Windows/System32/custom.doskey
@@ -0,0 +1,4 @@
+poweroff=wpeutil shutdown
+reboot=wpeutil reboot
+restart=wpeutil reboot
+shutdown=wpeutil shutdown
\ No newline at end of file
diff --git a/setup/pe/bin/CPU-Z/cpuz.ini b/setup/pe/bin/CPU-Z/cpuz.ini
deleted file mode 100644
index 13a2674a..00000000
--- a/setup/pe/bin/CPU-Z/cpuz.ini
+++ /dev/null
@@ -1,20 +0,0 @@
-[CPU-Z]
-VERSION=1.7.7.0
-TextFontName=
-TextFontSize=14
-TextFontColor=000080
-LabelFontName=
-LabelFontSize=14
-ACPI=1
-PCI=1
-MaxPCIBus=256
-DMI=1
-Sensor=1
-SMBus=1
-Display=1
-UseDisplayAPI=1
-BusClock=1
-Chipset=1
-SPD=1
-XOC=0
-CheckUpdates=0
diff --git a/setup/pe/bin/HWiNFO/HWiNFO.INI b/setup/pe/bin/HWiNFO/HWiNFO.INI
deleted file mode 100644
index 24a5d535..00000000
--- a/setup/pe/bin/HWiNFO/HWiNFO.INI
+++ /dev/null
@@ -1,671 +0,0 @@
-[Benchmark_CPU]
-Intel Pentium-100=707
-Intel Pentium-120/Notebook=835
-Intel Pentium-166/QDI=1380
-Cyrix 6x86MX-PR300=1411
-AMD-K6-166/QDI=1482
-Intel Pentium MMX-200=1484
-Cyrix MII-PR333=1518
-Intel Mobile Pentium MMX-233=1642
-Intel Pentium Pro-166 Dual CPU=1679
-AMD-K6-200/DTK=1777
-AMD-K6-200/QDI=1778
-Intel Pentium Pro-200=1944
-AMD-K6-233/DTK=2067
-Intel P2-233/Siemens=2350
-VIA Cyrix III 533/133=2362
-Intel Celeron-266/BXmaster=2586
-Intel P2-266/Siemens=2603
-AMD-K6-2-300/PCChips M577=2655
-Intel Celeron 300=2883
-Intel Celeron-300/PCChips=2922
-AMD-K6-2-350/FIC=3092
-AMD-K6-III-400=3524
-AMD-K6-III-400/FIC VA-503A=3557
-Intel Celeron-366/BXmaster=3718
-Intel P2-400/Siemens=3886
-Intel Celeron-400/BXmaster=3890
-AMD-K6-2-450/FIC=3964
-AMD-K6-III-448/FIC VA-503A=3975
-AMD-K6-III-450=3978
-Intel Mobile P2-400/Scenic=4047
-Intel Celeron-413/BXmaster=4175
-Intel Celeron-433=4219
-Intel P3-450/CC820=4363
-Intel P3-450/Siemens=4372
-Intel Celeron-450=4555
-Intel Celeron-300A@467=4686
-Intel Celeron-466/BXmaster=4789
-Intel P3-500/GA-6BXDS=5021
-Intel Pentium III Xeon-550=5299
-Intel Celeron-525/BXmaster=5314
-Intel P3-550/Siemens=5543
-Intel Celeron-550/BXmaster=5579
-Intel Celeron-575/BXmaster=5845
-Intel Celeron-616/BXmaster=5999
-Intel P3-617/GA-BX2000=6241
-AMD Athlon-600/AMD-750=6303
-AMD Duron-600/KT133=6436
-Intel P3-650/BX=6497
-AMD Athlon-650/KX133=6749
-AMD Duron-650/KT133=6971
-Intel P3-700/BX=7013
-AMD Athlon-700/KX133=7185
-AMD Duron-700/KT133=7507
-Intel Celeron-815/BXmaster=7985
-AMD Athlon-750/KT133=8085
-AMD Athlon-800/AMD-750=8286
-AMD Duron-800/KT133=8580
-Intel P3-650@870/BX=8675
-AMD Duron-850/KT133=9120
-Intel P3-650@917/BX=9175
-AMD Duron-900/KT133=9654
-AMD Duron-928 (9x103)=9952
-Intel Celeron-566@1010=10115
-VIA Antaur-1000=6108
-VIA C3-1333=7601
-AMD Duron-950/KT133=10190
-AMD Athlon-1000/KT133=10734
-AMD Athlon-1200/KT133=12949
-AMD Athlon XP 1500+/KT133=14297
-AMD Athlon XP 2000+/KT133A=17691
-AMD Athlon XP 2200+/KT133A=19490
-AMD Athlon XP-M 2500+/KM400=19590
-AMD Athlon XP-M 3000+/SiS748=23391
-Intel P3-1000/i815=10381
-Intel P4-1600=6636
-Intel P4-1800=7445
-Intel P4-2000=8272
-Intel P4-2500=11051
-Intel Pentium-M ULV-1000=10515
-Intel Pentium-M-1300=13590
-Intel Pentium-M-1600=16856
-Intel Pentium-M 735=16958
-Intel Pentium-M 755=20008
-Intel Pentium-M 770=21163
-Intel P4-2800(noHT)/i875P=12399
-Intel P4-3066(noHT)/i845PE=13479
-Intel P4-3000E(noHT)/i915P=22136
-Intel P4-3000 530 (HT)=34013
-Intel P4-3200E(noHT)/i875P=23446
-Intel P4-3600E(noHT)/i925X=26424
-Intel Xeon-3800(HT)=55028
-AMD Athlon64 3200+=23814
-AMD Athlon64 3800+=28731
-AMD Athlon64 FX-53=28727
-AMD Opteron 248=25920
-AMD Turion64 ML-34+=18520
-AMD Turion64 X2 TL-60=47697
-AMD Athlon 64 X2 4400+=52867
-Intel Core Duo T2600 (1core)=20293
-Intel Core Duo T2600 (2core)=40849
-Intel Core 2 Duo E6700=51765
-Intel Core 2 Duo T7400=53238
-Transmeta Crusoe TM5800-1000=6382
-2xIntel Xeon 5150/5000P=131832
-4xIntel Xeon MP 7040=180052
-Intel Core 2 Extreme QX6700=129908
-AMD Phenom 9500=103687
-Intel Atom 230=15438
-Intel Core i5-520M=94834
-Intel Core i7-860=180329
-Intel Core i7-820QM=123279
-Intel Core i7-980X=347501
-Intel Core i5-2520M=111448
-Intel Core i7-3820=265424
-
-[Benchmark_FPU]
-Intel Pentium-100=1109
-VIA Cyrix III 533/133=1327
-Intel Pentium 120/Notebook=1350
-Intel Pentium Pro-166 Dual CPU=1663
-Intel Pentium Pro-200=1934
-Cyrix 6x86MX-PR300=2304
-Intel P2-233/Siemens=2323
-AMD-K6-166/QDI=2533
-Cyrix MII-PR333=2585
-Intel Celeron-266/BXmaster=2630
-Intel Mobile Pentium MMX-233=2647
-Intel P2-266/Siemens=2662
-Intel Celeron-300=2862
-AMD-K6-200/DTK=2999
-AMD-K6-200/QDI=3041
-AMD-K6-233/DTK=3492
-Intel Celeron-366/BXmaster=3650
-Intel P2-400/Siemens=3968
-Intel Celeron-400/BXmaster=3972
-Intel Mobile P2-400/Scenic=3973
-Intel Celeron-413/BXmaster=4097
-Intel Celeron-433=4304
-Intel P3-450/CC820=4444
-Intel P3-450/Siemens=4452
-Intel Celeron-450=4472
-Intel Celeron-300A@467=4599
-AMD-K6-2-300/PCChips M577=4605
-Intel Celeron-466/BXmaster=4628
-Intel P3-500/GA-6BXDS=4958
-Intel Celeron-525/BXmaster=5215
-AMD-K6-2-350/FIC=5368
-Intel Pentium III Xeon-550=5417
-Intel P3-550/Siemens=5440
-Intel Celeron-550/BXmaster=5477
-Intel Celeron-575/BXmaster=5738
-Intel Celeron-616/BXmaster=5897
-Intel P3-617/GA-BX2000=6114
-AMD-K6-III-400/FIC VA-503A=6166
-AMD-K6-III-400=6169
-Intel P3-650/BX=6446
-AMD-K6-2-450/FIC=6876
-AMD-K6-III-448/FIC VA-503A=6893
-AMD-K6-III-450=6895
-Intel P3-700/BX=6942
-Intel Celeron-815/BXmaster=7799
-Intel P3-650@870/BX=8614
-Intel P3-650@917/BX=9080
-VIA C3-1333=3160
-AMD Duron-600/KT133=9132
-AMD Athlon-600/AMD-750=9231
-AMD Athlon-650/KX133=9888
-Intel Celeron-566@1010=9977
-AMD Athlon-700/KX133=10527
-AMD Athlon-750/KT133=11457
-AMD Athlon-800/AMD-750=12149
-AMD Duron-850/KT133=12954
-AMD Duron-900/KT133=13712
-AMD Duron-928 (9x103)=14150
-AMD Duron-950/KT133=14479
-AMD Athlon-1000/KT133=15252
-AMD Athlon-1200/KT133=18378
-AMD Athlon XP 1500+/KT133=20757
-AMD Athlon XP 1800+=23375
-AMD Athlon XP 2000+/KT133A=25693
-AMD Athlon XP 2200+/KT133A=28296
-AMD Athlon XP-M 2500+/KM400=28877
-AMD Athlon XP-M 3000+/SiS748=34104
-Intel P3-1000/i815=9813
-Intel P4-1600=3282
-Intel P4-1800=3833
-Intel P4-2000=4256
-Intel P4-2500=6020
-Intel Pentium-M ULV-1000=8547
-Intel Pentium-M-1300=11089
-Intel Pentium-M-1600=13614
-Intel Pentium-M 735=14211
-Intel Pentium-M 755=16772
-Intel Pentium-M 770=17807
-Intel P4-2800(noHT)/i875P=6799
-Intel P4-3066(noHT)/i845PE=7396
-Intel P4-3000 530 (HT)=9220
-Intel P4-3200E(noHT)/i875P=6578
-Intel P4-3600E(noHT)/i925X=8163
-Intel Xeon-3800(HT)=17241
-AMD Athlon64 3200+=31194
-AMD Athlon64 3800+=37379
-AMD Athlon64 FX-53=37426
-AMD Opteron 248=34115
-AMD Turion64 ML-34+=28056
-AMD Turion64 X2 TL-60=62143
-AMD Athlon 64 X2 4400+=68974
-Intel Core Duo T2600 (1core)=16967
-Intel Core Duo T2600 (2core)=34039
-Intel Core 2 Duo E6600=36031
-Intel Core 2 Duo E6700=40075
-Intel Core 2 Duo T7400=32659
-Transmeta Crusoe TM5800-1000=4251
-2xIntel Xeon 5150/5000P=80725
-4xIntel Xeon MP 7040=54379
-Intel Core 2 Extreme QX6700=80338
-AMD Phenom 9500=133430
-Intel Atom 230=10769
-Intel Core i5-520M=60634
-Intel Core i7-860=131820
-Intel Core i7-820QM=90751
-Intel Core i7-980X=215620
-Intel Core i5-2520M=55354
-Intel Core i7-3820=130252
-
-[Benchmark_MMX]
-AMD-K6-166/QDI=909
-AMD-K6-200/QDI=1070
-Intel P2-266/440LX=1339
-VIA Cyrix III 533/133=1815
-Intel Pentium MMX-200=2041
-Intel Mobile Pentium MMX-233=2363
-Intel P2-233/440BX=2390
-Intel Celeron-300=2931
-Intel Celeron-366=3742
-Intel Celeron-450=4602
-Intel Celeron-300A@467=4737
-Intel P3-500/GA-6BXDS=5009
-AMD Duron-600/KT133=5454
-Intel P3-550/Siemens=5513
-AMD Athlon-650/KX133=5906
-AMD Athlon-700/Abit KA7=6356
-Intel P3-650/BX=6490
-AMD Duron-750/KT133=6823
-AMD Athlon-750/KT133=6846
-Intel P3-700/BX=7025
-AMD Duron-800/KT133=7277
-AMD Duron-850/KT133=7738
-AMD Duron-900/KT133=8192
-AMD Duron-928 (9x103)=8448
-AMD Duron-950/KT133=8645
-Intel P3-650@870/BX=8706
-AMD Athlon-1000/KT133=9110
-Intel P3-650@917/BX=9173
-Intel Celeron-566@1010=10080
-VIA C3-1333=6063
-AMD Athlon-1200/KT133=10998
-AMD Athlon XP 1500+/KT133=12125
-AMD Athlon XP 1800+=13642
-AMD Athlon XP 2000+/KT133A=15013
-AMD Athlon XP 2200+/KT133A=16516
-AMD Athlon XP-M 2500+/KM400=16858
-AMD Athlon XP-M 3000+/SiS748=20040
-Intel P3-1000=9903
-Intel P4-1600=14468
-Intel P4-1800=16319
-Intel P4-2000=18140
-Intel P4-2500=22681
-Intel Pentium-M ULV-1000=9937
-Intel Pentium-M-1300=12865
-Intel Pentium-M-1600=15835
-Intel Pentium-M 735=16839
-Intel Pentium-M 755=19869
-Intel Pentium-M 770=21149
-Intel P4-2800(noHT)/i875P=24478
-Intel P4-3066(noHT)/i845PE=26437
-Intel P4-3000 530 (HT)=27352
-Intel P4-3200E(noHT)/i875P=22592
-Intel P4-3600E(noHT)/i925X=25314
-Intel Xeon-3800(HT)=53268
-AMD Athlon64 3200+=18228
-AMD Athlon64 3800+=21859
-AMD Athlon64 FX-53=21856
-AMD Opteron 248=19926
-AMD Turion64 ML-34+=16403
-AMD Turion64 X2 TL-60=36363
-AMD Athlon 64 X2 4400+=40282
-Intel Core Duo T2600 (1core)=21423
-Intel Core Duo T2600 (2core)=42912
-Intel Core 2 Duo E6600=74154
-Intel Core 2 Duo E6700=82312
-Intel Core 2 Duo T7400=67321
-Transmeta Crusoe TM5800-1000=5272
-2xIntel Xeon 5150/5000P=51186
-4xIntel Xeon MP 7040=83086
-Intel Core 2 Extreme QX6700=165067
-AMD Phenom 9500=80202
-Intel Atom 230=14545
-Intel Core i5-520M=80822
-Intel Core i7-860=171336
-Intel Core i7-820QM=115063
-Intel Core i7-980X=261051
-Intel Core i5-2520M=81444
-Intel Core i7-3820=160178
-
-[Benchmark_Memory]
-Intel Pentium-100/FPM=69
-Intel Pentium Pro-166 Dual CPU=78
-AMD-K6-166/QDI/EDO=85
-Intel Pentium MMX-200/EDO=92
-AMD-K6-200/QDI/EDO=93
-Intel Pentium MMX-233/PC66=101
-Intel P2-233/440BX/PC66=111
-VIA Cyrix III 533/133=114
-Intel P2-266/440BX/PC66=117
-AMD-K6-III-400=135
-Intel Celeron-366/PC66=163
-AMD Duron-600/KT133=173
-AMD Athlon-700/KX133/PC133=202
-AMD Athlon-650/KX133=205
-Intel P3-500/GA-6BXDS/PC100=209
-Intel P3-550/Siemens/PC100=215
-Intel Celeron-300A@467/PC66=209
-Intel Celeron-300/PC66=146
-Intel P3-650/BX/PC100=238
-Intel P3-700/BX/PC100=211
-AMD Athlon-750/KT133/PC133=214
-AMD Duron-750/KT133=263
-Intel Celeron-566@1010=273
-VIA C3-1333/CN400=223
-AMD Duron-950/KT133=275
-AMD Duron-928 (9x103)/KT133=292
-AMD Duron-1100/SiS745/DDR333=477
-AMD Athlon XP-M 2500+/DDR333=548
-Intel P3-650@917/FSB140=310
-Intel P3-1000/PC133=218
-Intel P4-1600/i850=1115
-Intel P4-2000/i850/PC800=1245
-Intel P4-1800/i845G/DDR266=867
-Intel P4-2500/i845/DDR266=757
-Intel Pentium-M-1600/DDR266=830
-Intel Pentium-M 735/855PM/DDR400=971
-Intel P4-3066/i845PE/DDR266=1028
-Intel P4-2800/i875P/2Ch/DDR400=2056
-Intel P4-3200E/i875P/2Ch/DDR400=2342
-Intel P4-3600E/i915P/DDR2-533=2556
-Intel P4-3600E/i925X/DDR2-533=2844
-Intel Xeon-3800/E7525/DDR2-400=1635
-AMD Athlon64 3200+/1Ch/DDR400=1266
-AMD Athlon64 3800+/2Ch/DDR400=2375
-AMD Athlon64 FX-53/2Ch/DDR400=2166
-AMD Opteron 248/DDR266=947
-AMD Turion64 ML-34+=1071
-Intel Core 2 Duo E6700/DDR2-800=2894
-Transmeta Crusoe TM5800-1000=337
-2xIntel Xeon 5150/5000P/DDR2-667F=2919
-4xIntel Xeon MP 7040=1721
-AMD Phenom 9500=1795
-Intel Atom 230/945/DDR2-800=1682
-Intel Core i5-520M=5235
-Intel Core i7-860/DDR3-667/2CH=6506
-Intel Core i7-820QM=5424
-Intel Core i7-980X=9343
-Intel Core i7-3820/DDR3-1600/4CH=13366
-
-[Benchmark_Disk_ReadBurst]
-Fujitsu MPB3043ATU E/PIO=4.03
-Seagate ST38410A/PIO=4.33
-Maxtor 91021U2/PIO=4.61
-Maxtor 92041U4/PIO=4.82
-Quantum Fireball_TM2110S300X=6.83
-SEAGATE ST51080N=7.92
-Seagate ST31277A=8,37
-IBM DCAS-32160 S65A=8.65
-QUANTUM FIREBALL ST3.2A/PIO=14.74
-Seagate ST39102LW Cheetah=30.05
-IBM DJNA-370910/UDMA66=15.27
-Seagate ST34321A/UDMA33=21.03
-Seagate ST38421A=23.82
-Seagate ST34310A=23.88
-QUANTUM FIREBALL SE2.1A=26.43
-Maxtor 91021U2/UDMA33=29.13
-Maxtor 54098U8/UDMA33=29.5
-IBM DTTA-350430=29.7
-IBM-DPTA-371360=29.86
-Seagate ST320420A=47.3
-IBM-DJNA-371350=27.87
-IBM-DTLA-307030/ATA100=82.22
-SEAGATE Cheetah X15/RAID=137.08
-IBM Deskstar 60GXP/ATA100=81.98
-MAXTOR 4K020H1/ATA100=84.58
-Seagate ST317221A/UDMA66=42.03
-Maxtor 6E040L0=79.36
-Seagate ST380021A/ATA100=73.11
-HITACHI DK23EA-40=80.04
-WDC WD800JB/ATA100=85.71
-TOSHIBA MK4019GAX=83.60
-Maxtor MaxLine III SATA+NCQ=119.96
-ST312002 6AS=106.61
-Maxtor Atlas 10K5 73SCA=145.86
-WDC WD3200YS-01PGB0=167.33
-Hitachi HTE726040M9AT00=84.61
-Seagate ST3160827AS=120.88
-WDC WD5000AADS-00S9B0=122.87
-Hitachi HTS545032B9A=161.10
-Seagate ST1000DM003-9YN1=282.43
-
-[Benchmark_Disk_ReadRandom]
-Hitachi HTE726040M9AT00=22.82
-Maxtor Atlas 10K5 73SCA=31.61
-Seagate ST3160827AS=32.26
-FUJITSU MHV2080BH=17.79
-TOSHIBA MK8034GSX=18.12
-ST916082 1AS=22.27
-WDC WD5000AADS-00S9B0=24.58
-Hitachi HTS545032B9A=24.72
-Seagate ST1000DM003-9YN1=37.09
-
-[Benchmark_Disk_RandomAccess]
-SEAGATE ST51080N=20.96
-Quantum Fireball_TM2110S300X=20.74
-Seagate ST34321A/UDMA33=17.21
-Seagate ST38410A/PIO=17.17
-Seagate ST31277A=16.75
-Fujitsu MPB3043ATU E=16.18
-IBM DTTA-350430=16.5
-IBM DCAS-32160 S65A=15.95
-Maxtor 92041U4/PIO=15.81
-Seagate ST34310A=15.56
-Maxtor 91021U2/PIO=15.66
-Seagate ST38421A=15.71
-QUANTUM FIREBALL ST3.2A=15.50
-QUANTUM FIREBALL SE2.1A=14.94
-Maxtor 54098U8/UDMA33=13.77
-Seagate ST320420A=12.57
-IBM DJNA-370910/UDMA66=12.10
-Seagate ST39102LW Cheetah=8.78
-IBM-DPTA-371360=13.37
-IBM-DJNA-371350=13.38
-IBM-DTLA-307030/ATA100=12.44
-IBM-DTLA-307030/ATA100+AAM=22.34
-SEAGATE Cheetah X15/RAID=5.65
-IBM Deskstar 60GXP=12.70
-MAXTOR 4K020H1/ATA100=19.12
-Seagate ST317221A/UDMA66=16.60
-Maxtor 6E040L0=14.52
-Seagate ST380021A/ATA100=14.58
-HITACHI DK23EA-40=19.40
-WDC WD800JB/ATA100=13.61
-TOSHIBA MK4019GAX=18.61
-Maxtor MaxLine III SATA+NCQ=15.82
-ST312002 6AS=12.51
-Maxtor Atlas 10K5 73SCA=10.16
-WDC WD3200YS-01PGB0=13.16
-Hitachi HTE726040M9AT00=12.90
-Seagate ST3160827AS=11.65
-Seagate ST380215A=14.82
-WDC WD5000AADS-00S9B0=17.37
-Hitachi HTS545032B9A=22.16
-Seagate ST1000DM003-9YN1=15.53
-
-[LogfileSettings]
-COMP=1
-COMP_SP=1
-COMP_Name=1
-COMP_Os=1
-COMP_User=0
-CPU=1
-CPU_Name=1
-CPU_ID=1
-CPU_Vendor=1
-CPU_Stepping=1
-CPU_Type=1
-CPU_BrandID=1
-CPU_PN=1
-CPU_Clock=1
-CPU_MaxFreq=1
-CPU_CacheL1=1
-CPU_CacheL2=1
-CPU_TLB_I=1
-CPU_TLB_D=1
-CPU_Features=1
-CPU_PIROM=1
-MEM=1
-MEM_TotalSize=1
-MEM_Timing=1
-MEM_Row=1
-MEM_Row_Size=1
-MEM_Row_Type=1
-MEM_Row_Speed=1
-MEM_Row_Model=1
-MEM_Row_ECC=1
-MEM_Row_Date=1
-MEM_Row_SN=1
-MEM_Row_Cfg=1
-MEM_Row_Latency=1
-MEM_Row_Features=1
-MEM_Row_iFeatures=1
-BUS=1
-BUS_PCI=1
-BUS_PCI_DevName=1
-BUS_PCI_DevNumber=1
-BUS_PCI_Resources=1
-BUS_PCI_Features=1
-BUS_PCI_DevSpecific=1
-BUS_PCIX_Features=1
-BUS_PCIe_Features=1
-BUS_PCI_DRV_INFO=1
-BUS_EISA=1
-DMI=1
-DMI_0=1
-DMI_1=1
-DMI_2=1
-DMI_3=1
-DMI_4=1
-DMI_5=1
-DMI_6=1
-DMI_7=1
-DMI_8=1
-DMI_9=1
-DMI_10=1
-DMI_11=1
-DMI_12=1
-DMI_13=1
-DMI_14=1
-DMI_15=1
-DMI_16=1
-DMI_17=1
-DMI_18=1
-DMI_19=1
-DMI_20=1
-DMI_21=1
-DMI_22=1
-DMI_23=1
-DMI_24=1
-DMI_25=1
-DMI_26=1
-DMI_27=1
-DMI_28=1
-DMI_29=1
-DMI_30=1
-DMI_31=1
-DMI_32=1
-DMI_33=1
-DMI_34=1
-DMI_35=1
-DMI_36=1
-DMI_37=1
-DMI_38=1
-DMI_39=1
-DMI_129=1
-DMI_130=1
-DMI_131=1
-VIDEO=1
-VIDEO_Chipset=1
-VIDEO_Memory=1
-VIDEO_Card=1
-VIDEO_Bus=1
-VIDEO_RAMDAC=1
-VIDEO_BIOSver=1
-VIDEO_Clock=1
-VIDEO_HWID=1
-VIDEO_DRV_INFO=1
-VIDEO_DirectX=1
-MON=1
-MON_Name=1
-MON_SN=1
-MON_Date=1
-MON_Dimensions=1
-MON_DisplayType=1
-MON_InputSignal=1
-MON_Gamma=1
-MON_DPMSinput=1
-MON_DPMSmodes=1
-MOBO=1
-MOBO_Model=1
-MOBO_Chipset=1
-MOBO_CompName=1
-MOBO_MachineType=1
-MOBO_Slots=1
-MOBO_BIOS_Manuf=1
-MOBO_BIOS_Date=1
-MOBO_PNP_Devs=1
-MOBO_PNP_Nodes=1
-MOBO_ACPI_Devs=1
-MOBO_ACPI_Enum=1
-DRIVE=1
-DRIVE_IDE=1
-DRIVE_IDE_Ctrller=1
-DRIVE_IDE_Channel=1
-DRIVE_IDE_Model=1
-DRIVE_IDE_Rev=1
-DRIVE_IDE_SN=1
-DRIVE_IDE_Capacity=1
-DRIVE_IDE_Geometry=1
-DRIVE_IDE_Cache=1
-DRIVE_IDE_Xfer=1
-DRIVE_IDE_BasicCapab=1
-DRIVE_IDE_ATA2Capab=1
-DRIVE_IDE_SMART=1
-DRIVE_SCSI=1
-DRIVE_SCSI_ID=1
-DRIVE_SCSI_Desc=1
-DRIVE_SCSI_Class=1
-DRIVE_Floppy=1
-NETWORK=1
-NETWORK_HWID=1
-NETWORK_DRV_INFO=1
-AUDIO=1
-AUDIO_DRV_INFO=1
-AUDIO_HWID=1
-PORTS=1
-BUS_USB=1
-BUS_USB_DRV_INFO=1
-BATTERY=1
-SENSORS=1
-
-[Settings]
-HighestIdeAddress=0
-AcpiEnum=0
-SWSMI=1
-DebugMode=0
-SMBus=1
-TempScale=C
-AC97CodecID=1
-SkipProblematicPciDev=0
-GPUI2C=1
-LPC=1
-DefReportType=5
-TPM=0
-PCIdirect=1
-OpenSystemSummary=0
-RememberPreferences=1
-LargeFonts=0
-OpenSensors=0
-MinimalizeMainWnd=0
-MinimalizeSensors=0
-PersistentDriver=0
-UseHPET=1
-AutoUpdate=0
-GPUI2CNVAPI=1
-GPUI2CADL=0
-SensorsOnly=0
-AcpiEval=1
-CpuClkFromBusClk=1
-BusClkPolling=1
-SMBusAdrExclude=11111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000
-GPUI2CBusExclude=00000000
-SensorsSM=1
-IoctlKernel=0
-SummaryOnly=0
-WakeGPUs=1
-KeepTheme=0
-FlushBuffers=1
-iMEsupport=1
-GPUI2Ccaching=1
-CSMI_SAS_Support=1
-DebugDirect=1
-MinimalizeSensorsClose=0
-WakeGPUsExt=0
-PollSleepingGPUs=0
-ShowWelcomeAndProgress=1
-EnablePchTherm=0
-ReorderGPUs=1
-NvmlSupport=1
-DecimalSeparator=.
-ThousandsSeparator=,
-CsvSeparator=,
-MinimizeGraphs=1
-TextButtons=0
diff --git a/setup/pe/bin/NotepadPlusPlus/npp.cmd b/setup/pe/bin/NotepadPlusPlus/npp.cmd
deleted file mode 100644
index 6996dd3c..00000000
--- a/setup/pe/bin/NotepadPlusPlus/npp.cmd
+++ /dev/null
@@ -1,3 +0,0 @@
-@echo off
-
-start "" %SystemDrive%\.bin\NotepadPlusPlus\notepadplusplus.exe %2 %3 %4 %5 %6 %7 %8 %9
\ No newline at end of file
diff --git a/setup/pe/bin/Q-Dir/Q-Dir.ini b/setup/pe/bin/Q-Dir/Q-Dir.ini
deleted file mode 100644
index f0daf623..00000000
--- a/setup/pe/bin/Q-Dir/Q-Dir.ini
+++ /dev/null
@@ -1,68 +0,0 @@
-[Start]
-m_lang_id=1
-QDir_Id=0
-useColorStart=1
-Als=12
-designe_mode=2
-showCmd=3
-StartCrash=0
-default_tab=
-Max=1
-show_ext_in_type=1
-title_info=1
-adresbar_style=1
-useTreeColor=1
-useColor=1
-[Favoriten]
-Ordner=.\Favoriten\
-[Q]
-Link=.\Favoriten\Quick-Link\
-[Q-Dir]
-Lizenz=1
-
-
-
-
-
-[Vorschau]
-Filter=*.avi;*.bmp;*.gif;*.ico;*.jpeg;*.jpg;*.mp*;*.pdf;*.png;*.wm*;
-[Filter2]
-0=#Hidden=1=-1=1=1=-1=0
-1=*.zip;*.rar;*.gz;*.7z;=1=00AA00=-1=1=-1=0
-2=*.mp*;*.avi;*.wma;=1=DD0058=-1=1=-1=0
-3=#DIR=1=008800=-1=1=-1=0
-4=*.jpg;*.jpeg;*.png,*.gif;*.bmp;*.ico=1=BB00BB=-1=1=-1=0
-5=*.html;*.htm;*.url=1=456789=-1=1=-1=0
-6=*.pl;*.cgi;*.php;*.pdf;*.doc;*.rtf;*.xls=1=BB8844=-1=1=-1=0
-7=*.cpp;*.hpp;*.h=1=DD0058=-1=1=-1=0
-8=*.exe;*.dll;*.bat=1=FF0000=-1=1=-1=0
-9=*=1=0000BB=-1=1=-1=0
-10=#BG=1=-1=-1=1=-1=0
-11=#BG-A=1=-1=-1=1=-1=0
-[Ordner]
-Filter=
-[Column_OS_6.1_Ploder1]
-Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
-Spatlen_291=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%00%00%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%EE%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0E%00%00%00%69%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%91%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0C%00%00%00%46%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%00%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-563719693|772
-[Column_OS_6.1_Ploder2]
-Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
-[Column_OS_6.1_Ploder3]
-Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
-[Column_OS_6.1_Ploder4]
-Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
-[Programs_State]
-Disable=0
-[Quick-Links]
-WK=%systemdrive%/WK
-[Options]
-Start=7
-[X-Size]
-mode=1
-dig=0
-fld_size=1
-ths_sep=1
-type=0
-precent=1
-ff_cnt=1
-block_no_focus=1
-nosort_fld_size=1
diff --git a/setup/pe/build_pe.ps1 b/setup/pe/build_pe.ps1
index 2b205093..c79c9c51 100644
--- a/setup/pe/build_pe.ps1
+++ b/setup/pe/build_pe.ps1
@@ -6,23 +6,44 @@
if (Test-Path Env:\DEBUG) {
Set-PSDebug -Trace 1
}
-$Host.UI.RawUI.WindowTitle = "Wizard Kit: Windows PE Build Tool"
-$WD = $(Split-Path $MyInvocation.MyCommand.Path)
-$Bin = (Get-Item $WD -Force).Parent.FullName
-$Root = (Get-Item $Bin -Force).Parent.FullName
-$Build = "$Root\BUILD_PE"
-$LogDir = "$Build\Logs"
-$Temp = "$Build\Temp"
+try {
+ Import-Module -Name $Env:DISMRoot -ErrorAction "stop"
+}
+catch {
+ Write-Host -ForegroundColor "Red" "ERROR: Failed to load DISM CmdLet"
+ Abort
+}
+# Dirs
+$WorkingDir = $(Split-Path $MyInvocation.MyCommand.Path)
+$SetupDir = (Get-Item $WorkingDir -Force).Parent.FullName
+$RootDir = (Get-Item $SetupDir -Force).Parent.FullName
+$BuildDir = "$SetupDir\BUILD_PE"
+$OutDir = "$SetupDir\OUT_PE"
+$TempDir = "$BuildDir\temp"
+$MountDir = "$BuildDir\mount"
+$TargetDir = "$BuildDir\pe_files"
+# Misc
+$Arch = "amd64"
$Date = Get-Date -UFormat "%Y-%m-%d"
-$Host.UI.RawUI.BackgroundColor = "Black"
-$Host.UI.RawUI.ForegroundColor = "White"
+$DISM = "{0}\DISM.exe" -f $Env:DISMRoot
$HostSystem32 = "{0}\System32" -f $Env:SystemRoot
$HostSysWOW64 = "{0}\SysWOW64" -f $Env:SystemRoot
-$DISM = "{0}\DISM.exe" -f $Env:DISMRoot
-#Enable TLS 1.2
+$KitNameFull = (Get-Content "$RootDir\scripts\wk\cfg\main.py" | Where-Object {$_ -imatch '^KIT_NAME_FULL'}) -ireplace '.*=.(.*).$', '$1'
+$KitNameShort = (Get-Content "$RootDir\scripts\wk\cfg\main.py" | Where-Object {$_ -imatch '^KIT_NAME_SHORT'}) -ireplace '.*=.(.*).$', '$1'
+# Set up UI
+$Host.UI.RawUI.WindowTitle = "${KitNameFull}: Windows PE Build Tool"
+$Host.UI.RawUI.BackgroundColor = "Black"
+$Host.UI.RawUI.ForegroundColor = "White"
+# Enable TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
## Functions ##
+function Abort {
+ Write-Host -ForegroundColor "Red" "`nAborted."
+ WKPause "Press Enter to exit... "
+ exit
+}
+
function Ask-User ($text = "Kotaero") {
$text += " [Y/N]"
while ($true) {
@@ -37,33 +58,36 @@ function Ask-User ($text = "Kotaero") {
}
$answer
}
-function Abort {
- Write-Host -ForegroundColor "Red" "`nAborted."
- WKPause "Press Enter to exit... "
- exit
-}
-function MakeClean {
+
+function Clean-BuildDir {
$Folders = @(
- "$Build\Mount",
- "$Build\PEFiles")
- $Clean = $false
+ "$BuildDir\additions",
+ "$BuildDir\mount",
+ "$BuildDir\pe_files",
+ "$BuildDir\temp")
+
+ # WIM cleanup
+ if (Test-Path "$MountDir") {
+ try {
+ Dismount-WindowsImage -Path "$MountDir" -Discard
+ }
+ catch {
+ # Ignore
+ }
+ Start-Process -FilePath $DISM -ArgumentList @("/Cleanup-Mountpoints") -NoNewWindow -Wait
+ }
+
+ # Folders
foreach ($f in $Folders) {
if (Test-Path $f) {
- Write-Host -ForegroundColor "Yellow" ("Found: {0}" -f $f)
- $Clean = $true
- }
- }
- if (($Clean) -and (Ask-User "Delete the above folder(s)?")) {
- foreach ($f in $Folders) {
- if (Test-Path $f) {
- Remove-Item -Path $f -Recurse -Force
- }
+ Write-Host -ForegroundColor "Yellow" ("Removing: {0}" -f $f)
+ Remove-Item -Path $f -Recurse -Force
}
}
}
-function DownloadFile ($Path, $Name, $Url) {
- $OutFile = "{0}\{1}" -f $Path, $Name
+function Download-File ($Path, $Name, $Url) {
+ $OutFile = "{0}\{1}" -f $Path, $Name
Write-Host ("Downloading: $Name")
New-Item -Type Directory $Path 2>&1 | Out-Null
try {
@@ -71,10 +95,116 @@ function DownloadFile ($Path, $Name, $Url) {
}
catch {
Write-Host (" ERROR: Failed to download file." ) -ForegroundColor "Red"
- $global:DownloadErrors += 1
+ Abort
}
}
-function FindDynamicUrl ($SourcePage, $RegEx) {
+
+function Download-SourceFiles {
+ $Sources = Get-Content -Path "$WorkingDir\sources.json" | ConvertFrom-JSON
+ foreach ($s in $Sources) {
+ $Dest = "$BuildDir\downloads\{0}" -f $s.Name
+ if (Test-Path -PathType Leaf -Path "$Dest") {
+ if (Test-Hash -File $Dest -Hash $s.Hash) {
+ continue
+ }
+ # Hash didn't match
+ Remove-Item $Dest -Force
+ }
+
+ # File needs downloaded (again)
+ Download-File -Path "$BuildDir\downloads" -Name $s.Name -Url $s.Url
+
+ # Verify download
+ if ( -Not (Test-Hash -File $Dest -Hash $s.Hash)) {
+ Write-Host (" ERROR: Download failed hash check." ) -ForegroundColor "Red"
+ Abort
+ }
+ }
+}
+
+function Extract-SourceFiles {
+ $ProgramFilesPE = "$BuildDir\additions\Program Files"
+ New-Item -Type Directory $ProgramFilesPE -Force
+
+ # 7-Zip
+ Write-Host "Extracting: 7-Zip"
+ try {
+ $ArgumentList = @("/a", "$BuildDir\downloads\7z.msi", "TARGETDIR=$TempDir\7zi", "/qn")
+ Start-Process -FilePath "$HostSystem32\msiexec.exe" -ArgumentList $ArgumentList -Wait
+ New-Item -Type Directory "$ProgramFilesPE\7-Zip" 2>&1 | Out-Null
+ Move-Item "$TempDir\7zi\Files\7-Zip\7z.dll" "$ProgramFilesPE\7-Zip\7z.dll"
+ Move-Item "$TempDir\7zi\Files\7-Zip\7z.exe" "$ProgramFilesPE\7-Zip\7z.exe"
+ Move-Item "$TempDir\7zi\Files\7-Zip\License.txt" "$ProgramFilesPE\7-Zip\License.txt"
+ }
+ catch {
+ Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
+ }
+ $SevenZip = "$ProgramFilesPE\7-Zip\7z.exe"
+
+ # ConEmu
+ Write-Host "Extracting: ConEmu"
+ try {
+ $ArgumentList = @(
+ "x", "$BuildDir\downloads\ConEmu.7z", "-o`"$ProgramFilesPE`"\ConEmu",
+ "-aoa", "-bso0", "-bse0", "-bsp0",
+ "ConEmu.exe",
+ "ConEmu.map",
+ "ConEmu64.exe",
+ "ConEmu64.map",
+ "ConEmu\CmdInit.cmd",
+ "ConEmu\ConEmuC.exe",
+ "ConEmu\ConEmuC64.exe",
+ "ConEmu\ConEmuCD.dll",
+ "ConEmu\ConEmuCD64.dll",
+ "ConEmu\ConEmuHk.dll",
+ "ConEmu\ConEmuHk64.dll"
+ )
+ Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
+ }
+ catch {
+ Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
+ }
+
+ # Notepad++
+ Write-Host "Extracting: Notepad++"
+ try {
+ $ArgumentList = @(
+ "x", "$BuildDir\downloads\npp.7z", "-o`"$ProgramFilesPE`"\NotepadPlusPlus",
+ "-aoa", "-bso0", "-bse0", "-bsp0")
+ Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
+ }
+ catch {
+ Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
+ }
+
+ # NTPWEdit
+ Write-Host "Extracting: NTPWEdit"
+ try {
+ $ArgumentList = @(
+ "e", "$BuildDir\downloads\ntpwedit.zip", "-o`"$ProgramFilesPE`"\NTPWEdit",
+ "-aoa", "-bso0", "-bse0", "-bsp0",
+ "COPYING.txt", "GPL.txt", "ntpwedit64.exe")
+ Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
+ Move-Item "$ProgramFilesPE\NTPWEdit\ntpwedit64.exe" "$ProgramFilesPE\NTPWEdit\ntpwedit.exe"
+ }
+ catch {
+ Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
+ }
+
+ # wimlib
+ Write-Host "Extracting: wimlib"
+ try {
+ $ArgumentList = @(
+ "x", "$BuildDir\downloads\wimlib.zip", "-o`"$ProgramFilesPE`"\wimlib",
+ "-aoa", "-bso0", "-bse0", "-bsp0")
+ Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
+ }
+ catch {
+ Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
+ }
+}
+
+function Find-DynamicUrl ($SourcePage, $RegEx) {
# Get source page
Invoke-Webrequest -Uri $SourcePage -OutFile "tmp_page"
@@ -88,11 +218,25 @@ function FindDynamicUrl ($SourcePage, $RegEx) {
$Url | Select-Object -First 1
}
+
+function Test-Hash ($File, $Hash) {
+ Write-Host -BackgroundColor Black -ForegroundColor Cyan "Verifying ${File}..."
+ $FileHash = (Get-FileHash -Path $File -Algorithm SHA256 -ErrorAction Stop).Hash
+ return ($FileHash.ToLower() -eq $Hash)
+}
+
function WKPause ($Message = "Press Enter to continue... ") {
Write-Host $Message -NoNewLine
Read-Host
}
+## Safety Check ##
+if ($PSVersionTable.PSVersion.Major -eq 6 -and $PSVersionTable.OS -imatch "Windows 6.1") {
+ Write-Host "`nThis script doesn't support PowerShell 6.0 on Windows 7."
+ Write-Host "Press Enter to exit... " -NoNewLine
+ Abort
+}
+
## PowerShell equivalent of Python's "if __name__ == '__main__'"
# Code based on StackOverflow comments
# Question: https://stackoverflow.com/q/4693947
@@ -100,558 +244,146 @@ function WKPause ($Message = "Press Enter to continue... ") {
# Asked by: https://stackoverflow.com/users/65164/mark-mascolino
# Answer by: https://stackoverflow.com/users/696808/bacon-bits
if ($MyInvocation.InvocationName -ne ".") {
- Clear-Host
Write-Host "Wizard Kit: Windows PE Build Tool`n`n`n`n`n"
+ Push-Location "$WorkingDir"
+ New-Item -Type Directory $BuildDir 2>&1 | Out-Null
+ Clean-BuildDir
+ Copy-Item -Path "$SetupDir\pe\additions" -Destination "$BuildDir\additions" -Recurse -Force
- ## Prep ##
- try {
- Import-Module -Name $Env:DISMRoot -ErrorAction "stop"
- }
- catch {
- Write-Host -ForegroundColor "Red" "ERROR: Failed to load DISM CmdLet"
- Abort
- }
- Push-Location "$WD"
- MakeClean
- New-Item -Type Directory $Build 2>&1 | Out-Null
- New-Item -Type Directory $LogDir 2>&1 | Out-Null
-
- ## main.py ##
- if (!(Test-Path "$Build\main.py") -or (Ask-User "Replace existing main.py?")) {
- Copy-Item -Path "$Bin\Scripts\settings\main.py" -Destination "$Build\main.py" -Force
- }
- WKPause "Press Enter to open settings..."
- Start-Process "$HostSystem32\notepad.exe" -ArgumentList @("$Build\main.py") -Wait
- $KitNameFull = (Get-Content "$Build\main.py" | Where-Object {$_ -match 'FULL'}) -replace ".*'(.*)'$", '$1'
- $KitNameShort = (Get-Content "$Build\main.py" | Where-Object {$_ -match 'SHORT'}) -replace ".*'(.*)'$", '$1'
-
- if (Ask-User "Update Tools?") {
- $DownloadErrors = 0
-
- ## Download Tools ##
- $ToolSources = @(
- # 7-Zip
- @("7z-installer.msi", "https://www.7-zip.org/a/7z1900.msi"),
- @("7z-extra.7z", "https://www.7-zip.org/a/7z1900-extra.7z"),
- # Blue Screen View
- @("bluescreenview32.zip", "http://www.nirsoft.net/utils/bluescreenview.zip"),
- @("bluescreenview64.zip", "http://www.nirsoft.net/utils/bluescreenview-x64.zip"),
- # ConEmu
- @("ConEmuPack.7z", "https://github.com/Maximus5/ConEmu/releases/download/v19.03.10/ConEmuPack.190310.7z"),
- # Fast Copy
- @("fastcopy.zip", "http://ftp.vector.co.jp/71/31/2323/FastCopy363_installer.exe"),
- # HWiNFO
- @("hwinfo.zip", "http://files2.majorgeeks.com/377527622c5325acc1cb937fb149d0de922320c0/systeminfo/hwi_602.zip"),
- # Killer Network Drivers
- @(
- "killerinf.zip",
- ("https://www.killernetworking.com"+(FindDynamicUrl "https://www.killernetworking.com/killersupport/category/other-downloads" "Download Killer-Ethernet").replace('&', '&'))
- ),
- # Notepad++
- @("npp_x86.7z", "https://notepad-plus-plus.org/repository/7.x/7.6.4/npp.7.6.4.bin.minimalist.7z"),
- @("npp_amd64.7z", "https://notepad-plus-plus.org/repository/7.x/7.6.4/npp.7.6.4.bin.minimalist.x64.7z"),
- # NT Password Editor
- @("ntpwed.zip", "http://cdslow.org.ru/files/ntpwedit/ntpwed07.zip"),
- # Prime95
- @("prime95_32.zip", "http://www.mersenne.org/ftp_root/gimps/p95v294b7.win32.zip"),
- @("prime95_64.zip", "http://www.mersenne.org/ftp_root/gimps/p95v294b8.win64.zip"),
- # ProduKey
- @("produkey32.zip", "http://www.nirsoft.net/utils/produkey.zip"),
- @("produkey64.zip", "http://www.nirsoft.net/utils/produkey-x64.zip"),
- # Python
- @("python32.zip", "https://www.python.org/ftp/python/3.7.2/python-3.7.2.post1-embed-win32.zip"),
- @("python64.zip", "https://www.python.org/ftp/python/3.7.2/python-3.7.2.post1-embed-amd64.zip"),
- # Python: psutil
- @(
- "psutil64.whl",
- (FindDynamicUrl "https://pypi.org/project/psutil/" "href=.*-cp37-cp37m-win_amd64.whl")
- ),
- @(
- "psutil32.whl",
- (FindDynamicUrl "https://pypi.org/project/psutil/" "href=.*-cp37-cp37m-win32.whl")
- ),
- # Q-Dir
- @("qdir32.zip", "https://www.softwareok.com/Download/Q-Dir_Portable.zip"),
- @("qdir64.zip", "https://www.softwareok.com/Download/Q-Dir_Portable_x64.zip"),
- # TestDisk / PhotoRec
- @("testdisk32.zip", "https://www.cgsecurity.org/testdisk-7.1-WIP.win.zip"),
- @("testdisk64.zip", "https://www.cgsecurity.org/testdisk-7.1-WIP.win64.zip"),
- # VirtIO drivers
- @("virtio-win.iso", "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso"),
- # Visual C++ Runtimes
- @("vcredist_x86.exe", "https://aka.ms/vs/15/release/vc_redist.x86.exe"),
- @("vcredist_x64.exe", "https://aka.ms/vs/15/release/vc_redist.x64.exe"),
- # wimlib-imagex
- @("wimlib32.zip", "https://wimlib.net/downloads/wimlib-1.13.0-windows-i686-bin.zip"),
- @("wimlib64.zip", "https://wimlib.net/downloads/wimlib-1.13.0-windows-x86_64-bin.zip")
- )
- foreach ($Tool in $ToolSources) {
- DownloadFile -Path $Temp -Name $Tool[0] -Url $Tool[1]
- }
-
- ## Bail ##
- # If errors were encountered during downloads
- if ($DownloadErrors -gt 0) {
- Abort
- }
-
- ## Install ##
- # Visual C++ Runtimes
- Write-Host "Installing: Visual C++ Runtimes"
- $ArgumentList = @("/install", "/passive", "/norestart")
- Start-Process -FilePath "$Temp\vcredist_x86.exe" -ArgumentList $ArgumentList -Wait
- Start-Process -FilePath "$Temp\vcredist_x64.exe" -ArgumentList $ArgumentList -Wait
-
- ## Extract ##
- # 7-Zip
- Write-Host "Extracting: 7-Zip"
- try {
- $ArgumentList = @("/a", "$Temp\7z-installer.msi", "TARGETDIR=$Temp\7zi", "/qn")
- Start-Process -FilePath "$HostSystem32\msiexec.exe" -ArgumentList $ArgumentList -Wait
- $SevenZip = "$Temp\7zi\Files\7-Zip\7z.exe"
- $ArgumentList = @(
- "e", "$Temp\7z-extra.7z", "-o$Build\bin\amd64\7-Zip",
- "-aoa", "-bso0", "-bse0", "-bsp0",
- "x64\7za.exe", "*.txt")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @(
- "e", "$Temp\7z-extra.7z", "-o$Build\bin\x86\7-Zip",
- "-aoa", "-bso0", "-bse0", "-bsp0",
- "7za.exe", "*.txt")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- # Blue Screen View
- Write-Host "Extracting: BlueScreenView"
- try {
- $ArgumentList = @(
- "x", "$Temp\bluescreenview64.zip", "-o$Build\bin\amd64\BlueScreenView",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @(
- "x", "$Temp\bluescreenview32.zip", "-o$Build\bin\x86\BlueScreenView",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- # ConEmu
- Write-Host "Extracting: ConEmu"
- try {
- $ArgumentList = @(
- "x", "$Temp\ConEmuPack.7z", "-o$Build\bin\amd64\ConEmu",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- Remove-Item "$Build\bin\amd64\ConEmu\ConEmu.exe"
- Remove-Item "$Build\bin\amd64\ConEmu\ConEmu.map"
- Move-Item "$Build\bin\amd64\ConEmu\ConEmu64.exe" "$Build\bin\amd64\ConEmu\ConEmu.exe" -Force
- Move-Item "$Build\bin\amd64\ConEmu\ConEmu64.map" "$Build\bin\amd64\ConEmu\ConEmu.map" -Force
- $ArgumentList = @(
- "x", "$Temp\ConEmuPack.7z", "-o$Build\bin\x86\ConEmu",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- Remove-Item "$Build\bin\x86\ConEmu\ConEmu64.exe"
- Remove-Item "$Build\bin\x86\ConEmu\ConEmu64.map"
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- # Fast Copy
- Write-Host "Extracting: FastCopy"
- try {
- # Extract Installer
- $ArgumentList = @(
- "e", "$Temp\fastcopy.zip", "-o$Temp",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
-
- # Extract 64-bit
- $ArgumentList = @(
- "/NOSUBDIR", "/DIR=$Build\bin\amd64\FastCopy",
- "/EXTRACT64")
- Start-Process -FilePath "$TEMP\FastCopy354_installer.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
- Remove-Item "$Build\bin\amd64\FastCopy\setup.exe" -Force
-
- # Extract 32-bit
- $ArgumentList = @(
- "/NOSUBDIR", "/DIR=$Build\bin\x86\FastCopy",
- "/EXTRACT32")
- Start-Process -FilePath "$TEMP\FastCopy354_installer.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
- Remove-Item "$Build\bin\x86\FastCopy\setup.exe" -Force
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
-
- # Killer Network Driver
- Write-Host "Extracting: Killer Network Driver"
- try {
- $ArgumentList = @(
- "e", "$Temp\killerinf.zip", "-o$Build\Drivers\amd64\Killer",
- "-aoa", "-bso0", "-bse0", "-bsp0",
- "Production\Windows10-x64\Eth\*")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @(
- "e", "$Temp\killerinf.zip", "-o$Build\Drivers\x86\Killer",
- "-aoa", "-bso0", "-bse0", "-bsp0",
- "Production\Windows10-x86\Eth\*")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- # HWiNFO
- Write-Host "Extracting: HWiNFO"
- try {
- $ArgumentList = @(
- "e", "$Temp\hwinfo.zip", "-o$Build\bin\amd64\HWiNFO",
- "-aoa", "-bso0", "-bse0", "-bsp0", "HWiNFO64.exe")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @(
- "e", "$Temp\hwinfo.zip", "-o$Build\bin\x86\HWiNFO",
- "-aoa", "-bso0", "-bse0", "-bsp0", "HWiNFO32.exe")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- Move-Item "$Build\bin\amd64\HWiNFO\HWiNFO64.exe" "$Build\bin\amd64\HWiNFO\HWiNFO.exe" -Force
- Move-Item "$Build\bin\x86\HWiNFO\HWiNFO32.exe" "$Build\bin\x86\HWiNFO\HWiNFO.exe" -Force
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- # Notepad++
- Write-Host "Extracting: Notepad++"
- try {
- $ArgumentList = @(
- "x", "$Temp\npp_amd64.7z", "-o$Build\bin\amd64\NotepadPlusPlus",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @(
- "x", "$Temp\npp_x86.7z", "-o$Build\bin\x86\NotepadPlusPlus",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- Move-Item "$Build\bin\amd64\NotepadPlusPlus\notepad++.exe" "$Build\bin\amd64\NotepadPlusPlus\notepadplusplus.exe" -Force
- Move-Item "$Build\bin\x86\NotepadPlusPlus\notepad++.exe" "$Build\bin\x86\NotepadPlusPlus\notepadplusplus.exe" -Force
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- # NT Password Editor
- Write-Host "Extracting: NT Password Editor"
- try {
- $ArgumentList = @(
- "e", "$Temp\ntpwed.zip", ('-o"{0}\bin\amd64\NT Password Editor"' -f $Build),
- "-aoa", "-bso0", "-bse0", "-bsp0",
- "ntpwedit64.exe", "*.txt")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- Move-Item "$Build\bin\amd64\NT Password Editor\ntpwedit64.exe" "$Build\bin\amd64\NT Password Editor\ntpwedit.exe" -Force
- $ArgumentList = @(
- "e", "$Temp\ntpwed.zip", ('-o"{0}\bin\x86\NT Password Editor"' -f $Build),
- "-aoa", "-bso0", "-bse0", "-bsp0",
- "ntpwedit.exe", "*.txt")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- # PhotoRec / TestDisk
- Write-Host "Extracting: PhotoRec / TestDisk"
- try {
- $ArgumentList = @(
- "x", "$Temp\testdisk64.zip", "-o$Build\bin\amd64\TestDisk",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- # Remove destination since Move-Item -Force can't handle this recursive merge
- Remove-Item "$Build\bin\amd64\TestDisk" -Recurse -Force 2>&1 | Out-Null
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- Move-Item "$Build\bin\amd64\TestDisk\testdisk-7.1-WIP\*" "$Build\bin\amd64\TestDisk" -Force
- Remove-Item "$Build\bin\amd64\TestDisk\testdisk-7.1-WIP" -Recurse -Force
- $ArgumentList = @(
- "x", "$Temp\testdisk32.zip", "-o$Build\bin\x86\TestDisk",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- # Remove destination since Move-Item -Force can't handle this recursive merge
- Remove-Item "$Build\bin\x86\TestDisk" -Recurse -Force 2>&1 | Out-Null
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- Move-Item "$Build\bin\x86\TestDisk\testdisk-7.1-WIP\*" "$Build\bin\x86\TestDisk" -Force
- Remove-Item "$Build\bin\x86\TestDisk\testdisk-7.1-WIP" -Recurse -Force
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- # Prime95
- Write-Host "Extracting: Prime95"
- try {
- $ArgumentList = @(
- "x", "$Temp\prime95_64.zip", "-o$Build\bin\amd64\Prime95",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @(
- "x", "$Temp\prime95_32.zip", "-o$Build\bin\x86\Prime95",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- # ProduKey
- try {
- $ArgumentList = @(
- "x", "$Temp\produkey64.zip", "-o$Build\bin\amd64\ProduKey",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @(
- "x", "$Temp\produkey32.zip", "-o$Build\bin\x86\ProduKey",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- # Python (x64)
- Write-Host "Extracting: Python (x64)"
- try {
- $ArgumentList = @(
- "x", "$Temp\python64.zip", "-o$Build\bin\amd64\python",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @(
- "x", "$Temp\psutil64.whl", "-o$Build\bin\amd64\python",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
-
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
- try {
- Copy-Item -Path "$HostSystem32\vcruntime140.dll" -Destination "$Build\bin\amd64\python\vcruntime140.dll" -Force
- }
- catch {
- Write-Host (" ERROR: Failed to copy Visual C++ Runtime DLL." ) -ForegroundColor "Red"
- }
-
- # Python (x32)
- Write-Host "Extracting: Python (x32)"
- try {
- $ArgumentList = @(
- "x", "$Temp\python32.zip", "-o$Build\bin\x86\python",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @(
- "x", "$Temp\psutil32.whl", "-o$Build\bin\x86\python",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
-
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
- try {
- Copy-Item -Path "$HostSysWOW64\vcruntime140.dll" -Destination "$Build\bin\x86\python\vcruntime140.dll" -Force
- }
- catch {
- Write-Host (" ERROR: Failed to copy Visual C++ Runtime DLL." ) -ForegroundColor "Red"
- }
-
- # Q-Dir
- Write-Host "Extracting: Q-Dir"
- try {
- $ArgumentList = @(
- "x", "$Temp\qdir64.zip", "-o$Build\bin\amd64",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- Move-Item "$Build\bin\amd64\Q-Dir\Q-Dir_x64.exe" "$Build\bin\amd64\Q-Dir\Q-Dir.exe" -Force
- $ArgumentList = @(
- "x", "$Temp\qdir32.zip", "-o$Build\bin\x86",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- # VirtIO Drivers
- Write-Host "Extracting: VirtIO Drivers"
- try {
- $ArgumentList = @(
- "e", "$Temp\virtio-win.iso", "-o$Build\Drivers\amd64\VirtIO",
- "-aoa", "-bso0", "-bse0", "-bsp0",
- "*\w10\amd64\*")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @(
- "e", "$Temp\virtio-win.iso", "-o$Build\Drivers\x86\VirtIO",
- "-aoa", "-bso0", "-bse0", "-bsp0",
- "*\w10\x86\*")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- # wimlib-imagex
- try {
- $ArgumentList = @(
- "x", "$Temp\wimlib64.zip", "-o$Build\bin\amd64\wimlib",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @(
- "x", "$Temp\wimlib32.zip", "-o$Build\bin\x86\wimlib",
- "-aoa", "-bso0", "-bse0", "-bsp0")
- Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
- }
- catch {
- Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
- }
-
- ## Cleanup ##
- if (Ask-User "Delete temp files?") {
- Remove-Item "$Temp" -Recurse
- }
- }
+ ## Download Sources ##
+ Download-SourceFiles
+ Extract-SourceFiles
## Build ##
- foreach ($Arch in @("amd64", "x86")) {
- $Drivers = "$Build\Drivers\$Arch"
- $Mount = "$Build\Mount"
- $PEFiles = "$Build\PEFiles\$Arch"
- # Copy WinPE files
- Write-Host "Copying files..."
- $Cmd = ("{0}\copype.cmd" -f $Env:WinPERoot)
- Start-Process -FilePath $Cmd -ArgumentList @($Arch, $PEFiles) -NoNewWindow -Wait
+ # Copy WinPE files
+ Write-Host "Copying files..."
+ $Cmd = ("{0}\copype.cmd" -f $Env:WinPERoot)
+ Start-Process -FilePath $Cmd -ArgumentList @($Arch, $TargetDir) -NoNewWindow -Wait
- # Remove unwanted items
- foreach ($SubDir in @("media", "media\Boot", "media\EFI\Microsoft\Boot")) {
- foreach ($Item in Get-ChildItem "$PEFiles\$SubDir") {
- if ($Item.Name -inotmatch "^(boot|efi|en-us|sources|fonts|resources|bcd|memtest)") {
- Remove-Item -Path $Item.FullName -Recurse -Force
- }
+ # Remove unwanted items
+ foreach ($SubDir in @("media", "media\Boot", "media\EFI\Microsoft\Boot")) {
+ foreach ($Item in Get-ChildItem "$TargetDir\$SubDir") {
+ if ($Item.Name -inotmatch "^(boot|efi|en-us|sources|fonts|resources|bcd|memtest)") {
+ Remove-Item -Path $Item.FullName -Recurse -Force
}
}
-
- # Mount image
- Write-Host "Mounting image..."
- New-Item -Path $Mount -ItemType "directory" -Force | Out-Null
- Mount-WindowsImage -Path $Mount -ImagePath "$PEFiles\media\sources\boot.wim" -Index 1 -LogPath "$LogDir\DISM.log"
-
- # Add drivers
- Add-WindowsDriver -Path $Mount -Driver $Drivers -Recurse -LogPath "$LogDir\DISM.log"
-
- # Add packages
- Write-Host "Adding packages:"
- $WinPEPackages = @(
- "WinPE-EnhancedStorage",
- "WinPE-FMAPI",
- "WinPE-WMI",
- "WinPE-SecureStartup"
- )
- foreach ($Package in $WinPEPackages) {
- $PackagePath = ("{0}\{1}\WinPE_OCs\{2}.cab" -f $Env:WinPERoot, $Arch, $Package)
- Write-Host " $Package..."
- Add-WindowsPackage –PackagePath $PackagePath –Path $Mount -LogPath "$LogDir\DISM.log"
- $LangPackagePath = ("{0}\{1}\WinPE_OCs\en-us\{2}_en-us.cab" -f $Env:WinPERoot, $Arch, $Package)
- if (Test-Path $LangPackagePath) {
- Add-WindowsPackage –PackagePath $LangPackagePath –Path $Mount -LogPath "$LogDir\DISM.log"
- }
- }
-
- # Set RamDisk size
- $ArgumentList = @(
- ('/Image:"{0}"' -f $Mount),
- "/Set-ScratchSpace:512",
- ('/LogPath:"{0}\DISM.log"' -f $LogDir)
- )
- Start-Process -FilePath $DISM -ArgumentList $ArgumentList -NoNewWindow -Wait
-
- # Add tools
- Write-Host "Copying tools..."
- Copy-Item -Path "$Build\bin\$Arch" -Destination "$Mount\.bin" -Recurse -Force
- Copy-Item -Path "$Root\.pe_items\_include\*" -Destination "$Mount\.bin" -Recurse -Force
- if ($Arch -eq "amd64") {
- $DestIni = "$Mount\.bin\HWiNFO\HWiNFO64.INI"
- } else {
- $DestIni = "$Mount\.bin\HWiNFO\HWiNFO32.INI"
- }
- Move-Item -Path "$Mount\.bin\HWiNFO\HWiNFO.INI" -Destination $DestIni -Force
- Copy-Item -Path "$Root\Images\WinPE.jpg" -Destination "$Mount\.bin\ConEmu\ConEmu.jpg" -Recurse -Force
- Copy-Item -Path "$Bin\Scripts" -Destination "$Mount\.bin\Scripts" -Recurse -Force
- Copy-Item -Path "$Build\main.py" -Destination "$Mount\.bin\Scripts\settings\main.py" -Force
-
- # Add System32 items
- $HostSystem32 = "{0}\System32" -f $Env:SystemRoot
- Copy-Item -Path "$Root\.pe_items\System32\*" -Destination "$Mount\Windows\System32" -Recurse -Force
- $ArgumentList = @("/f", "$Mount\Windows\System32\winpe.jpg", "/a")
- Start-Process -FilePath "$HostSystem32\takeown.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @("$Mount\Windows\System32\winpe.jpg", "/grant", "Administrators:F")
- Start-Process -FilePath "$HostSystem32\icacls.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
- Copy-Item -Path "$Root\Images\WinPE.jpg" -Destination "$Mount\Windows\System32\winpe.jpg" -Recurse -Force
-
- # Load registry hives
- Write-Host "Updating Registry..."
- $Reg = "$HostSystem32\reg.exe"
- $ArgumentList = @("load", "HKLM\WinPE-SW", "$Mount\Windows\System32\config\SOFTWARE")
- Start-Process -FilePath $Reg -ArgumentList $ArgumentList -NoNewWindow -Wait
- $ArgumentList = @("load", "HKLM\WinPE-SYS", "$Mount\Windows\System32\config\SYSTEM")
- Start-Process -FilePath $Reg -ArgumentList $ArgumentList -NoNewWindow -Wait
-
- # Add tools to path
- ## .NET code to properly handle REG_EXPAND_SZ values
- ## Credit: https://www.sepago.com/blog/2013/08/22/reading-and-writing-regexpandsz-data-with-powershell
- ## By: Marius Gawenda
- $Hive = [Microsoft.Win32.Registry]::LocalMachine
- $RegPath = "WinPE-SYS\ControlSet001\Control\Session Manager\Environment"
- $RegKey = $Hive.OpenSubKey($RegPath)
- $CurValue = $RegKey.GetValue(
- "Path", $false, [Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames)
- $NewValue = "$CurValue;%SystemDrive%\.bin\7-Zip;%SystemDrive%\.bin\python;%SystemDrive%\.bin\wimlib"
- Set-ItemProperty -Path "HKLM:\$RegPath" -Name "Path" -Value $NewValue -Force | Out-Null
- $Hive.close()
- $RegKey.close()
-
- # Replace Notepad
- $RegPath = "HKLM:\WinPE-SW\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe"
- $NewValue = 'cmd /c "%SystemDrive%\.bin\NotepadPlusPlus\npp.cmd"'
- New-Item -Path $RegPath -Force | Out-Null
- New-ItemProperty -Path $RegPath -Name "Debugger" -Value $NewValue -Force | Out-Null
-
- # Run garbage collection to release potential stale handles
- ## Credit: https://jrich523.wordpress.com/2012/03/06/powershell-loading-and-unloading-registry-hives/
- Start-Sleep -Seconds 2
- [gc]::collect()
-
- # Unload registry hives
- Start-Sleep -Seconds 2
- Start-Process -FilePath $Reg -ArgumentList @("unload", "HKLM\WinPE-SW") -NoNewWindow -Wait
- Start-Process -FilePath $Reg -ArgumentList @("unload", "HKLM\WinPE-SYS") -NoNewWindow -Wait
-
- # Unmount image
- Write-Host "Dismounting image..."
- Dismount-WindowsImage -Path $Mount -Save -LogPath "$LogDir\DISM.log"
-
- # Create ISO
- New-Item -Type Directory "$Root\OUT_PE" 2>&1 | Out-Null
- $ArgumentList = @("/iso", $PEFiles, "$Root\OUT_PE\$KitNameShort-WinPE-$Date-$Arch.iso")
- $Cmd = "{0}\MakeWinPEMedia.cmd" -f $Env:WinPERoot
- Start-Process -FilePath $Cmd -ArgumentList $ArgumentList -NoNewWindow -Wait
}
+ # Mount image
+ Write-Host "Mounting image..."
+ New-Item -Path $MountDir -ItemType "directory" -Force | Out-Null
+ Mount-WindowsImage -Path $MountDir -ImagePath "$TargetDir\media\sources\boot.wim" -Index 1
+
+ # Add drivers
+ Write-Host "Adding drivers..."
+ Add-WindowsDriver -Path $MountDir -Driver "$SetupDir\pe\drivers" -ForceUnsigned -Recurse
+
+ # Add packages
+ Write-Host "Adding packages..."
+ $WinPEPackages = @(
+ "WinPE-EnhancedStorage",
+ "WinPE-FMAPI",
+ "WinPE-WMI",
+ "WinPE-SecureStartup"
+ )
+ foreach ($Package in $WinPEPackages) {
+ $PackagePath = ("{0}\{1}\WinPE_OCs\{2}.cab" -f $Env:WinPERoot, $Arch, $Package)
+ Write-Host " $Package..."
+ Add-WindowsPackage –PackagePath $PackagePath –Path $MountDir
+ $LangPackagePath = ("{0}\{1}\WinPE_OCs\en-us\{2}_en-us.cab" -f $Env:WinPERoot, $Arch, $Package)
+ if (Test-Path $LangPackagePath) {
+ Add-WindowsPackage –PackagePath $LangPackagePath –Path $MountDir
+ }
+ }
+
+ # Set RamDisk size
+ $ArgumentList = @(
+ ('/Image:"{0}"' -f $MountDir),
+ "/Set-ScratchSpace:512"
+ )
+ Start-Process -FilePath $DISM -ArgumentList $ArgumentList -NoNewWindow -Wait
+
+ # Add tools
+ Write-Host "Copying tools..."
+ Copy-Item -Path "$BuildDir\additions\*" -Destination $MountDir -Recurse -Force
+ Copy-Item -Path "$RootDir\Images\WinPE.jpg" -Destination "$MountDir\Program Files\ConEmu\ConEmu.jpg" -Recurse -Force
+
+ # Add System32 items
+ $ArgumentList = @("/f", "$MountDir\Windows\System32\winpe.jpg", "/a")
+ Start-Process -FilePath "$HostSystem32\takeown.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
+ $ArgumentList = @("$MountDir\Windows\System32\winpe.jpg", "/grant", "Administrators:F")
+ Start-Process -FilePath "$HostSystem32\icacls.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
+ Copy-Item -Path "$RootDir\Images\WinPE.jpg" -Destination "$MountDir\Windows\System32\winpe.jpg" -Force
+
+ # Load registry hives
+ Write-Host "Updating Registry..."
+ $Reg = "$HostSystem32\reg.exe"
+ $ArgumentList = @("load", "HKLM\WinPE-SW", "$MountDir\Windows\System32\config\SOFTWARE")
+ Start-Process -FilePath $Reg -ArgumentList $ArgumentList -NoNewWindow -Wait
+ $ArgumentList = @("load", "HKLM\WinPE-SYS", "$MountDir\Windows\System32\config\SYSTEM")
+ Start-Process -FilePath $Reg -ArgumentList $ArgumentList -NoNewWindow -Wait
+
+ # Configure CMD (command aliases "DOSKEY Macros" and tab completion)
+ $RegPath = "HKLM:\WinPE-SW\Microsoft\Command Processor"
+ $NewValue = "doskey /macrofile=X:\Windows\System32\custom.doskey"
+ New-Item -Path $RegPath -Force | Out-Null
+ New-ItemProperty -Path $RegPath -Name "AutoRun" -Value $NewValue -Force | Out-Null
+ New-ItemProperty -Path $RegPath -Name "CompletionChar" -Value 9 -Type DWord -Force | Out-Null
+ New-ItemProperty -Path $RegPath -Name "PathCompletionChar" -Value 9 -Type DWord -Force | Out-Null
+
+ # Add tools to path
+ ## .NET code to properly handle REG_EXPAND_SZ values
+ ## Credit: https://www.sepago.com/blog/2013/08/22/reading-and-writing-regexpandsz-data-with-powershell
+ ## By: Marius Gawenda
+ $Hive = [Microsoft.Win32.Registry]::LocalMachine
+ $RegPath = "WinPE-SYS\ControlSet001\Control\Session Manager\Environment"
+ $RegKey = $Hive.OpenSubKey($RegPath)
+ $CurValue = $RegKey.GetValue(
+ "Path", $false, [Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames)
+ $NewValue = "$CurValue;%ProgramFiles%\7-Zip;%ProgramFiles%\wimlib"
+ Set-ItemProperty -Path "HKLM:\$RegPath" -Name "Path" -Value $NewValue -Force | Out-Null
+ $Hive.close()
+ $RegKey.close()
+
+ # Replace Notepad
+ $RegPath = "HKLM:\WinPE-SW\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe"
+ $NewValue = 'cmd /c "%ProgramFiles%\NotepadPlusPlus\npp.cmd"'
+ New-Item -Path $RegPath -Force | Out-Null
+ New-ItemProperty -Path $RegPath -Name "Debugger" -Value $NewValue -Force | Out-Null
+
+ # Run garbage collection to release potential stale handles
+ ## Credit: https://jrich523.wordpress.com/2012/03/06/powershell-loading-and-unloading-registry-hives/
+ Start-Sleep -Seconds 2
+ [gc]::collect()
+
+ # Unload registry hives
+ Start-Sleep -Seconds 2
+ Start-Process -FilePath $Reg -ArgumentList @("unload", "HKLM\WinPE-SW") -NoNewWindow -Wait
+ Start-Process -FilePath $Reg -ArgumentList @("unload", "HKLM\WinPE-SYS") -NoNewWindow -Wait
+
+ # Unmount image
+ Write-Host "Dismounting image..."
+ Dismount-WindowsImage -Path $MountDir -Save
+
+ # Rebuild image
+ Write-Host "Recompressing image..."
+ Move-Item "$TargetDir\media\sources\boot.wim" "$TargetDir\media\sources\boot-edited.wim"
+ Export-WindowsImage -DestinationImagePath "$TargetDir\media\sources\boot.wim" -SourceImagePath "$TargetDir\media\sources\boot-edited.wim" -SourceIndex 1 -CompressionType Max
+ Remove-Item -Path "$TargetDir\media\sources\boot-edited.wim" -Force
+
+ # Create ISO
+ New-Item -Type Directory "$SetupDir\OUT_PE" 2>&1 | Out-Null
+ $ArgumentList = @("/iso", $TargetDir, "$SetupDir\OUT_PE\$KitNameShort-WinPE-$Date-$Arch.iso", "/f")
+ $Cmd = "{0}\MakeWinPEMedia.cmd" -f $Env:WinPERoot
+ Start-Process -FilePath $Cmd -ArgumentList $ArgumentList -NoNewWindow -Wait
+
## Cleanup ##
- Remove-Item -Path "$Build\Mount" -Recurse -Force
- Remove-Item -Path "$Build\PEFiles" -Recurse -Force
+ Remove-Item -Path "$MountDir" -Recurse -Force
## Done ##
Pop-Location
Write-Host "`nDone."
WKPause "Press Enter to exit... "
}
+
diff --git a/setup/pe/drivers/README.md b/setup/pe/drivers/README.md
new file mode 100644
index 00000000..41b746f8
--- /dev/null
+++ b/setup/pe/drivers/README.md
@@ -0,0 +1,4 @@
+# WizardKit: WinPE - Drivers #
+
+All drivers added to this folder will be injected into the WinPE image (recursively)
+
diff --git a/setup/pe/sources.json b/setup/pe/sources.json
new file mode 100644
index 00000000..cd44037d
--- /dev/null
+++ b/setup/pe/sources.json
@@ -0,0 +1,32 @@
+[
+ {
+ "Item": "7-Zip",
+ "Hash": "eb94db7341e59f1871a4d4f60165563f1881e33aef093b7d8427651c2a0f4b6f",
+ "Name": "7z.msi",
+ "Url": "https://www.7-zip.org/a/7z2407-x64.msi"
+ },
+ {
+ "Item": "ConEmu",
+ "Hash": "2a9b98ebecaede62665ef427b05b3a5ccdac7bd3202414fc0f4c10825b4f4ea2",
+ "Name": "ConEmu.7z",
+ "Url": "https://github.com/Maximus5/ConEmu/releases/download/v23.07.24/ConEmuPack.230724.7z"
+ },
+ {
+ "Item": "Notepad++",
+ "Hash": "ef9b63b1f5f06ffa3d5fbed698f57c4dfb2f2ac88c340f0fd1dbad0c3ef8a524",
+ "Name": "npp.7z",
+ "Url": "https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v8.6.7/npp.8.6.7.portable.minimalist.x64.7z"
+ },
+ {
+ "Item": "NTPWEdit",
+ "Hash": "ca832bd62d8eb38541db1108054d1b4b52869837470ee770c39c2a5bea973e31",
+ "Name": "ntpwedit.zip",
+ "Url": "http://cdslow.org.ru/files/ntpwedit/ntpwed07.zip"
+ },
+ {
+ "Item": "wimlib",
+ "Hash": "6d99e242bfbc6d36fc987d433d63772180551b7f2d8de43e9561535a3e2c16d8",
+ "Name": "wimlib.zip",
+ "Url": "https://wimlib.net/downloads/wimlib-1.14.4-windows-x86_64-bin.zip"
+ }
+]