MakePE: SuperISO

The bad thing about being the WinPE Guy is all the USB Drives I have to keep for different WinPE Versions, Architectures, and builds.

I’ve had enough . . . so I decided to spend some time creating SuperPE.


But this blog post is about SuperISO right?  Well it would look SuperBad if I labeled my USB Drive “SuperISO”, but we will get to that soon enough.


So looking back at the Example Build Scripts, there are some that have SuperISO in the name


A closer look into the script will show a call to .\Scripts\SuperISO.cmd

	@echo off
	pushd %~dp0
::	Run MakePE.cmd to load the Defaults and MySettings
	call .\Scripts\MakePE.cmd

::	Now you can make changes to the default Variables
	set DoPause=No

::	You can change the WinPE Version and Architecture
	set WinPEVersion=10
	set PLATFORM=x86
	call .\Scripts\MakePE.cmd
::	And change it again
	set WinPEVersion=10
	set PLATFORM=x64
	call .\Scripts\MakePE.cmd
::	Create a SuperISO
	call .\Scripts\SuperISO.cmd
::	You can pause at the end

Basically what SuperISO does it combine multiple WinPE’s into the same ISO.  If I were to run “Example – ALL WinPE 10 with SuperISO.cmd“, it will build a WinPE SuperISO.iso into the MakePE\Builds directory.


On a standard BIOS system, I now have two WinPE options I can pick from, with x86 selected as the default.


If I were to boot this USB on a UEFI system, I can see that the wording has changed to show this is booting UEFI, and it even defaults to x64 automatically.


You are even able to set Variables in your Build Script for the default selection. In the snippet below you can even select WinPE 5 as the default.

::	Set the default WinPE for BIOS
	rem set defaultbios={aaaaaaaa-0532-aaaa-aaaa-aaaaaaaaaaaa}
	set defaultbios={aaaaaaaa-1032-aaaa-aaaa-aaaaaaaaaaaa}
::	Set the default WinPE for UEFI
	rem set defaultuefi={aaaaaaaa-0564-aaaa-aaaa-aaaaaaaaaaaa}
	set defaultuefi={aaaaaaaa-1064-aaaa-aaaa-aaaaaaaaaaaa}
::	Create a SuperISO
	call .\Scripts\SuperISO.cmd

Now running the Example Build Script “Example – Everything with SuperISO.cmd” will give me a bootable ISO with WinPE 3, WinPE 5, and WinPE 10.  In the MakePE\Builds directory I see my freshly minted ISO’s for the different versions of WinPE.  You should note that the first ISO was created at 10:27pm with the SuperISO created at 10:34pm, a whopping 7 minutes to create 6 different versions of WinPE and one SuperISO.  The SuperISO itself is 2GB and ready to boot.



So what do the Windows Boot Managers look like?  And yes, WinPE 3 x86 does not appear in the UEFI Windows Boot Manager because it does not support UEFI.



One important thing of note.  You can only have one SuperISO at any given time.  Every time you build a new ISO, a flat representation of it is saved in the MakePE\Builds\ISO directory.  When SuperISO is invoked, it will gather all of these flat ISO directories into SuperISO.  So if you Build Everything, and decide later you want to build a SuperISO for just Windows 10, then you will need to delete the WinPE 3 and WinPE 5 directories.


If you look at that image above long enough, you will notice some CMD scripts.  Have a look at them.  This is a quick and easy script to allow you to work on your ISO builds manually for yourself.  Here is the command line to build a WinPE 10 x86 ISO.

"D:\MakePE\Builds\ISO\Support\WinPE10x86\oscdimg.exe" -bootdata:2#p0,e,b"D:\MakePE\Builds\ISO\Support\WinPE10x86\"#pEF,e,b"D:\MakePE\Builds\ISO\Support\WinPE10x86\efisys.bin" -u1 -udfver102 -l"WinPE 10 x86" "D:\MakePE\Builds\ISO\WinPE10x86" "D:\MakePE\Builds\WinPE 10 x86 WinRE.iso" 

Now try memorizing that to build ISO’s manually . . . you will then understand why MakePE exists.