Added new options for creating a CustomAppsList, and for removing apps from the CustomAppsList.

New parameters:
-RemoveAppsCustom
-RunAppConfigurator

Additionally:
- Cleaned up script
- Added additional information and instructions to README.md
This commit is contained in:
Raphire
2024-03-11 23:38:19 +01:00
parent bd6de86c79
commit 323015f666
2 changed files with 74 additions and 53 deletions

View File

@@ -1,6 +1,6 @@
# Win11Debloat # Win11Debloat
Win11Debloat is a simple and lightweight powershell script that removes pre-installed Windows bloatware apps, disables telemetry and declutters the experience by disabling or removing intrusive interface elements, ads and more. No need to painstakingly go through all the settings yourself, or remove apps one by one. Win11Debloat makes the process quick and easy! Win11Debloat is a simple, easy to use and lightweight powershell script that can remove pre-installed Windows bloatware apps, disable telemetry and declutter the experience by disabling or removing intrusive interface elements, ads and more. No need to painstakingly go through all the settings yourself, or remove apps one by one. Win11Debloat makes the process quick and easy!
You can pick and choose exactly which modifications you want the script to make, or use the default settings. If you are unhappy with any of the changes you can easily revert them by using the registry files that are included in the 'Regfiles' folder, all of the apps that are removed can be reinstalled from the Microsoft store. You can pick and choose exactly which modifications you want the script to make, or use the default settings. If you are unhappy with any of the changes you can easily revert them by using the registry files that are included in the 'Regfiles' folder, all of the apps that are removed can be reinstalled from the Microsoft store.
@@ -10,9 +10,11 @@ You can pick and choose exactly which modifications you want the script to make,
## Features ## Features
Win11Debloat has many options, but not all of these options are executed when running the script with the default settings. Select 'Custom mode' in the script menu if you want more granular control over the script or if you want to access all of Win11Debloat's features.
### Default Settings ### Default Settings
- Remove the default selection of bloatware apps from [this list](#apps-that-are-removed). - Remove the default selection of bloatware apps from [this list](#apps-that-are-removed-by-default).
- Disable telemetry, diagnostic data, app-launch tracking & targeted ads. - Disable telemetry, diagnostic data, app-launch tracking & targeted ads.
- Disable & remove bing search & cortana in Windows search. - Disable & remove bing search & cortana in Windows search.
- Disable tips, tricks, suggestions and ads in start, settings, notifications, Windows explorer, and on the lockscreen. - Disable tips, tricks, suggestions and ads in start, settings, notifications, Windows explorer, and on the lockscreen.
@@ -45,7 +47,7 @@ You can pick and choose exactly which modifications you want the script to make,
<br/> <br/>
> [!TIP] > [!TIP]
> In 'custom mode' you can specify exactly which apps you like to remove and which you want to keep! > In 'custom mode' you can select exactly which apps to remove and which you want to keep!
### Apps that ARE removed by default ### Apps that ARE removed by default
@@ -191,7 +193,7 @@ You can pick and choose exactly which modifications you want the script to make,
## Usage ## Usage
> [!Warning] > [!Warning]
> Great care went into making sure this script does not break any OS functionality, but use at your own risk! > Great care went into making sure this script does not unintentionally break any OS functionality, but use at your own risk!
### Easy method ### Easy method
@@ -202,7 +204,7 @@ You can pick and choose exactly which modifications you want the script to make,
5. A new powershell window will now open, showing the Win11Debloat menu. Select either the default or custom mode to continue. 5. A new powershell window will now open, showing the Win11Debloat menu. Select either the default or custom mode to continue.
6. Carefully read through and follow the on-screen instructions. 6. Carefully read through and follow the on-screen instructions.
After making the selected changes the Win11Debloat script will restart the Windows Explorer process to properly apply them. If Windows Explorer does not recover after running the script and your desktop stays black, don't worry. Just press Ctrl + Alt + Del to restart your PC. After making the selected changes the Win11Debloat script will restart the Windows Explorer process to properly apply them. If Windows Explorer does not recover after running the script and your desktop stays black, don't worry. Just press Ctrl + Alt + Del and restart your PC.
### Advanced method ### Advanced method
@@ -215,13 +217,17 @@ This method gives you the option to run the script with certain parameters to ta
5. Enter this into powershell to run the script: `.\Win11Debloat.ps1` 5. Enter this into powershell to run the script: `.\Win11Debloat.ps1`
6. The Win11Debloat menu will now open. Select either the default or custom setup to continue. 6. The Win11Debloat menu will now open. Select either the default or custom setup to continue.
To run the script without any user input, simply add parameters at the end, example: `.\Win11Debloat.ps1 -RemoveApps -DisableBing -Silent` To run the script with parameters simply execute the script as explained above, but add the parameters at the end with spaces in between. Example: `.\Win11Debloat.ps1 -RemoveApps -DisableBing -Silent`
A full list of parameters and what they do can be found below.
| Parameter | Description | | Parameter | Description |
| :-------: | ----------- | | :-------: | ----------- |
| -Silent | Suppresses all interactive prompts, so the script will run without requiring any user input. | | -Silent | Suppresses all interactive prompts, so the script will run without requiring any user input. |
| -RunDefaults | Run the script with the default settings. | | -RunDefaults | Run the script with the default settings. |
| -RemoveApps | Remove all bloatware apps from [this list](#apps-that-are-removed). | | -RemoveApps | Remove all bloatware apps from [this list](#apps-that-are-removed-by-default). |
| -RemoveAppsCustom | Remove all apps from the 'CustomAppsList' file. IMPORTANT: Run the script with the `-RunAppConfigurator` parameter to create this file first. No apps will be removed if this file does not exist! |
| -RunAppConfigurator | Run the app configurator to create a 'CustomAppsList' file. Run the script with the `-RemoveAppsCustom` parameter to remove these apps. |
| -RemoveCommApps | Remove the Mail, Calender, and People apps. | | -RemoveCommApps | Remove the Mail, Calender, and People apps. |
| -RemoveW11Outlook | Remove the new Outlook for Windows app. | | -RemoveW11Outlook | Remove the new Outlook for Windows app. |
| -RemoveDevApps | Remove developer-related apps such as Remote Desktop, DevHome and Power Automate. | | -RemoveDevApps | Remove developer-related apps such as Remote Desktop, DevHome and Power Automate. |

View File

@@ -2,49 +2,38 @@
[CmdletBinding(SupportsShouldProcess)] [CmdletBinding(SupportsShouldProcess)]
param ( param (
[Parameter(ValueFromPipeline = $true)][switch]$Silent, [switch]$Silent,
[Parameter(ValueFromPipeline = $true)][switch]$RunDefaults, [switch]$RunAppConfigurator,
[Parameter(ValueFromPipeline = $true)][switch]$RunWin11Defaults, [switch]$RunDefaults, [switch]$RunWin11Defaults,
[Parameter(ValueFromPipeline = $true)][switch]$RemoveApps, [switch]$RemoveApps,
[Parameter(ValueFromPipeline = $true)][switch]$RemoveGamingApps, [switch]$RemoveAppsCustom,
[Parameter(ValueFromPipeline = $true)][switch]$RemoveCommApps, [switch]$RemoveGamingApps,
[Parameter(ValueFromPipeline = $true)][switch]$RemoveDevApps, [switch]$RemoveCommApps,
[Parameter(ValueFromPipeline = $true)][switch]$RemoveW11Outlook, [switch]$RemoveDevApps,
[Parameter(ValueFromPipeline = $true)][switch]$DisableTelemetry, [switch]$RemoveW11Outlook,
[Parameter(ValueFromPipeline = $true)][switch]$DisableBingSearches, [switch]$DisableTelemetry,
[Parameter(ValueFromPipeline = $true)][switch]$DisableBing, [switch]$DisableBingSearches, [switch]$DisableBing,
[Parameter(ValueFromPipeline = $true)][switch]$DisableLockscrTips, [switch]$DisableLockscrTips, [switch]$DisableLockscreenTips,
[Parameter(ValueFromPipeline = $true)][switch]$DisableLockscreenTips, [switch]$DisableWindowsSuggestions, [switch]$DisableSuggestions,
[Parameter(ValueFromPipeline = $true)][switch]$DisableWindowsSuggestions, [switch]$ShowHiddenFolders,
[Parameter(ValueFromPipeline = $true)][switch]$DisableSuggestions, [switch]$ShowKnownFileExt,
[Parameter(ValueFromPipeline = $true)][switch]$ShowHiddenFolders, [switch]$HideDupliDrive,
[Parameter(ValueFromPipeline = $true)][switch]$ShowKnownFileExt, [switch]$TaskbarAlignLeft,
[Parameter(ValueFromPipeline = $true)][switch]$HideDupliDrive, [switch]$HideSearchTb, [switch]$ShowSearchIconTb, [switch]$ShowSearchLabelTb, [switch]$ShowSearchBoxTb,
[Parameter(ValueFromPipeline = $true)][switch]$TaskbarAlignLeft, [switch]$HideTaskview,
[Parameter(ValueFromPipeline = $true)][switch]$HideSearchTb, [switch]$DisableCopilot,
[Parameter(ValueFromPipeline = $true)][switch]$ShowSearchIconTb, [switch]$DisableWidgets,
[Parameter(ValueFromPipeline = $true)][switch]$ShowSearchLabelTb, [switch]$HideWidgets,
[Parameter(ValueFromPipeline = $true)][switch]$ShowSearchBoxTb, [switch]$DisableChat,
[Parameter(ValueFromPipeline = $true)][switch]$HideTaskview, [switch]$HideChat,
[Parameter(ValueFromPipeline = $true)][switch]$DisableCopilot, [switch]$ClearStart,
[Parameter(ValueFromPipeline = $true)][switch]$DisableWidgets, [switch]$RevertContextMenu,
[Parameter(ValueFromPipeline = $true)][switch]$HideWidgets, [switch]$DisableOnedrive, [switch]$HideOnedrive,
[Parameter(ValueFromPipeline = $true)][switch]$DisableChat, [switch]$Disable3dObjects, [switch]$Hide3dObjects,
[Parameter(ValueFromPipeline = $true)][switch]$HideChat, [switch]$DisableMusic, [switch]$HideMusic,
[Parameter(ValueFromPipeline = $true)][switch]$ClearStart, [switch]$DisableIncludeInLibrary, [switch]$HideIncludeInLibrary,
[Parameter(ValueFromPipeline = $true)][switch]$RevertContextMenu, [switch]$DisableGiveAccessTo, [switch]$HideGiveAccessTo,
[Parameter(ValueFromPipeline = $true)][switch]$DisableOnedrive, [switch]$DisableShare, [switch]$HideShare
[Parameter(ValueFromPipeline = $true)][switch]$HideOnedrive,
[Parameter(ValueFromPipeline = $true)][switch]$Disable3dObjects,
[Parameter(ValueFromPipeline = $true)][switch]$Hide3dObjects,
[Parameter(ValueFromPipeline = $true)][switch]$DisableMusic,
[Parameter(ValueFromPipeline = $true)][switch]$HideMusic,
[Parameter(ValueFromPipeline = $true)][switch]$DisableIncludeInLibrary,
[Parameter(ValueFromPipeline = $true)][switch]$HideIncludeInLibrary,
[Parameter(ValueFromPipeline = $true)][switch]$DisableGiveAccessTo,
[Parameter(ValueFromPipeline = $true)][switch]$HideGiveAccessTo,
[Parameter(ValueFromPipeline = $true)][switch]$DisableShare,
[Parameter(ValueFromPipeline = $true)][switch]$HideShare
) )
@@ -432,6 +421,32 @@ if ((Test-Path "$PSScriptRoot/LastSettings") -and ([String]::IsNullOrWhiteSpace(
Remove-Item -Path "$PSScriptRoot/LastSettings" -recurse Remove-Item -Path "$PSScriptRoot/LastSettings" -recurse
} }
# Only run the app selection form if the 'RunAppConfigurator' parameter was passed to the script
if($RunAppConfigurator) {
$result = ShowAppSelectionForm
PrintHeader "App Configurator"
# Show different message based on whether the app selection was saved or cancelled
if($result -ne [System.Windows.Forms.DialogResult]::OK) {
Write-Host "App configurator was closed without saving." -ForegroundColor Red
}
else {
Write-Output "Your app selection was saved to the 'CustomAppsList' file in the root folder of the script."
}
Write-Output ""
# Suppress prompt if Silent parameter was passed
if (-not $Silent) {
Write-Output "Press any key to exit..."
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
}
# Exit script
Exit
}
# Change script execution based on provided parameters or user input # Change script execution based on provided parameters or user input
if ((-not $global:Params.Count) -or $RunDefaults -or $RunWin11Defaults -or ($SPParamCount -eq $global:Params.Count)) { if ((-not $global:Params.Count) -or $RunDefaults -or $RunWin11Defaults -or ($SPParamCount -eq $global:Params.Count)) {
if ($RunDefaults -or $RunWin11Defaults) { if ($RunDefaults -or $RunWin11Defaults) {
@@ -507,7 +522,7 @@ if ((-not $global:Params.Count) -or $RunDefaults -or $RunWin11Defaults -or ($SPP
} }
else { else {
# Apps file does not exist, print error and continue to next item # Apps file does not exist, print error and continue to next item
Write-Host "Could not load apps from file, no apps will be removed" -ForegroundColor Red Write-Host "Could not load custom apps list from file, no apps will be removed!" -ForegroundColor Red
continue continue
} }
} }
@@ -565,7 +580,7 @@ if ((-not $global:Params.Count) -or $RunDefaults -or $RunWin11Defaults -or ($SPP
Write-Host " (n) Don't remove any apps" -ForegroundColor Yellow Write-Host " (n) Don't remove any apps" -ForegroundColor Yellow
Write-Host " (1) Only remove the default selection of bloatware apps from 'Appslist.txt'" -ForegroundColor Yellow Write-Host " (1) Only remove the default selection of bloatware apps from 'Appslist.txt'" -ForegroundColor Yellow
Write-Host " (2) Remove default selection of bloatware apps, aswell as mail & calendar apps, developer apps and gaming apps" -ForegroundColor Yellow Write-Host " (2) Remove default selection of bloatware apps, aswell as mail & calendar apps, developer apps and gaming apps" -ForegroundColor Yellow
Write-Host " (3) Specify which apps to remove and which to keep" -ForegroundColor Yellow Write-Host " (3) Select which apps to remove and which to keep" -ForegroundColor Yellow
$RemoveCommAppInput = Read-Host "Remove any pre-installed apps? (n/1/2/3)" $RemoveCommAppInput = Read-Host "Remove any pre-installed apps? (n/1/2/3)"
# Show app selection form if user entered option 3 # Show app selection form if user entered option 3
@@ -843,7 +858,7 @@ else {
RemoveSpecificApps $appsList RemoveSpecificApps $appsList
} }
else { else {
Write-Host "> Unable to find CustomAppsList file, no apps have been removed!" -ForegroundColor Red Write-Host "> Could not load custom apps list from file, no apps were removed!" -ForegroundColor Red
} }
Write-Output "" Write-Output ""