0071e3697d
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
104 lines
3.6 KiB
PowerShell
104 lines
3.6 KiB
PowerShell
# Requires running as administrator
|
|
# Uninstalling Windows applications via winget
|
|
|
|
function Initialize-Winget {
|
|
if (Get-Command winget -ErrorAction SilentlyContinue) {
|
|
return
|
|
}
|
|
|
|
Write-Host "winget not found in PATH. Attempting repair..." -ForegroundColor Yellow
|
|
|
|
$MachinePath = [System.Environment]::GetEnvironmentVariable("PATH", "Machine")
|
|
$UserPath = [System.Environment]::GetEnvironmentVariable("PATH", "User")
|
|
$env:PATH = $MachinePath + ";" + $UserPath
|
|
|
|
if (Get-Command winget -ErrorAction SilentlyContinue) {
|
|
Write-Host "winget available after PATH refresh." -ForegroundColor Green
|
|
return
|
|
}
|
|
|
|
$AppInstaller = Get-AppxPackage -Name "Microsoft.DesktopAppInstaller" -ErrorAction SilentlyContinue
|
|
if (-not $AppInstaller) {
|
|
$AppInstaller = Get-AppxPackage -AllUsers -Name "Microsoft.DesktopAppInstaller" -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
if ($AppInstaller) {
|
|
Write-Host "Re-registering App Installer..." -ForegroundColor Yellow
|
|
try {
|
|
$Manifest = Join-Path $AppInstaller.InstallLocation "AppxManifest.xml"
|
|
Add-AppxPackage -DisableDevelopmentMode -Register $Manifest -ErrorAction Stop
|
|
$env:PATH = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") + ";" +
|
|
[System.Environment]::GetEnvironmentVariable("PATH", "User")
|
|
|
|
if (Get-Command winget -ErrorAction SilentlyContinue) {
|
|
Write-Host "winget repaired." -ForegroundColor Green
|
|
return
|
|
}
|
|
}
|
|
catch {
|
|
Write-Warning "Re-registration failed: $_"
|
|
}
|
|
}
|
|
|
|
$StagedPackage = Get-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue |
|
|
Where-Object { $_.DisplayName -eq "Microsoft.DesktopAppInstaller" } |
|
|
Select-Object -First 1
|
|
|
|
if ($StagedPackage) {
|
|
Write-Host "Installing App Installer from provisioned package..." -ForegroundColor Yellow
|
|
try {
|
|
Add-AppxPackage -Path $StagedPackage.PackagePath -ErrorAction Stop
|
|
$env:PATH = [System.Environment]::GetEnvironmentVariable("PATH", "Machine") + ";" +
|
|
[System.Environment]::GetEnvironmentVariable("PATH", "User")
|
|
|
|
if (Get-Command winget -ErrorAction SilentlyContinue) {
|
|
Write-Host "winget installed." -ForegroundColor Green
|
|
return
|
|
}
|
|
}
|
|
catch {
|
|
Write-Warning "Installation from provisioned package failed: $_"
|
|
}
|
|
}
|
|
|
|
Write-Error ("winget is not available and could not be repaired automatically.`n" +
|
|
"Install App Installer from the Microsoft Store: " +
|
|
"ms-windows-store://pdp/?productid=9nblggh4nns1")
|
|
exit 1
|
|
}
|
|
|
|
Initialize-Winget
|
|
|
|
$Packages = @(
|
|
"Windows Web Experience Pack",
|
|
"Xbox",
|
|
"Outlook for Windows",
|
|
"Hub de commentaires",
|
|
"Xbox TCUI",
|
|
"Xbox Identity Provider",
|
|
"Power Automate",
|
|
"Microsoft.MicrosoftStickyNotes",
|
|
"Microsoft.BingWeather",
|
|
"Microsoft Teams",
|
|
"Microsoft OneDrive",
|
|
"Microsoft To Do",
|
|
"Microsoft Bing",
|
|
"Microsoft Clipchamp",
|
|
"Application Start Experiences"
|
|
)
|
|
|
|
foreach ($Package in $Packages) {
|
|
Write-Host "Uninstalling: $Package" -ForegroundColor Cyan
|
|
|
|
winget uninstall --name "$Package" --source winget --silent --accept-source-agreements --nowarn
|
|
|
|
if ($LASTEXITCODE -eq 0) {
|
|
Write-Host "$Package successfully uninstalled" -ForegroundColor Green
|
|
}
|
|
else {
|
|
Write-Warning "Failed to uninstall $Package (it may already be absent or protected)"
|
|
}
|
|
|
|
Write-Host ""
|
|
}
|