Compare commits

...

6 Commits

Author SHA1 Message Date
Gabi
a05034381d Update Win11 Creator (#4196)
* Update autounattend.xml

* Update autounattend.xml

* Updated autounattend.xml to disable reccomened section

* Update autounattend.xml
2026-03-13 10:18:36 -05:00
Chris Titus
b1d4eb022c Fix mount disk error (#4204)
* wait for mounting to assign disk letter

* update

* Gabi fixing my slop with a comment
2026-03-12 15:45:42 -05:00
Gabi
3dbd993cb4 Update bug_report.yaml (#4206) 2026-03-12 15:27:37 -05:00
Gabi
ec17c085df Fix: Prevent Win11 Creator UI reset when switching tabs during ISO Creation (#4199)
* Fix: Prevent Win11 Creator UI reset when switching tabs during ISO modification

* Update Invoke-WinUtilISO.ps1
2026-03-12 15:09:52 -05:00
Chris Titus
7da4e78d4b chore: Update generated dev docs (#4205) 2026-03-12 15:09:30 -05:00
Gabi
1943b30ec9 Make WPFTweaksRevertStartMenu more understandable and move it to essential tweaks (#4202)
* Make WPFTweaksRevertStartMenu more understandable

* Update tweaks.json
2026-03-12 15:08:56 -05:00
5 changed files with 45 additions and 61 deletions

View File

@@ -6,20 +6,8 @@ body:
- type: markdown
attributes:
value: |
## ⚠️ **IMPORTANT**
- 🛠️ **Supported environments only:** We only support Windows 11.
- 💡 For general questions, use the [Discussions section](https://github.com/Christitustech/winutil/discussions) or join our Community-driven [Discord Server](https://discord.gg/RUbZUZyByQ).
- type: checkboxes
attributes:
label: ⚙️ Issue Checklist
options:
- label: I have read the guidelines.
- label: I checked for duplicate issues.
- label: I searched for existing discussions.
- label: I checked for an existing pull request that addresses this issue.
validations:
required: true
- Remember, we only support Windows 11. If you encounter problems on Windows 10, please consider upgrading to Windows 11.
- For general questions, join our Community-driven [Discord Server](https://discord.gg/RUbZUZyByQ).
- type: dropdown
id: affected_part
@@ -32,17 +20,17 @@ body:
- Updates Tab
- Win11 Creator Tab
validations:
required: true
required: false
- type: textarea
id: issue_description
attributes:
label: 📝 Provide a clear and concise description of the issue.
label: Provide a clear and concise description of the issue.
validations:
required: true
- type: textarea
id: error_output
attributes:
label: Paste the full error output (if available) or Screenshot.
label: Paste the full error output (if available) or Screenshot.
placeholder: "Include any relevant logs or error messages."

View File

@@ -88,9 +88,9 @@
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/widget"
},
"WPFTweaksRevertStartMenu": {
"Content": "Revert the new start menu",
"Description": "Uses vivetool to revert to the original start menu from 24H2.",
"category": "z__Advanced Tweaks - CAUTION",
"Content": "Revert Start Menu layout",
"Description": "Bring back the old Start Menu layout from before the gradual rollout of the new one in 25H2.",
"category": "Essential Tweaks",
"panel": "1",
"InvokeScript": [
"
@@ -120,7 +120,7 @@
Write-Host 'New start menu reverted please restart your computer to take effect'
"
],
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/revertstartmenu"
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/revertstartmenu"
},
"WPFTweaksDisableStoreSearch": {
"Content": "Disable Microsoft Store search results",

View File

@@ -1,13 +1,13 @@
---
title: "Revert the new start menu"
title: "Revert Start Menu layout"
description: ""
---
```json {filename="config/tweaks.json",linenos=inline,linenostart=90}
"WPFTweaksRevertStartMenu": {
"Content": "Revert the new start menu",
"Description": "Uses vivetool to revert to the original start menu from 24H2.",
"category": "z__Advanced Tweaks - CAUTION",
"Content": "Revert Start Menu layout",
"Description": "Bring back the old Start Menu layout from before the gradual rollout of the new one in 25H2.",
"category": "Essential Tweaks",
"panel": "1",
"InvokeScript": [
"

View File

@@ -49,8 +49,13 @@ function Invoke-WinUtilISOMountAndVerify {
Set-WinUtilProgressBar -Label "Mounting ISO..." -Percent 10
try {
$diskImage = Mount-DiskImage -ImagePath $isoPath -PassThru -ErrorAction Stop
$driveLetter = ($diskImage | Get-Volume).DriveLetter + ":"
Mount-DiskImage -ImagePath $isoPath -ErrorAction Stop | Out-Null
do {
Start-Sleep -Milliseconds 500
} until ((Get-DiskImage -ImagePath $isoPath | Get-Volume).DriveLetter)
$driveLetter = (Get-DiskImage -ImagePath $isoPath | Get-Volume).DriveLetter + ":"
Write-Win11ISOLog "Mounted at drive $driveLetter"
Set-WinUtilProgressBar -Label "Verifying ISO contents..." -Percent 30
@@ -144,6 +149,7 @@ function Invoke-WinUtilISOModify {
Write-Win11ISOLog "Selected edition: $selectedEditionName (Index $selectedWimIndex)"
$sync["WPFWin11ISOModifyButton"].IsEnabled = $false
$sync["Win11ISOModifying"] = $true
$existingWorkDir = Get-Item -Path (Join-Path $env:TEMP "WinUtil_Win11ISO*") -ErrorAction SilentlyContinue |
Where-Object { $_.PSIsContainer } | Sort-Object LastWriteTime -Descending | Select-Object -First 1
@@ -303,6 +309,7 @@ function Invoke-WinUtilISOModify {
})
} finally {
Start-Sleep -Milliseconds 800
$sync["Win11ISOModifying"] = $false
$sync["WPFWin11ISOStatusLog"].Dispatcher.Invoke([action]{
$sync.progressBarTextBlock.Text = ""
$sync.progressBarTextBlock.ToolTip = ""
@@ -323,6 +330,11 @@ function Invoke-WinUtilISOModify {
function Invoke-WinUtilISOCheckExistingWork {
if ($sync["Win11ISOContentsDir"] -and (Test-Path $sync["Win11ISOContentsDir"])) { return }
# Check if ISO modification is currently in progress
if ($sync["Win11ISOModifying"]) {
return
}
$existingWorkDir = Get-Item -Path (Join-Path $env:TEMP "WinUtil_Win11ISO*") -ErrorAction SilentlyContinue |
Where-Object { $_.PSIsContainer } | Sort-Object LastWriteTime -Descending | Select-Object -First 1

View File

@@ -333,27 +333,7 @@ $scripts = @(
reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Start_TrackDocs /t REG_DWORD /d 0 /f;
};
{
Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class Win32Broadcast {
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
public static extern IntPtr SendMessageTimeout(
IntPtr hWnd,
uint Msg,
IntPtr wParam,
string lParam,
uint fuFlags,
uint uTimeout,
out IntPtr lpdwResult);
}
"@;
[Win32Broadcast]::SendMessageTimeout( [IntPtr]0xffff, 0x1A, [IntPtr]::Zero, 'ImmersiveColorSet', 0x2, 100, [ref]([IntPtr]::Zero) );
};
{
Get-Process -Name 'explorer' -ErrorAction 'SilentlyContinue' | Where-Object -FilterScript {
$_.SessionId -eq ( Get-Process -Id $PID ).SessionId;
} | Stop-Process -Force;
Restart-Computer -Force;
};
);
@@ -434,15 +414,13 @@ $scripts = @(
</File>
<File path="C:\Windows\Setup\Scripts\FirstLogon.ps1">
$scripts = @(
{
cmd.exe /c "rmdir C:\Windows.old";
};
{
Remove-Item -LiteralPath @(
'C:\Windows\Panther\unattend.xml';
'C:\Windows\Panther\unattend-original.xml';
'C:\Windows\Setup\Scripts\Wifi.xml';
) -Force -ErrorAction 'SilentlyContinue' -Verbose;
'C:\Windows.old';
) -Recurse -Force -ErrorAction 'SilentlyContinue';
};
{
reg.exe delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /f;
@@ -457,6 +435,14 @@ $scripts = @(
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\UsoSvc" /v Start /t REG_DWORD /d 2 /f;
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc" /v Start /t REG_DWORD /d 3 /f;
};
{
reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Education" /f;
reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start" /f;
reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Explorer" /f;
reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Education" /v IsEducationEnvironment /t REG_DWORD /d 1 /f;
reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Explorer" /v HideRecommendedSection /t REG_DWORD /d 1 /f;
reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start" /v HideRecommendedSection /t REG_DWORD /d 1 /f;
};
{
$recallFeature = Get-WindowsOptionalFeature -Online -ErrorAction SilentlyContinue | Where-Object { $_.State -eq 'Enabled' -and $_.FeatureName -like 'Recall' };
if( $recallFeature ) {
@@ -464,15 +450,13 @@ $scripts = @(
}
};
{
try {
$viveDir = Join-Path $env:TEMP 'ViVeTool';
$viveZip = Join-Path $env:TEMP 'ViVeTool.zip';
Invoke-WebRequest 'https://github.com/thebookisclosed/ViVe/releases/download/v0.3.4/ViVeTool-v0.3.4-IntelAmd.zip' -OutFile $viveZip;
Expand-Archive -Path $viveZip -DestinationPath $viveDir -Force;
Remove-Item -Path $viveZip -Force;
Start-Process -FilePath (Join-Path $viveDir 'ViVeTool.exe') -ArgumentList '/disable /id:47205210' -Wait -NoNewWindow;
Remove-Item -Path $viveDir -Recurse -Force;
} catch {}
$viveDir = Join-Path $env:TEMP 'ViVeTool';
$viveZip = Join-Path $env:TEMP 'ViVeTool.zip';
Invoke-WebRequest 'https://github.com/thebookisclosed/ViVe/releases/download/v0.3.4/ViVeTool-v0.3.4-IntelAmd.zip' -OutFile $viveZip;
Expand-Archive -Path $viveZip -DestinationPath $viveDir -Force;
Remove-Item -Path $viveZip -Force;
Start-Process -FilePath (Join-Path $viveDir 'ViVeTool.exe') -ArgumentList '/disable /id:47205210' -Wait -NoNewWindow;
Remove-Item -Path $viveDir -Recurse -Force;
};
{
if( (Get-BitLockerVolume -MountPoint $Env:SystemDrive).ProtectionStatus -eq 'On' ) {