mirror of
https://github.com/rbalsleyMSFT/FFU.git
synced 2026-06-14 02:09:35 -06:00
Refactors cleanup logic into shared module
Consolidates duplicated cleanup code by moving logic into a shared function, eliminating redundant implementations across multiple locations. Removes standalone cleanup functions (Remove-FFU, Remove-Apps, Remove-Updates) and replaces scattered cleanup calls with a single invocation of Invoke-FFUPostBuildCleanup. Enhances driver cleanup to preserve configuration files (Drivers.json and DriverMapping.json) while removing other contents, preventing loss of driver mapping data. Improves maintainability by centralizing cleanup operations and reducing code duplication, making future updates easier to implement consistently.
This commit is contained in:
@@ -3809,15 +3809,10 @@ function Get-FFUEnvironment {
|
|||||||
Remove-FFUUserShare
|
Remove-FFUUserShare
|
||||||
WriteLog 'Removal complete'
|
WriteLog 'Removal complete'
|
||||||
}
|
}
|
||||||
if ($RemoveApps) {
|
|
||||||
WriteLog "Removing Apps in $AppsPath"
|
#Run shared cleanup to avoid duplicated logic
|
||||||
Remove-Apps
|
Invoke-FFUPostBuildCleanup -RootPath $FFUDevelopmentPath -AppsPath $AppsPath -DriversPath $DriversFolder -FFUCapturePath $FFUCaptureLocation -CaptureISOPath $CaptureISO -DeployISOPath $DeployISO -AppsISOPath $AppsISO -RemoveCaptureISO:$CleanupCaptureISO -RemoveDeployISO:$CleanupDeployISO -RemoveAppsISO:$CleanupAppsISO -RemoveDrivers:$CleanupDrivers -RemoveFFU:$RemoveFFU -RemoveApps:$RemoveApps -RemoveUpdates:$RemoveUpdates
|
||||||
}
|
|
||||||
#Remove updates
|
|
||||||
if ($RemoveUpdates) {
|
|
||||||
WriteLog "Removing updates"
|
|
||||||
Remove-Updates
|
|
||||||
}
|
|
||||||
#Clean up $KBPath
|
#Clean up $KBPath
|
||||||
If (Test-Path -Path $KBPath) {
|
If (Test-Path -Path $KBPath) {
|
||||||
WriteLog "Removing $KBPath"
|
WriteLog "Removing $KBPath"
|
||||||
@@ -3841,12 +3836,6 @@ function Get-FFUEnvironment {
|
|||||||
Remove-Item -Path "$FFUDevelopmentPath\dirty.txt" -Force
|
Remove-Item -Path "$FFUDevelopmentPath\dirty.txt" -Force
|
||||||
WriteLog "Cleanup complete"
|
WriteLog "Cleanup complete"
|
||||||
}
|
}
|
||||||
function Remove-FFU {
|
|
||||||
#Remove all FFU files in the FFUCaptureLocation
|
|
||||||
WriteLog "Removing all FFU files in $FFUCaptureLocation"
|
|
||||||
Remove-Item -Path $FFUCaptureLocation\*.ffu -Force
|
|
||||||
WriteLog "Removal complete"
|
|
||||||
}
|
|
||||||
Function Remove-DisabledArtifacts {
|
Function Remove-DisabledArtifacts {
|
||||||
# Remove Office artifacts if Install Office is disabled
|
# Remove Office artifacts if Install Office is disabled
|
||||||
if (-not $InstallOffice) {
|
if (-not $InstallOffice) {
|
||||||
@@ -3932,101 +3921,6 @@ Function Remove-DisabledArtifacts {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Remove-Updates {
|
|
||||||
if ($UpdateLatestDefender) {
|
|
||||||
#Clean up $installDefenderPath
|
|
||||||
WriteLog "Removing $installDefenderPath"
|
|
||||||
If (Test-Path -Path $installDefenderPath) {
|
|
||||||
Remove-Item -Path $installDefenderPath -Force -ErrorAction SilentlyContinue
|
|
||||||
WriteLog 'Removal complete'
|
|
||||||
}
|
|
||||||
#Clean up $DefenderPath
|
|
||||||
If (Test-Path -Path $DefenderPath) {
|
|
||||||
WriteLog "Removing $DefenderPath"
|
|
||||||
Remove-Item -Path $DefenderPath -Recurse -Force -ErrorAction SilentlyContinue
|
|
||||||
WriteLog 'Removal complete'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($UpdateLatestMSRT) {
|
|
||||||
# Clean up Update-MSRT.ps1
|
|
||||||
WriteLog "Removing $installMSRTPath"
|
|
||||||
If (Test-Path -Path $installMSRTPath) {
|
|
||||||
Remove-Item -Path $installMSRTPath -Force -ErrorAction SilentlyContinue
|
|
||||||
WriteLog 'Removal complete'
|
|
||||||
}
|
|
||||||
#Clean up $MSRTPath
|
|
||||||
If (Test-Path -Path $MSRTPath) {
|
|
||||||
WriteLog "Removing $MSRTPath"
|
|
||||||
Remove-Item -Path $MSRTPath -Recurse -Force -ErrorAction SilentlyContinue
|
|
||||||
WriteLog 'Removal complete'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($UpdateOneDrive) {
|
|
||||||
# Clean up Update-OneDrive.ps1
|
|
||||||
WriteLog "Removing $installODPath"
|
|
||||||
If (Test-Path -Path $installODPath) {
|
|
||||||
Remove-Item -Path $installODPath -Force -ErrorAction SilentlyContinue
|
|
||||||
WriteLog 'Removal complete'
|
|
||||||
}
|
|
||||||
#Clean up $OneDrivePath
|
|
||||||
If (Test-Path -Path $OneDrivePath) {
|
|
||||||
WriteLog "Removing $OneDrivePath"
|
|
||||||
Remove-Item -Path $OneDrivePath -Recurse -Force -ErrorAction SilentlyContinue
|
|
||||||
WriteLog 'Removal complete'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($UpdateEdge) {
|
|
||||||
# Clean up Update-Edge.ps1
|
|
||||||
WriteLog "Removing $installEdgePath"
|
|
||||||
If (Test-Path -Path $installEdgePath) {
|
|
||||||
Remove-Item -Path $installEdgePath -Force -ErrorAction SilentlyContinue
|
|
||||||
WriteLog 'Removal complete'
|
|
||||||
}
|
|
||||||
#Clean up $EdgePath
|
|
||||||
If (Test-Path -Path $EdgePath) {
|
|
||||||
WriteLog "Removing $EdgePath"
|
|
||||||
Remove-Item -Path $EdgePath -Recurse -Force -ErrorAction SilentlyContinue
|
|
||||||
WriteLog 'Removal complete'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
function Remove-Apps {
|
|
||||||
|
|
||||||
# Check if the file exists before attempting to clear it
|
|
||||||
if (Test-Path -Path $wingetWin32jsonFile) {
|
|
||||||
WriteLog "Removing $wingetWin32jsonFile"
|
|
||||||
Remove-Item -Path $wingetWin32jsonFile -Force -ErrorAction SilentlyContinue
|
|
||||||
WriteLog 'Removal complete'
|
|
||||||
}
|
|
||||||
# Clean up Win32 and MSStore folders
|
|
||||||
if (Test-Path -Path "$AppsPath\Win32" -PathType Container) {
|
|
||||||
WriteLog "Cleaning up Win32 folder"
|
|
||||||
Remove-Item -Path "$AppsPath\Win32" -Recurse -Force
|
|
||||||
}
|
|
||||||
if (Test-Path -Path "$AppsPath\MSStore" -PathType Container) {
|
|
||||||
WriteLog "Cleaning up MSStore folder"
|
|
||||||
Remove-Item -Path "$AppsPath\MSStore" -Recurse -Force
|
|
||||||
}
|
|
||||||
|
|
||||||
#Remove the Office Download and ODT
|
|
||||||
if ($InstallOffice) {
|
|
||||||
$ODTPath = "$AppsPath\Office"
|
|
||||||
$OfficeDownloadPath = "$ODTPath\Office"
|
|
||||||
WriteLog 'Removing Office and ODT download'
|
|
||||||
Remove-Item -Path $OfficeDownloadPath -Recurse -Force
|
|
||||||
Remove-Item -Path "$ODTPath\setup.exe"
|
|
||||||
Remove-Item -Path "$orchestrationPath\Install-Office.ps1"
|
|
||||||
WriteLog 'Removal complete'
|
|
||||||
}
|
|
||||||
|
|
||||||
#Remove AppsISO
|
|
||||||
if ($CleanupAppsISO) {
|
|
||||||
WriteLog "Removing $AppsISO"
|
|
||||||
Remove-Item -Path $AppsISO -Force -ErrorAction SilentlyContinue
|
|
||||||
WriteLog 'Removal complete'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function Export-ConfigFile {
|
function Export-ConfigFile {
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param (
|
param (
|
||||||
@@ -6220,30 +6114,6 @@ If ($InstallApps) {
|
|||||||
Remove-FFUVM -VMName $VMName
|
Remove-FFUVM -VMName $VMName
|
||||||
throw $_
|
throw $_
|
||||||
}
|
}
|
||||||
#Clean up Apps
|
|
||||||
if ($RemoveApps) {
|
|
||||||
try {
|
|
||||||
WriteLog "Cleaning up $AppsPath"
|
|
||||||
Remove-Apps
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
Write-Host 'Cleaning up Apps failed'
|
|
||||||
Writelog "Cleaning up Apps failed with error $_"
|
|
||||||
throw $_
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#Clean up Updates
|
|
||||||
if ($RemoveUpdates) {
|
|
||||||
try {
|
|
||||||
WriteLog "Cleaning up downloaded update files"
|
|
||||||
Remove-Updates
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
Write-Host 'Cleaning up downloaded update files failed'
|
|
||||||
Writelog "Cleaning up downloaded update files failed with error $_"
|
|
||||||
throw $_
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#Clean up VM or VHDX
|
#Clean up VM or VHDX
|
||||||
try {
|
try {
|
||||||
@@ -6315,17 +6185,7 @@ If ($BuildUSBDrive) {
|
|||||||
throw $_
|
throw $_
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
If ($RemoveFFU) {
|
|
||||||
try {
|
|
||||||
Remove-FFU
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
Write-Host 'Removing FFU files failed'
|
|
||||||
Writelog "Removing FFU files failed with error $_"
|
|
||||||
throw $_
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Set-Progress -Percentage 99 -Message "Finalizing and cleaning up..."
|
Set-Progress -Percentage 99 -Message "Finalizing and cleaning up..."
|
||||||
# Delegated post-build cleanup to common module
|
# Delegated post-build cleanup to common module
|
||||||
Invoke-FFUPostBuildCleanup -RootPath $FFUDevelopmentPath -AppsPath $AppsPath -DriversPath $Driversfolder -FFUCapturePath $FFUCaptureLocation -CaptureISOPath $CaptureISO -DeployISOPath $DeployISO -AppsISOPath $AppsISO -RemoveCaptureISO:$CleanupCaptureISO -RemoveDeployISO:$CleanupDeployISO -RemoveAppsISO:$CleanupAppsISO -RemoveDrivers:$CleanupDrivers -RemoveFFU:$RemoveFFU -RemoveApps:$RemoveApps -RemoveUpdates:$RemoveUpdates
|
Invoke-FFUPostBuildCleanup -RootPath $FFUDevelopmentPath -AppsPath $AppsPath -DriversPath $Driversfolder -FFUCapturePath $FFUCaptureLocation -CaptureISOPath $CaptureISO -DeployISOPath $DeployISO -AppsISOPath $AppsISO -RemoveCaptureISO:$CleanupCaptureISO -RemoveDeployISO:$CleanupDeployISO -RemoveAppsISO:$CleanupAppsISO -RemoveDrivers:$CleanupDrivers -RemoveFFU:$RemoveFFU -RemoveApps:$RemoveApps -RemoveUpdates:$RemoveUpdates
|
||||||
|
|||||||
@@ -49,8 +49,15 @@ function Invoke-FFUPostBuildCleanup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($RemoveDrivers -and -not [string]::IsNullOrWhiteSpace($DriversPath) -and (Test-Path -LiteralPath $DriversPath -PathType Container)) {
|
if ($RemoveDrivers -and -not [string]::IsNullOrWhiteSpace($DriversPath) -and (Test-Path -LiteralPath $DriversPath -PathType Container)) {
|
||||||
WriteLog "CommonCleanup: Removing contents of $DriversPath"
|
WriteLog "CommonCleanup: Removing contents of $DriversPath (preserving Drivers.json and DriverMapping.json)"
|
||||||
try { Get-ChildItem -LiteralPath $DriversPath -Force -ErrorAction SilentlyContinue | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue } catch { WriteLog "CommonCleanup: Driver content cleanup issue: $($_.Exception.Message)" }
|
try {
|
||||||
|
# Preserve drivers json files
|
||||||
|
$driverItems = Get-ChildItem -LiteralPath $DriversPath -Force -ErrorAction SilentlyContinue | Where-Object { @('Drivers.json', 'DriverMapping.json') -notcontains $_.Name }
|
||||||
|
if ($driverItems) {
|
||||||
|
$driverItems | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { WriteLog "CommonCleanup: Driver content cleanup issue: $($_.Exception.Message)" }
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($RemoveFFU -and -not [string]::IsNullOrWhiteSpace($FFUCapturePath) -and (Test-Path -LiteralPath $FFUCapturePath -PathType Container)) {
|
if ($RemoveFFU -and -not [string]::IsNullOrWhiteSpace($FFUCapturePath) -and (Test-Path -LiteralPath $FFUCapturePath -PathType Container)) {
|
||||||
@@ -72,14 +79,16 @@ function Invoke-FFUPostBuildCleanup {
|
|||||||
try { Remove-Item -LiteralPath $store -Recurse -Force -ErrorAction Stop } catch { WriteLog "CommonCleanup: Failed removing $store : $($_.Exception.Message)" }
|
try { Remove-Item -LiteralPath $store -Recurse -Force -ErrorAction Stop } catch { WriteLog "CommonCleanup: Failed removing $store : $($_.Exception.Message)" }
|
||||||
}
|
}
|
||||||
$office = Join-Path $AppsPath 'Office'
|
$office = Join-Path $AppsPath 'Office'
|
||||||
if (Test-Path -LiteralPath $office) {
|
if ((Test-Path -LiteralPath $office) -and $InstallOffice) {
|
||||||
WriteLog "CommonCleanup: Cleaning Office artifacts"
|
WriteLog "CommonCleanup: Checking for Office artifacts in $office"
|
||||||
$officeSub = Join-Path $office 'Office'
|
$officeSub = Join-Path $office 'Office'
|
||||||
if (Test-Path -LiteralPath $officeSub) {
|
if (Test-Path -LiteralPath $officeSub) {
|
||||||
|
WriteLog "CommonCleanup: Removing $officeSub"
|
||||||
try { Remove-Item -LiteralPath $officeSub -Recurse -Force -ErrorAction Stop } catch { WriteLog "CommonCleanup: Failed removing $officeSub : $($_.Exception.Message)" }
|
try { Remove-Item -LiteralPath $officeSub -Recurse -Force -ErrorAction Stop } catch { WriteLog "CommonCleanup: Failed removing $officeSub : $($_.Exception.Message)" }
|
||||||
}
|
}
|
||||||
$setupExe = Join-Path $office 'setup.exe'
|
$setupExe = Join-Path $office 'setup.exe'
|
||||||
if (Test-Path -LiteralPath $setupExe) {
|
if (Test-Path -LiteralPath $setupExe) {
|
||||||
|
WriteLog "CommonCleanup: Removing $setupExe"
|
||||||
try { Remove-Item -LiteralPath $setupExe -Force -ErrorAction Stop } catch { WriteLog "CommonCleanup: Failed removing $setupExe : $($_.Exception.Message)" }
|
try { Remove-Item -LiteralPath $setupExe -Force -ErrorAction Stop } catch { WriteLog "CommonCleanup: Failed removing $setupExe : $($_.Exception.Message)" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user