From 1eeacf33512a930c58bfba959ba2eaec0e9765f1 Mon Sep 17 00:00:00 2001 From: Raphire <9938813+Raphire@users.noreply.github.com> Date: Sun, 8 Mar 2026 01:34:53 +0100 Subject: [PATCH 01/10] Move Config files to `Config` folder --- .github/CONTRIBUTING.md | 30 +++++++++---------- Apps.json => Config/Apps.json | 0 .../DefaultSettings.json | 0 {Assets => Config}/Features.json | 0 Win11Debloat.ps1 | 10 +++---- 5 files changed, 20 insertions(+), 20 deletions(-) rename Apps.json => Config/Apps.json (100%) rename DefaultSettings.json => Config/DefaultSettings.json (100%) rename {Assets => Config}/Features.json (100%) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 81b9ded..d6375f6 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,7 +1,7 @@ # How to Contribute? We welcome contributions from the community. You can contribute to Win11Debloat by: -- Reporting issues and bugs [here](https://github.com/Raphire/Win11Debloat/issues/new?template=bug_report.yml). +- Reporting issues and bugs [here](https://github.com/Raphire/Win11Debloat/issues/new?template=bug_report.yml) - Submitting feature requests [here](https://github.com/Raphire/Win11Debloat/issues/new?template=feature_request.yml) - Testing Win11Debloat - Creating a pull request @@ -59,16 +59,16 @@ Understanding the project structure is essential for contributing effectively: ``` Win11Debloat/ -├── Win11Debloat.ps1 # Main PowerShell script -├── Apps.json # List of supported apps for removal -├── DefaultSettings.json # Default configuration preset -├── LastUsedSettings.json # Last used configuration (generated during use) -├── Assets/ -│ └── Features.json # All features with metadata -├── Regfiles/ # Registry files for each feature -├── Schemas/ # XAML Schemas for GUI elements -└── Scripts/ # Additional PowerShell scripts and functions - └── Get.ps1 # Script used for the quick launch method to automatically download and run Win11debloat +├── Win11Debloat.ps1 # Main PowerShell script +├── Scripts/ # Additional PowerShell scripts and functions +│ └── Get.ps1 # Script used for the quick launch method to automatically download and run Win11debloat +├── Config/ +│ ├── Apps.json # List of supported apps for removal +│ ├── DefaultSettings.json # Default configuration preset +│ ├── Features.json # All features with metadata +│ └── LastUsedSettings.json # Last used configuration (generated during use) +├── Regfiles/ # Registry files for each feature +└── Schemas/ # XAML Schemas for GUI elements ``` ### Best Practices @@ -115,7 +115,7 @@ To add a new app that can be removed via Win11Debloat: Get-AppxPackage | Select-Object Name, PackageFullName ``` -2. **Edit `Apps.json`**: Add a new entry to the `"Apps"` array: +2. **Edit `Config/Apps.json`**: Add a new entry to the `"Apps"` array: ```json { "FriendlyName": "Display Name", @@ -132,7 +132,7 @@ To add a new app that can be removed via Win11Debloat: ### Adding a New Feature -Features are defined in `Assets/Features.json` and can modify Windows settings via registry files or PowerShell commands. +Features are defined in `Config/Features.json` and can modify Windows settings via registry files or PowerShell commands. > [!NOTE] > For simple features that just include a registry change, no actual coding is required in the main script except for adding the corresponding command-line parameters. The GUI is automatically built using the information in the Features.json file. @@ -167,7 +167,7 @@ If your feature requires more than just applying a registry file, add custom log #### 2. Add Feature to Features.json -Add your feature to the `"Features"` array in `Assets/Features.json`: +Add your feature to the `"Features"` array in `Config/Features.json`: ```json { @@ -211,7 +211,7 @@ Add a corresponding parameter to both `Win11Debloat.ps1` AND `Scripts/Get.ps1`, To add a new category for organizing features: -- Add a new category entry to the `"Categories"` array in `Assets/Features.json`: +- Add a new category entry to the `"Categories"` array in `Config/Features.json`: ```json { "Name": "Your Category Name", diff --git a/Apps.json b/Config/Apps.json similarity index 100% rename from Apps.json rename to Config/Apps.json diff --git a/DefaultSettings.json b/Config/DefaultSettings.json similarity index 100% rename from DefaultSettings.json rename to Config/DefaultSettings.json diff --git a/Assets/Features.json b/Config/Features.json similarity index 100% rename from Assets/Features.json rename to Config/Features.json diff --git a/Win11Debloat.ps1 b/Win11Debloat.ps1 index f08848a..3b81f7f 100755 --- a/Win11Debloat.ps1 +++ b/Win11Debloat.ps1 @@ -103,10 +103,11 @@ param ( # Define script-level variables & paths $script:Version = "2026.03.07" -$script:DefaultSettingsFilePath = "$PSScriptRoot/DefaultSettings.json" -$script:AppsListFilePath = "$PSScriptRoot/Apps.json" -$script:SavedSettingsFilePath = "$PSScriptRoot/LastUsedSettings.json" -$script:CustomAppsListFilePath = "$PSScriptRoot/CustomAppsList" +$script:AppsListFilePath = "$PSScriptRoot/Config/Apps.json" +$script:DefaultSettingsFilePath = "$PSScriptRoot/Config/DefaultSettings.json" +$script:FeaturesFilePath = "$PSScriptRoot/Config/Features.json" +$script:SavedSettingsFilePath = "$PSScriptRoot/Config/LastUsedSettings.json" +$script:CustomAppsListFilePath = "$PSScriptRoot/Config/CustomAppsList" $script:DefaultLogPath = "$PSScriptRoot/Logs/Win11Debloat.log" $script:RegfilesPath = "$PSScriptRoot/Regfiles" $script:AssetsPath = "$PSScriptRoot/Assets" @@ -116,7 +117,6 @@ $script:MessageBoxSchema = "$PSScriptRoot/Schemas/MessageBoxWindow.xaml" $script:AboutWindowSchema = "$PSScriptRoot/Schemas/AboutWindow.xaml" $script:ApplyChangesWindowSchema = "$PSScriptRoot/Schemas/ApplyChangesWindow.xaml" $script:SharedStylesSchema = "$PSScriptRoot/Schemas/SharedStyles.xaml" -$script:FeaturesFilePath = "$script:AssetsPath/Features.json" $script:ControlParams = 'WhatIf', 'Confirm', 'Verbose', 'Debug', 'LogPath', 'Silent', 'Sysprep', 'User', 'NoRestartExplorer', 'RunDefaults', 'RunDefaultsLite', 'RunSavedSettings', 'RunAppsListGenerator', 'CLI', 'AppRemovalTarget' From ea9b3ce02b9769150e99190a3159f34caefbea71 Mon Sep 17 00:00:00 2001 From: Raphire <9938813+Raphire@users.noreply.github.com> Date: Sun, 8 Mar 2026 02:07:35 +0100 Subject: [PATCH 02/10] Update CONTRIBUTING.md with best practices and common pitfalls for contributors --- .github/CONTRIBUTING.md | 93 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 86 insertions(+), 7 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index d6375f6..dedaba3 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -73,15 +73,14 @@ Win11Debloat/ ### Best Practices -1. **Test Thoroughly**: Always test your changes on a Windows test environment before submitting. +1. **Test Thoroughly**: Always test your changes on a Windows test environment before submitting. This includes undoing tweaks and running script as another user and in Sysprep mode. 2. **Document Changes**: Update the `README.md` and other relevant documentation. Wiki documentation will be generated/updated based on the `Features.json` and `Apps.json` files. 3. **Follow Existing Patterns**: Look at existing implementations for guidance. 4. **Use Clear Naming**: Choose descriptive names for features, IDs, and registry files. -5. **Provide All Registry Files**: Always create an `Undo` registry file for reversibility, aswell as a `Sysprep` registry file for Sysprep mode. -6. **Minimal Changes**: Registry files should only modify what's necessary. -7. **Comment Your Code**: Add comments explaining your reasoning for complex logic in PowerShell scripts. -8. **Version Constraints**: Use `MinVersion` and `MaxVersion` if a feature only applies to specific Windows versions. -9. **Limit pull requests to 1 feature**: Keep pull requests limited to just one feature, this makes it easier to review your changes. +5. **Minimal Changes**: Registry files should only modify what's necessary. +6. **Comment Your Code**: Add comments explaining your reasoning for complex logic in PowerShell scripts. +7. **Version Constraints**: Use `MinVersion` and `MaxVersion` if a feature only applies to specific Windows versions. +8. **Limit pull requests to 1 feature**: Keep pull requests limited to just one feature, this makes it easier to review your changes. ### Code Style @@ -101,6 +100,31 @@ Win11Debloat/ 4. **Verify Sysprep**: Test that the Sysprep registry file properly applies changes for new users 5. **Check Side Effects**: Ensure no unintended consequences +### Common Pitfalls + +Avoid these common mistakes when contributing: + +1. **Forgetting Get.ps1**: When adding a new command-line parameter, contributors often remember to add it to `Win11Debloat.ps1` but forget to add the same parameter to `Scripts/Get.ps1`. Both files **must** have matching parameters. + +2. **Missing Registry Files**: Always create an `Undo` registry file for reversibility, aswell as a `Sysprep` registry file for Sysprep mode. + +3. **Incorrect Registry Hives for Sysprep**: Sysprep registry files apply changes to all new users and must use `hkey_users\default` instead of `HKEY_CURRENT_USER`. Ensure you update **all** registry keys in the file. + +4. **Wrong Registry File Location**: + - Main action files go in `Regfiles/` + - Undo files go in `Regfiles/Undo/` + - Sysprep files go in `Regfiles/Sysprep/` + + Placing files in the wrong directory will cause the script to fail when trying to apply or undo changes. + +6. **Not Testing Undo Functionality**: Always test that your undo registry file properly reverts all changes. A feature that can't be undone will frustrate users. + +7. **Not Testing User/Sysprep Functionality**: Always test that your feature works when applied to another user or to the Windows default user with Sysprep. Sysprep changes can be tested by creating new users after running the script. + +7. **Missing Null Category**: Features without a `Category` field (set to `null`) won't appear in the GUI. This is intentional for command-line-only features, make sure this is what you want before submitting. + +8. **Hardcoded Paths**: When writing PowerShell logic, use `$PSScriptRoot` and script variables instead of hardcoded paths. This ensures the script works regardless of where it's installed. + ## Implementing New Features ### Adding Support for a New App @@ -181,6 +205,7 @@ Add your feature to the `"Features"` array in `Config/Features.json`: "ApplyText": "Disabling your feature...", "UndoAction": "Enable", "RegistryUndoKey": "Enable_YourFeature.reg", + "RequiresReboot": false, "MinVersion": null, "MaxVersion": null } @@ -190,13 +215,14 @@ Add your feature to the `"Features"` array in `Config/Features.json`: - `FeatureId`: Unique identifier (must match parameter name in Win11Debloat.ps1 and Get.ps1) - `Label`: Short description shown in the UI, written in a way to fit with the Action or UndoAction prefixed - `ToolTip`: Detailed explanation of what the feature does, used for tooltips in the GUI -- `Category`: One of the predefined categories (see Categories array in Features.json) +- `Category`: One of the predefined categories (see Categories array in Features.json), features without a category won't be loaded into the GUI. - `Priority`: Optional. The priority value (int) is used to sort features within a category. If this field is omitted the feature will be sorted based on the order in the Features.json file. - `Action`: Action word for the feature (e.g., "Disable", "Enable", "Hide", "Show") - `RegistryKey`: Filename of the registry file to apply (in Regfiles/ directory) or null if feature does not require registry changes - `ApplyText`: Message shown when applying the feature - `UndoAction`: Action word for reverting (e.g., "Enable", "Show") - `RegistryUndoKey`: Filename of the registry file to revert changes or null if feature does not require registry changes +- `RequiresReboot`: Optional boolean. Set to `true` if the feature requires a system reboot to take effect - `MinVersion`: Minimum Windows build version (e.g., "22000") or null - `MaxVersion`: Maximum Windows version or null @@ -207,6 +233,59 @@ Add a corresponding parameter to both `Win11Debloat.ps1` AND `Scripts/Get.ps1`, [switch]$YourFeatureId, ``` +### Adding a Feature to the Default Preset + +> [!IMPORTANT] +> The default preset is intentionally conservative. Features added to it should be thoroughly tested and widely beneficial. When in doubt, leave the feature out of the default preset. + +The default preset (`Config/DefaultSettings.json`) defines which features are automatically applied when users run Win11Debloat in "Default Mode" or with the `-RunDefaults` parameter. This preset should include features that are widely considered to improve the Windows experience without breaking functionality. + +**When to add a feature to the default preset:** +- The feature removes obvious bloatware or distractions +- The feature enhances privacy without breaking core functionality +- The feature is generally non-controversial and beneficial to most users +- The change can be easily reverted if needed + +**When NOT to add a feature to the default preset:** +- The feature significantly changes core Windows behavior +- The feature might break applications or workflows for some users +- The feature is highly opinionated or preference-based +- The feature is experimental or not thoroughly tested + +To add your feature to the default preset, edit `Config/DefaultSettings.json` and add a new entry to the `"Settings"` array: + +```json +{ + "Name": "YourFeatureId", + "Value": true +} +``` + +**Field Descriptions**: +- `Name`: Must exactly match the `FeatureId` from Features.json +- `Value`: Set to `true` to enable the feature in default mode + +**Example:** +```json +{ + "Version": "1.0", + "Settings": [ + { + "Name": "CreateRestorePoint", + "Value": true + }, + { + "Name": "DisableTelemetry", + "Value": true + }, + { + "Name": "YourFeatureId", + "Value": true + } + ] +} +``` + ### Adding a Category To add a new category for organizing features: From 9467d6cb7bc724625958f856e6e27e4f949808dd Mon Sep 17 00:00:00 2001 From: Raphire <9938813+Raphire@users.noreply.github.com> Date: Sun, 8 Mar 2026 02:14:28 +0100 Subject: [PATCH 03/10] Update CONTRIBUTING.md --- .github/CONTRIBUTING.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index dedaba3..6886375 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -92,14 +92,6 @@ Win11Debloat/ - Try to limit your indentation to a max of 4-5 levels, if possible. - Use [Segoe Fluent Icon Assets](https://learn.microsoft.com/en-us/windows/apps/design/iconography/segoe-fluent-icons-font) for icons. -### Testing Registry Changes - -1. **Backup Registry**: Always create a system restore point -2. **Test Manually**: Test the registry changes manually first -3. **Verify Undo**: Test that the undo registry file properly reverts changes -4. **Verify Sysprep**: Test that the Sysprep registry file properly applies changes for new users -5. **Check Side Effects**: Ensure no unintended consequences - ### Common Pitfalls Avoid these common mistakes when contributing: @@ -342,7 +334,7 @@ UI Groups allow features to be grouped together in the GUI with a combobox (drop - Go to the original Win11Debloat repository - Click "New Pull Request" - Select your fork and branch - - Provide a clear description of your changes + - Provide a clear description of your changes, including references to the registry keys used - Reference any related issues 4. **Respond to feedback**: Be prepared to make adjustments based on code review feedback. From 63a219d3e7ab9fbafdcd97c87e21917bd67e78ce Mon Sep 17 00:00:00 2001 From: Raphire <9938813+Raphire@users.noreply.github.com> Date: Sun, 8 Mar 2026 02:15:15 +0100 Subject: [PATCH 04/10] Update CONTRIBUTING.md --- .github/CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 6886375..6ba18f6 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -141,7 +141,7 @@ To add a new app that can be removed via Win11Debloat: } ``` -3. **Guidelines**: +3. **Follow the Guidelines**: - Use clear, user-friendly names for `FriendlyName` - Set `SelectedByDefault` to `true` only for apps that are largely considered bloatware, otherwise set to `false` - Provide a concise description explaining what the app does From 3d6259f1179f59458172a402e3a9fdd50789a254 Mon Sep 17 00:00:00 2001 From: Raphire <9938813+Raphire@users.noreply.github.com> Date: Sun, 8 Mar 2026 22:31:09 +0100 Subject: [PATCH 05/10] When script encounters an error, show button for reporting the issue --- Scripts/GUI/Show-ApplyModal.ps1 | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Scripts/GUI/Show-ApplyModal.ps1 b/Scripts/GUI/Show-ApplyModal.ps1 index de0b0cc..0cc42d9 100644 --- a/Scripts/GUI/Show-ApplyModal.ps1 +++ b/Scripts/GUI/Show-ApplyModal.ps1 @@ -87,6 +87,7 @@ function Show-ApplyModal { $script:ApplyStepNameEl.Text = "Preparing..." $script:ApplyStepCounterEl.Text = "Preparing..." $script:ApplyProgressBarEl.Value = 0 + $script:ApplyModalInErrorState = $false # Set up progress callback for ExecuteAllChanges $script:ApplyProgressCallback = { @@ -192,6 +193,23 @@ function Show-ApplyModal { $script:ApplyCompletionIconEl.Foreground = [System.Windows.Media.SolidColorBrush]::new([System.Windows.Media.ColorConverter]::ConvertFromString("#c42b1c")) $script:ApplyCompletionTitleEl.Text = "Error" $script:ApplyCompletionMessageEl.Text = "An error occurred while applying changes: $($_.Exception.Message)" + + # Set error state to change Kofi button to report link + $script:ApplyModalInErrorState = $true + + # Update Kofi button to be a report issue button + $applyKofiBtn.Content = $null + + $reportText = [System.Windows.Controls.TextBlock]::new() + $reportText.Text = 'Report the issue' + $reportText.VerticalAlignment = 'Center' + $reportText.FontSize = 14 + $reportText.Margin = [System.Windows.Thickness]::new(0, 0, 0, 1) + + $applyKofiBtn.Content = $reportText + + [System.Windows.Automation.AutomationProperties]::SetName($applyKofiBtn, 'Report the issue') + $applyWindow.Dispatcher.Invoke([System.Windows.Threading.DispatcherPriority]::Render, [action]{}) } finally { @@ -206,7 +224,11 @@ function Show-ApplyModal { }) $applyKofiBtn.Add_Click({ - Start-Process "https://ko-fi.com/raphire" + if ($script:ApplyModalInErrorState) { + Start-Process "https://github.com/Raphire/Win11Debloat/issues/new" + } else { + Start-Process "https://ko-fi.com/raphire" + } }) $applyCancelBtn.Add_Click({ From 18823c4a80b033e35583d6196f052a1379d6469e Mon Sep 17 00:00:00 2001 From: Jeffrey <9938813+Raphire@users.noreply.github.com> Date: Mon, 9 Mar 2026 01:47:32 +0100 Subject: [PATCH 06/10] Import Microsoft.PowerShell.Security module --- Win11Debloat.ps1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Win11Debloat.ps1 b/Win11Debloat.ps1 index 3b81f7f..1be2cc3 100755 --- a/Win11Debloat.ps1 +++ b/Win11Debloat.ps1 @@ -101,6 +101,8 @@ param ( +Import-Module Microsoft.PowerShell.Security -SkipEditionCheck + # Define script-level variables & paths $script:Version = "2026.03.07" $script:AppsListFilePath = "$PSScriptRoot/Config/Apps.json" From 992c80bc1e7061f6f2c4701b654cad96784f4ee0 Mon Sep 17 00:00:00 2001 From: Raphire <9938813+Raphire@users.noreply.github.com> Date: Mon, 9 Mar 2026 22:49:07 +0100 Subject: [PATCH 07/10] Launch main script using pwsh.exe when Get.ps1 is run in Powershell 7 --- Scripts/Get.ps1 | 10 +++++++++- Win11Debloat.ps1 | 2 -- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Scripts/Get.ps1 b/Scripts/Get.ps1 index 9f43619..1eae966 100644 --- a/Scripts/Get.ps1 +++ b/Scripts/Get.ps1 @@ -166,8 +166,16 @@ else { $windowStyle = "Normal" } +# Use powershell 7 to launch the script if the current environment is powershell 7, otherwise use powershell 5.1 +if ($PSVersionTable.PSVersion.Major -ge 7) { + $powershellExe = "pwsh.exe" +} +else { + $powershellExe = "powershell.exe" +} + # Run Win11Debloat script with the provided arguments -$debloatProcess = Start-Process powershell.exe -WindowStyle $windowStyle -PassThru -ArgumentList "-executionpolicy bypass -File $env:TEMP\Win11Debloat\Win11Debloat.ps1 $arguments" -Verb RunAs +$debloatProcess = Start-Process $powershellExe -WindowStyle $windowStyle -PassThru -ArgumentList "-executionpolicy bypass -File $env:TEMP\Win11Debloat\Win11Debloat.ps1 $arguments" -Verb RunAs # Wait for the process to finish before continuing if ($null -ne $debloatProcess) { diff --git a/Win11Debloat.ps1 b/Win11Debloat.ps1 index 1be2cc3..3b81f7f 100755 --- a/Win11Debloat.ps1 +++ b/Win11Debloat.ps1 @@ -101,8 +101,6 @@ param ( -Import-Module Microsoft.PowerShell.Security -SkipEditionCheck - # Define script-level variables & paths $script:Version = "2026.03.07" $script:AppsListFilePath = "$PSScriptRoot/Config/Apps.json" From 8401474a79215a19400446072065629e2eaede95 Mon Sep 17 00:00:00 2001 From: Raphire <9938813+Raphire@users.noreply.github.com> Date: Mon, 9 Mar 2026 23:03:56 +0100 Subject: [PATCH 08/10] Add option to hide the 'All Apps' section from the start menu (#513) --- Config/Features.json | 13 +++++++++++++ README.md | 5 +++-- Regfiles/Disable_Start_All_Apps.reg | 4 ++++ Regfiles/Sysprep/Disable_Start_All_Apps.reg | 4 ++++ Regfiles/Undo/Enable_Start_All_Apps.reg | 7 +++++++ Scripts/Get.ps1 | 1 + Win11Debloat.ps1 | 1 + 7 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 Regfiles/Disable_Start_All_Apps.reg create mode 100644 Regfiles/Sysprep/Disable_Start_All_Apps.reg create mode 100644 Regfiles/Undo/Enable_Start_All_Apps.reg diff --git a/Config/Features.json b/Config/Features.json index 9e7cb4f..72f559c 100644 --- a/Config/Features.json +++ b/Config/Features.json @@ -575,6 +575,19 @@ "MinVersion": 22621, "MaxVersion": null }, + { + "FeatureId": "DisableStartAllApps", + "Label": "'All Apps' section in the start menu", + "ToolTip": "This will hide the 'All Apps' section in the start menu, which shows all installed apps. WARNING: Hiding this section may make it harder to find installed apps on your system. This feature uses policies, which will lock down certain settings.", + "Category": "Start Menu & Search", + "Action": "Hide", + "RegistryKey": "Disable_Start_All_Apps.reg", + "ApplyText": "Disabling the 'All Apps' section in the start menu...", + "UndoAction": "Show", + "RegistryUndoKey": "Enable_Start_All_Apps.reg", + "MinVersion": 26200, + "MaxVersion": null + }, { "FeatureId": "DisableStartPhoneLink", "Label": "Phone Link integration in the start menu", diff --git a/README.md b/README.md index 26eea6d..2a36508 100755 --- a/README.md +++ b/README.md @@ -129,8 +129,9 @@ Below is an overview of the key features and functionality offered by Win11Deblo #### Start Menu & Search -- Remove or replace all pinned apps from start for the current user, or for all existing & new users. (W11 only) -- Disable the recommended section in the start menu. (W11 only) +- Remove or replace all pinned apps from the start menu. (W11 only) +- Hide the recommended section in the start menu. (W11 only) +- Hide the 'All Apps' section in the start menu. (W11 only) - Disable the Phone Link mobile devices integration in the start menu. (W11 only) - Disable Bing web search & Copilot integration in Windows search. - Disable Microsoft Store app suggestions in Windows search. (W11 only) diff --git a/Regfiles/Disable_Start_All_Apps.reg b/Regfiles/Disable_Start_All_Apps.reg new file mode 100644 index 0000000..1b6ea54 --- /dev/null +++ b/Regfiles/Disable_Start_All_Apps.reg @@ -0,0 +1,4 @@ +Windows Registry Editor Version 5.00 + +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer] +"NoStartMenuMorePrograms"=dword:00000001 diff --git a/Regfiles/Sysprep/Disable_Start_All_Apps.reg b/Regfiles/Sysprep/Disable_Start_All_Apps.reg new file mode 100644 index 0000000..3b565a0 --- /dev/null +++ b/Regfiles/Sysprep/Disable_Start_All_Apps.reg @@ -0,0 +1,4 @@ +Windows Registry Editor Version 5.00 + +[hkey_users\default\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer] +"NoStartMenuMorePrograms"=dword:00000001 diff --git a/Regfiles/Undo/Enable_Start_All_Apps.reg b/Regfiles/Undo/Enable_Start_All_Apps.reg new file mode 100644 index 0000000..b6ab02a --- /dev/null +++ b/Regfiles/Undo/Enable_Start_All_Apps.reg @@ -0,0 +1,7 @@ +Windows Registry Editor Version 5.00 + +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer] +"NoStartMenuMorePrograms"=- + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer] +"NoStartMenuMorePrograms"=- diff --git a/Scripts/Get.ps1 b/Scripts/Get.ps1 index 1eae966..d147708 100644 --- a/Scripts/Get.ps1 +++ b/Scripts/Get.ps1 @@ -57,6 +57,7 @@ param ( [switch]$HideSearchTb, [switch]$ShowSearchIconTb, [switch]$ShowSearchLabelTb, [switch]$ShowSearchBoxTb, [switch]$HideTaskview, [switch]$DisableStartRecommended, + [switch]$DisableStartAllApps, [switch]$DisableStartPhoneLink, [switch]$DisableCopilot, [switch]$DisableRecall, diff --git a/Win11Debloat.ps1 b/Win11Debloat.ps1 index 3b81f7f..c6a6df5 100755 --- a/Win11Debloat.ps1 +++ b/Win11Debloat.ps1 @@ -60,6 +60,7 @@ param ( [switch]$HideSearchTb, [switch]$ShowSearchIconTb, [switch]$ShowSearchLabelTb, [switch]$ShowSearchBoxTb, [switch]$HideTaskview, [switch]$DisableStartRecommended, + [switch]$DisableStartAllApps, [switch]$DisableStartPhoneLink, [switch]$DisableCopilot, [switch]$DisableRecall, From 94e5c95d57b791207875289e066fa05359229932 Mon Sep 17 00:00:00 2001 From: Raphire <9938813+Raphire@users.noreply.github.com> Date: Mon, 9 Mar 2026 23:21:22 +0100 Subject: [PATCH 09/10] Remove Powershell 7 modules from path to prevent module loading issues in the script --- Scripts/Get.ps1 | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Scripts/Get.ps1 b/Scripts/Get.ps1 index d147708..a3cba0d 100644 --- a/Scripts/Get.ps1 +++ b/Scripts/Get.ps1 @@ -167,16 +167,14 @@ else { $windowStyle = "Normal" } -# Use powershell 7 to launch the script if the current environment is powershell 7, otherwise use powershell 5.1 +# Remove Powershell 7 modules from path to prevent module loading issues in the script if ($PSVersionTable.PSVersion.Major -ge 7) { - $powershellExe = "pwsh.exe" -} -else { - $powershellExe = "powershell.exe" + $NewPSModulePath = $env:PSModulePath -split ';' | Where-Object -FilterScript { $_ -like '*WindowsPowerShell*' } + $env:PSModulePath = $NewPSModulePath -join ';' } # Run Win11Debloat script with the provided arguments -$debloatProcess = Start-Process $powershellExe -WindowStyle $windowStyle -PassThru -ArgumentList "-executionpolicy bypass -File $env:TEMP\Win11Debloat\Win11Debloat.ps1 $arguments" -Verb RunAs +$debloatProcess = Start-Process powershell.exe -WindowStyle $windowStyle -PassThru -ArgumentList "-executionpolicy bypass -File $env:TEMP\Win11Debloat\Win11Debloat.ps1 $arguments" -Verb RunAs # Wait for the process to finish before continuing if ($null -ne $debloatProcess) { From 260a143509fc70ad695caa7503514cb318ef99aa Mon Sep 17 00:00:00 2001 From: Raphire <9938813+Raphire@users.noreply.github.com> Date: Mon, 9 Mar 2026 23:32:13 +0100 Subject: [PATCH 10/10] Bump version --- Scripts/GUI/Show-ApplyModal.ps1 | 4 ++-- Win11Debloat.ps1 | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Scripts/GUI/Show-ApplyModal.ps1 b/Scripts/GUI/Show-ApplyModal.ps1 index 0cc42d9..b313b3f 100644 --- a/Scripts/GUI/Show-ApplyModal.ps1 +++ b/Scripts/GUI/Show-ApplyModal.ps1 @@ -201,14 +201,14 @@ function Show-ApplyModal { $applyKofiBtn.Content = $null $reportText = [System.Windows.Controls.TextBlock]::new() - $reportText.Text = 'Report the issue' + $reportText.Text = 'Report a bug' $reportText.VerticalAlignment = 'Center' $reportText.FontSize = 14 $reportText.Margin = [System.Windows.Thickness]::new(0, 0, 0, 1) $applyKofiBtn.Content = $reportText - [System.Windows.Automation.AutomationProperties]::SetName($applyKofiBtn, 'Report the issue') + [System.Windows.Automation.AutomationProperties]::SetName($applyKofiBtn, 'Report a bug') $applyWindow.Dispatcher.Invoke([System.Windows.Threading.DispatcherPriority]::Render, [action]{}) } diff --git a/Win11Debloat.ps1 b/Win11Debloat.ps1 index c6a6df5..31bcb1b 100755 --- a/Win11Debloat.ps1 +++ b/Win11Debloat.ps1 @@ -103,7 +103,7 @@ param ( # Define script-level variables & paths -$script:Version = "2026.03.07" +$script:Version = "2026.03.09" $script:AppsListFilePath = "$PSScriptRoot/Config/Apps.json" $script:DefaultSettingsFilePath = "$PSScriptRoot/Config/DefaultSettings.json" $script:FeaturesFilePath = "$PSScriptRoot/Config/Features.json"