Not just an Universal MediaCreationTool wrapper script with ingenious support for business editions,
A powerful yet simple windows 10 / 11 deployment automation tool as well!
If you had no success launching the script so far, this latest version will work
1 Auto Upgrade with detected media, script assists setupprep for upgrading directly
- can keep files and apps on more scenarios where os and target edition does not match
- can switch detected edition by adding EditionID to script name
- can troubleshoot upgrade failing by adding
no_updateto script name
- auto defaults to 11, so pass version as well for 10:
auto 21H2 MediaCreationTool.bat
2 Auto ISO with detected media in current folder directly (or C:\ESD if run from zip)
- can override detected media by adding edition name / language / arch to script name
21H1 Education en-US x86 iso MediaCreationTool.bat
3 Auto USB with detected media in specified usb target
- for data safety, this is not fully automated - must select the usb drive manually in GUI
4 Select with user picked Edition, Language, Arch (x86,x64,both) - on specified target
- implicit choice, includes setup override files (disable by adding
defto script name)
5 MCT Defaults runs unassisted, creating media without script modification
- no added files, script passes
products.xmlto MCT and quits without touching media
1-4 presets will modify created media in the following ways:
auto.cmdto run on demand for auto upgrade with edition switch and skip tpm
$ISO$folder content (if it exists) at the root of the media
if you previously used $OEM$ content, must now place it in
sources\PID.txtto preselect edition at media boot or within windows (if configured)
sources\EI.cfgto prevent product key prompt on Windows 11 consumer media (11 only)
AutoUnattend.xmlin boot.wim to enable local account on Windows 11 Home (11 only)
winsetup.dllin boot.wim to remove windows 11 setup checks when booting from media (11 only)
- can disable by adding
defto script name for a default, untouched MCT media
auto.cmd is behind Auto Upgrade preset via GUI
Can run it fully unnatended by renaming script with
Makes it easy to upgrade keeping files and apps when the OS edition does not match the media
Should allow upgrade from Ultimate, PosReady, Embedded, LTSC or Enterprise Eval as well
Generated script is added to the created media so you can run it again at any time
It is fairly generic - it will detect available editions in install.esd, pick a suitable index,
then set EditionID in the registry to match; can even force another edition, keeping files and apps!
On 11, it will try to skip setup checks (can disable this behavior with script var)
Finally, it sets recommended setup options with least amount of issues on upgrades
Let's say the current OS is Enterprise LTSC 2019, and you use the business media to upgrade:
auto.cmd selects Enterprise index and adjust EditionID to Enterprise in the registry (backed up as EditionID_undo)
Maybe you also want to switch edition,
ex. by renaming the script to
auto.cmd selects Professional index and sets EditionID to ProfessionalWorkstation in the registry.
Let's say the OS is Windows 7 Ultimate or PosReady, and you use the consumer media to upgrade:
auto.cmd selects Professional index, and sets EditionID to Professional or Enterprise, respectively.
In all cases, the script tries to pick an existing index, else a compatible one to keep files and apps on upgrade.
Let's say you have a dozen PCs spread with versions: 7, 8.1, 10 and editions: Ultimate, Home, Enterprise LTSB..
If you need to upgrade all to the latest 10 version and only use Pro, you could rename the script as:
auto 21H2 Pro MediaCreationTool.bat
Can even add a VL / MAK / retail product key in the same way to take care of licensing differences.
The script also picks up any
$ISO$folder in the current location - for
$OEM$branding, configuration, tweaks etc.
No need to right-click Run as Admin, script will ask itself. Directly saving the Raw files no longer breaks line endings
We did it! We broke the previous gist ;) So this is the new home. Thank you all!
2018.10.10: reinstated 1809 [RS5]! using native xml patching for products.xml; fixed syntax bug with exit/b 2018.10.12: added data loss warning for RS5 2018.11.13: RS5 is officially back! + greatly improved choices dialog - feel free to use the small snippet in your own scripts 2019.05.22: 1903 [19H1] 2019.07.11: 1903 __release_svc_refresh__ and enable DynamicUpdate by default to grab latest CU 2019.09.29: UPDATED 19H1 build 18362.356 ; RS5 build 17763.379 and show build number added LATEST MCT choice to dinamically download the current version (all others have hard-coded links) 2019.11.16: 19H2 18363.418 as default choice (updated hard-coded links) 2020.02.29: 19H2 18363.592 2020.05.28: 2004 19041.264 first release 2020.10.29: 20H2 and aniversary script refactoring to support all MCT versions from 1507 to 20H2!!! 2020.10.30: hotfix utf-8, enterprise on 1909+ 2020.11.01: fix remove unsupported options in older versions code breaking when path has spaces.. pff 2020.11.14: generate latest links for 1909,2004; all xml editing now in one go; resolved known cannot run script issues 2020.11.15: one-time clear of cached MCT, as script generates proper 1.0 catalog for 1507,1511,1703 since last update fixed compatibility with naked windows 7 powershell 2.0 / IPv6 / optional import $OEM$ / 1803+ business typo updated executables links for 1903 and 2004 2020.11.17: parse first commandline parameter as version, example: MediaCreationTool.bat 1909 2020.12.01: attempt to fix reported issues with 1703; no other changes (skipping 19042.630 leaked esd because it is broken) 2020.12.11: 20H2 19042.631; fixed pesky 1703 decryption bug on dual x86 + x64; improved cleanup; label includes version 2021.03.20: pre-release 21H1; optional auto upgrade or create media presets importing $OEM$ folder and key as PID.txt 2021.05.23: 21H1 release; enhanced script name args parsing, upgrade from embedded, auto.cmd / PID.txt / $OEM$ import 2021.06.06: create iso directly; enhanced dialogs; args from script name or commandline; refactoring is complete! 2021.08.04: done fiddling 2021.09.03: 21H2, both 10 and 11 [unreleased] 2021.09.25: Windows 11 with Skip TPM Check on media boot as well as on dynamic update (standalone toggle script available) final touches for improved script reliability; enhanced auto upgrade preset; win 7 powershell 2.0 compatible 2021.09.30: fix Auto Setup preset not launching.. automatically 2021.10.04: fix for long standing tr localization quirks; Skip TPM Check v2 (ifeo-based instead of wmi) 2021.10.05: 11 22000.194 Release (rofl W11 MCT has limited capabilities, so still using 21H1 MCT because it works fine) 2021.10.09: outstanding refactoring around Windows 11 MCT; minimize while waiting MCT; unified 7 - 11 appearence 2021.10.20: create generic iso if no edition arg; use Downloads folder; no 11 setup checks on boot in VirtualBox; fixes #2 2021.10.23: 11 22000.258 more intuitive presets; 11 setup override via AutoUnattend.xml or via boot.wim (for VirtualBox 5.x) with FIX arg only reliable ui automation; enhanced script output 2021.11.03: multiple download methods; improved automation; improved auto.cmd; moved autounattend.xml to boot.wim revising 11 setup bypass (wip) - not being content with any methods is the reason why I've not updated in a while 2021.11.09: skip windows 11 upgrade checks with setup.exe (not just auto.cmd); no server label; local account on 11 home auto.cmd has more fixes to keep files and apps on upgrade; reliable ui automation; alternative downloaders 2021.11.15: 11 22000.318 write output to script folder (or C:\ESD if run from zip); style: more consistent separation of arguments 20H2 builds with esd size above 4GB that had to be reverted at 19042.631: en,de,es,pt,fr,it,jp,zh (MCT limits) 2021.11.16: 10 19044.1288 - official release of 10 21H2 10 19043.1348 - newest 10 build - don't ask why ms is releasing these as such, it's not the first time 2021.12.07: skip windows 11 upgrade checks only via auto.cmd - just ignore server label, please 2021.12.15: fix regression with 1507-1709 not getting the correct fallback esd; fix dev '-noe' not autoclosing script 2021.12.22: improved auto.cmd handling of mismatched OS and target edition, obey 'def', 'auto' upgrades 7 to 10, not 11 2022.03.16: prevent launch errors when run from non-canonical paths; USBLayout progress; pickup $ISO$ dir to add on media DU in 11: auto installs 22000.556 atm; older skip_11_checks, without Server label; Home offline local account 2022.03.18: fix regression with Auto Upgrade; removed powershell -nop arg (issue #41); enhanced 11 AutoUnattend.xml 2022.03.20: stable - all issues ironed out; improved script ui; upgrade keeping files from Eval editions too last squash I promise ;)