* New reporting tool
* Why did we EVER need to load the component store?
* Up the execution policy for default PWSH sessions
This is required to run the diagnostics script, and any script that either we create here, or the user creates later. At least we don't go too wild and use unrestricted... we use something more "safe"
* Force Panther Setup instead of MoSetup
This will increase reliability and performance. Screw the Windows 8 installer, we're back with what was used on Windows 7!
Anyway, there are problems with the new installer:
1. It is slow at everything. Some people did benchmarks of both installers. MoSetup lost to Panther (ofc). Source: https://www.reddit.com/r/Windows11/comments/1kmjavl/i_made_a_small_test_comparing_which_one_installs/
2. It is unreliable. The "Install driver to show hardware" screen that appears in some systems AND in PXE/WDS for Server 2025 is possibly, and simply, due to Setup not being able to find the install image. From BlueBox.log in MoSetup:
...
2025-12-21 10:05:43: Creating path (with ACL): [X:\$WINDOWS.~BT]...
2025-12-21 10:05:43: Creating path: [X:\$WINDOWS.~BT\Sources]...
2025-12-21 10:05:43: CBootScenarioCtrl::PopulateWorkingDir: Install.wim/swm/esd was not found!
...
Other contributors in the CTT community stated similar unreliability with borked installs.
I'm pretty sure this change will benefit everyone. We'll see how long it lasts before Microsoft f's it up.
* Improve reporting tool
Display appx package dependency full names
* Rework ADK detection
* Add revamped detection for ISO creation
* File Explorer ain't broken anymore on 26200.7462
Those incompetent developers changed WindowsAppRuntime.CBS to WindowsAppRuntime.CBS.1.6 circa 10.0.26200.7462. No wonder why direct downloads were not causing this issue; they are still based on 10.0.26200.6584. The MCT, on the other hand...
* Patch maximum version boundary
Apparently they fixed that in November. Expanding the amd64_winappsdk-cbs-stable component manifest to a XML file reveals the dark secret:
<registryKeys>
<registryKey keyName="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\InboxApplications\Microsoft.WindowsAppRuntime.CBS.1.6_6000.653.2246.100_x64__8wekyb3d8bbwe">
<registryValue name="Path" valueType="REG_SZ" value="$(runtime.windows)\SystemApps\Microsoft.WindowsAppRuntime.CBS_8wekyb3d8bbwe\AppxManifest.xml" />
<securityDescriptor name="REGKEY_APPXALLUSERSTORE_SDDL" />
</registryKey>
<registryKey keyName="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Config\Microsoft.WindowsAppRuntime.CBS.1.6_8wekyb3d8bbwe">
<registryValue name="SetupPhase" valueType="REG_DWORD" value="0x00000427" />
</registryKey>
<registryKey keyName="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\UpdatedApplications\Microsoft.WindowsAppRuntime.CBS.1.6_8wekyb3d8bbwe" />
</registryKeys>
This is not a problem in .6899 because we don't have amd64_winappsdk-cbs-stable, but a vnext counterpart. But, at this point, why bother checking with that? MCT will not bundle this update with the image!
* Default to showing file extensions
Apart from a security improvement (let's remember ILOVEYOU from 2000), it's also a QoL.
* Fix key for color modes
Color mode settings are saved per-user, not system-wide. So HKLM\SOFTWARE is not our solution. HKCU is, and is mapped to \Users\Default\NTUSER.DAT
* Move color mode from offline servicing to firstrun
* Drop build number by 100
* Update Invoke-Microwin.ps1 (#15)
* Revert "Update Invoke-Microwin.ps1 (#15)"
This reverts commit 88f8a3031b.
* Keep trying to commit and unmount images
* Consistent REG ADD /F /V...
Some issues happen with REG and strings if you put /f at the end... move it to the beginning, where it doesn't conflict with anything.
* Rework stub path reg value set
This works on both Windows 11 and Windows 10. It didn't work on Win10 before; it should work now
* Remove copy link step
We no longer do this
* Move Copy-Files to microwin folder
Only microwin calls this function; it's better if we place this script in that folder
* Add Create Bootable USB (#18)
* Add Create Bootable USB
* Apply suggestion from @CodingWonders
---------
Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com>
* Download ADK to get oscdimg if not to download on GitHub
If we don't download OSCDIMG from GitHub, because we now use ADK kits roots detection to get installed copies of the ADK and oscdimg, we just download the Deployment Tools. This is only 100 MB once fully installed, and removes the need to install Chocolatey.
One caveat is that, on 64-bit systems, the script will output "Could not find ADK" once. This is normal as it does checks on both regular SOFTWARE and WOW6432Node, and it's able to pick it on the latter. If it isn't found anywhere, that message will appear twice.
* Make indentation more consitent in bootable USB func.
* Initialize petoolspath variable
* Remove temporary adksetup on completion
* Fix whitespace
* Remove unnecessary comments and revamp admin check
* Revert "Add Create Bootable USB (#18)"
This reverts commit 64babfe986.
* Remove reporting tool creation
The reporting tool is now hosted on a separate repo. The script itself can be run anywhere, not just in microwin, so...
* Some formatting change here
* Remove copy to ventoy option
* Fix some more indents
* Add Description that ISO automatically removes Win11 Requirements
* Additional things
- WPBT done by defaults
- Skip Logon Animation
- Remove convert to ESD and Upgrade to Win11 as Win10 is no longer supported
* First attempt at OSCDIMG autodownload
* No more custom ScratchPaths!
Time to get rid of that mess and just use %TEMP%.
All of these minor changes were made on a Server 2K8R2 VM.
* Redetect ADK/OSCDIMG after autodownload
* Leave ADK reg query error to debug only
---------
Co-authored-by: Real-MullaC <callumjanes2007new+github@gmail.com>
* Delete WPFTweaksPowershell7 from tweaks.json
Removed WPFTweaksPowershell7 configuration for Windows Terminal.
* Delete functions/public/Invoke-WPFTweakPS7.ps1
* [Tweaks] Conditionally determine when to use sc and Set-Service
* Clean up comments in Set-WinUtilService.ps1
Removed comments explaining the handling of auto delayed start for PWSH 5.
---------
Co-authored-by: Chris Titus <contact@christitus.com>
The Invoke-WinUtilTweaks function was using the '-contains' operator on a string variable to check for toggle-type tweaks. This operator is intended for collections (arrays), not for substring matching within a string, leading to incorrect logic flow.
This caused an issue where selecting one tweak (e.g., WPFTweaksRightClickMenu) could erroneously trigger the action of another (e.g., WPFTweaksDisableCrossDeviceResume).
This commit replaces the incorrect '-contains' operator with the '-like' operator and appropriate wildcards ('*Toggle*'). This ensures that tweak types are identified correctly, resolving the bug and preventing unintended system modifications.
* [Enhance] Configure all apps view in start menu
To keep look consistent with older Win11
* [Enhance] Additional Start menu settings
* [MicroWin] Change Write-Host to Write-Debug on debug lines. (#13)
* Add a resolution to scripts being disabled (#14)
* [MicroWin] Change Write-Host to Write-Debug on debug lines.
* Add a resolution to scripts being disabled
* Add skip first logon anim option
* Unrelated: indentation fixes from compile script
* Some little touches to the first-run script
---------
Co-authored-by: Real-MullaC <callumjanes2007new+github@gmail.com>
* Disable "Microsoft account" notification source
* [WinPE] Remove driver addition block for WinPE
WE DO NOT TOUCH THE DRIVERS IN WinPE. There are reports of people getting "Install driver to show hardware" screens all over this repository, and on Discord; and the less drivers we touch in WinPE, the better.
Drivers can still be added to Preinstallation Environments in the following ways:
- Using the driver installation screens
- Firing up "drvload.exe <driver>" in cmd
* [Fix] Added fallback for DISM export command
This is a port of the fix in #3305
* [Cleanup] Removed some comments that no longer make sense
* [Fix] Same DISM export image fallback fix
* Merge branch 'main' into microwin-202506
* [Fix] Improve UI consistency for instructions
Fixes#3394
* Merge branch 'main' into microwin-202506
* [Unattended answer file] Remove it from drive root
The answer file, on the drive root, is not necessary for us to apply it. In fact, it's not even used there
* Merge branch 'main' into microwin-202506
* [MicroWin] June-August 2025 Update (#3) -- Contributions from Callum
* Allow people without compatible hardware or a USB to use MicroWin.
* Update functions/microwin/Microwin-NewUnattend.ps1
Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com>
* Update Invoke-Microwin.ps1
* Update Microwin-NewUnattend.ps1
* Update Microwin-NewUnattend.ps1
* Add error pop up if ISO Creation fails.
Issue 2653
* Add Disable WPBT Execution to MicroWin.
* Update functions/microwin/Invoke-Microwin.ps1
Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com>
* modified: functions/microwin/Invoke-Microwin.ps1
modified: xaml/inputXML.xaml
---------
Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com>
* Add conversion to ESD (#4)
* Add conversion to ESD
Issue - #3450
* Update Invoke-Microwin.ps1
Added quotes to the file paths. Put all the arguments in 1 string (as that also works fine)
---------
Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com>
* Update MicroWin contributor list
* Merge branch 'main' into microwin-202506
* Merge branch 'main' into microwin-202506
* [MicroWin] Add automatic configuration settings
Originally implemented in #2618. Adapted to follow the new file structure. And it works.
Though there are issues that will be detailed very soon
* [Fix] Fixed typos, updated descriptions
* Re-add WinPE driver addition
We're not yet sure if that is the actual problem of missing storage controllers. Logs can tell us more about this. Maybe for a future PR?
* [Fix/WPBT] Add spaces to reg key path
Avoid REG failure
* [Fix/XAML] Fix word wrapping issue for checkboxes
* add TIMEDATE.cpl Panel
* Fix standardization
---------
Co-authored-by: Chris Titus <contact@christitus.com>
Co-authored-by: Chris Titus Tech <dfm.titus@gmail.com>
* Checks if password exists for the user, if it doesn't the user is prompted to create one.
It checks if the password is equal to $null using `ValidateCredentials` and if it isn't the variable will be created. If it is equal to $null, a window with text, a textbox and a button will appear asking the user to create a password. That password is then set for the user and the winget installation continues.
* Made this a little more secure
Securing the password variable when it gets created and deleting it after it's done being used.
* Forces the user to input their password and automatically puts their username into the credentials box
* Removed the second greater than 0 check
* Adaptive Busy Icon + Message
- added adaptive color & message of busy indicator
- fixed placement at some places for "Set-WinUtilTaskbaritem" as dialogbox which waits for user input came before
* seperate long Errormessaged for BusyIndication
* add CharacterEllipsis as TextTrimming on BusyText
Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com>
* fix BusyIndication + add more detailed one
* removing wip busymessages before process
* Improve reporting of messages significantly (#15)
- Added parameter sets
- Implemented detections for interactive/noninteractive processes
* Fix hidden message action (#16)
---------
Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com>
It just adds the `$null =` from the else to the start of the add line if the package is equal to `na`.
For winget the package added is put into an extra set of $(), because of how it is in the else. I haven't tested it without.