mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2026-08-09 17:41:14 +10:00
fix: resolve silent failures in AppX removal and PS7 DISM bugs (#4822)
* fix: resolve silent failures in AppX removal and PS7 DISM bugs
- Fixed a bug where Remove-AppxPackage failed silently in PowerShell 7 due to pipeline binding issues. We now explicitly loop through Get-AppxPackage results and pass PackageFullName directly.
- Added wildcard matching to Get-AppxPackage and Get-AppxProvisionedPackage to reliably locate packages regardless of short name vs family name variations.
- Offloaded Get-AppxProvisionedPackage and Remove-AppxProvisionedPackage execution to Windows PowerShell 5.1 (powershell.exe) to bypass PowerShell 7 DISM COM exceptions ("Class not registered") and performance hangs.
- Deduplicated AppX removal logic by calling Remove-WinUtilAPPX directly from Invoke-WPFAppxRemoval instead of copying the implementation.
* refactor(Remove-WinUtilAPPX): use script block to improve readability
* feat: enhance AppX removal process and add provisioned package removal function
* fix(tests): update AppX removal tests
This also adds tests for the new Remove-WinUtilProvisionedAPPX functionality
* Move AppX removal under Tweaks
* Address AppX removal review feedback
* Complete AppX removal error handling
* Prevent AppX cleanup confirmation prompts
---------
Co-authored-by: Chris Titus <contact@christitus.com>
This commit is contained in:
@@ -19,6 +19,9 @@ BeforeAll {
|
||||
function Remove-WinUtilAPPX {
|
||||
param($Name)
|
||||
}
|
||||
function Remove-WinUtilProvisionedAPPX {
|
||||
param($PackageList)
|
||||
}
|
||||
function Set-WinUtilDNS {
|
||||
param($DNSProvider)
|
||||
}
|
||||
@@ -89,6 +92,7 @@ Describe "Invoke-WinUtilTweaks" {
|
||||
Mock Set-WinUtilRegistry { }
|
||||
Mock Invoke-WinUtilScript { }
|
||||
Mock Remove-WinUtilAPPX { }
|
||||
Mock Remove-WinUtilProvisionedAPPX { }
|
||||
Mock Write-WinUtilLog { }
|
||||
Mock Write-Warning { }
|
||||
}
|
||||
@@ -118,6 +122,9 @@ Describe "Invoke-WinUtilTweaks" {
|
||||
Should -Invoke -CommandName Remove-WinUtilAPPX -Times 1 -Exactly -ParameterFilter {
|
||||
$Name -eq "Microsoft.ExampleApp"
|
||||
}
|
||||
Should -Invoke -CommandName Remove-WinUtilProvisionedAPPX -Times 1 -Exactly -ParameterFilter {
|
||||
$PackageList.Count -eq 1 -and $PackageList[0] -eq "Microsoft.ExampleApp"
|
||||
}
|
||||
}
|
||||
|
||||
It "uses original registry values and service startup types in undo mode" {
|
||||
@@ -137,6 +144,7 @@ Describe "Invoke-WinUtilTweaks" {
|
||||
$Name -eq "WPFTweaksExample" -and $ScriptBlock.ToString() -eq "Write-Output 'undo tweak'"
|
||||
}
|
||||
Should -Invoke -CommandName Remove-WinUtilAPPX -Times 0 -Exactly
|
||||
Should -Invoke -CommandName Remove-WinUtilProvisionedAPPX -Times 0 -Exactly
|
||||
}
|
||||
|
||||
It "keeps a user-changed service startup type by default" {
|
||||
|
||||
Reference in New Issue
Block a user