From 7d36253668dd43255a89e7bdea9a86392595faea Mon Sep 17 00:00:00 2001 From: rbalsleyMSFT <53497092+rbalsleyMSFT@users.noreply.github.com> Date: Thu, 20 Nov 2025 14:32:54 -0800 Subject: [PATCH] Standardize driver compression status reporting across vendors Updates compression workflow to use consistent status messaging and better error handling across all driver vendor modules (Dell, HP, Lenovo, Microsoft). Changes improve status tracking by: - Standardizing compression success status to "Compression successful" instead of vendor-specific messages - Introducing relative path variables to reduce code duplication and improve maintainability - Suppressing command output by piping to `$null` for cleaner execution - Adding explicit failure state in exception handlers to ensure success property reflects actual outcome - Updating parallel processing logic to recognize the new standardized compression status These modifications ensure consistent behavior across vendors and make the parallel processing coordinator aware of all compression completion states. --- FFUDevelopment/FFU.Common/FFU.Common.Parallel.psm1 | 2 +- FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Dell.psm1 | 10 ++++++---- FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.HP.psm1 | 9 +++++---- .../FFUUI.Core/FFUUI.Core.Drivers.Lenovo.psm1 | 7 ++++--- .../FFUUI.Core/FFUUI.Core.Drivers.Microsoft.psm1 | 7 ++++--- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/FFUDevelopment/FFU.Common/FFU.Common.Parallel.psm1 b/FFUDevelopment/FFU.Common/FFU.Common.Parallel.psm1 index 0e9830e..b53f5b6 100644 --- a/FFUDevelopment/FFU.Common/FFU.Common.Parallel.psm1 +++ b/FFUDevelopment/FFU.Common/FFU.Common.Parallel.psm1 @@ -269,7 +269,7 @@ function Invoke-ParallelProcessing { else { # Fallback for any task that *still* doesn't return 'Success'. This is now the exceptional case. WriteLog "Warning: Task for '$taskSpecificIdentifier' did not return a 'Success' property. Inferring from status: '$($taskResult.Status)'" - if ($taskResult.Status -like 'Completed*' -or $taskResult.Status -like 'Already downloaded*') { + if ($taskResult.Status -like 'Completed*' -or $taskResult.Status -like 'Already downloaded*' -or $taskResult.Status -like 'Compression successful*') { $resultCode = 0 # Treat as success } else { diff --git a/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Dell.psm1 b/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Dell.psm1 index 59290b9..643c8b3 100644 --- a/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Dell.psm1 +++ b/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Dell.psm1 @@ -157,17 +157,19 @@ function Save-DellDriversTask { } if ($CompressToWim -and $existing.Status -eq 'Already downloaded') { $wimPath = Join-Path $makeDriversPath "$sanitizedModelName.wim" + $wimRelativePath = Join-Path $make "$sanitizedModelName.wim" $srcPath = Join-Path $makeDriversPath $sanitizedModelName if ($null -ne $ProgressQueue) { Invoke-ProgressUpdate -ProgressQueue $ProgressQueue -Identifier $modelDisplay -Status 'Compressing existing...' } try { - Compress-DriverFolderToWim -SourceFolderPath $srcPath -DestinationWimPath $wimPath -WimName $modelDisplay -WimDescription "Drivers for $modelDisplay" -PreserveSource:$PreserveSourceOnCompress -ErrorAction Stop - $existing.Status = 'Already downloaded & Compressed' - $existing.DriverPath = Join-Path $make "$sanitizedModelName.wim" + $null = Compress-DriverFolderToWim -SourceFolderPath $srcPath -DestinationWimPath $wimPath -WimName $modelDisplay -WimDescription "Drivers for $modelDisplay" -PreserveSource:$PreserveSourceOnCompress -ErrorAction Stop + $existing.Status = 'Compression successful' + $existing.DriverPath = $wimRelativePath $existing.Success = $true } catch { WriteLog "Compression failed for $($modelDisplay): $($_.Exception.Message)" $existing.Status = 'Already downloaded (Compression failed)' + $existing.Success = $false } if ($null -ne $ProgressQueue) { Invoke-ProgressUpdate -ProgressQueue $ProgressQueue -Identifier $modelDisplay -Status $existing.Status } } @@ -341,7 +343,7 @@ function Save-DellDriversTask { if ($null -ne $ProgressQueue) { Invoke-ProgressUpdate -ProgressQueue $ProgressQueue -Identifier $modelDisplay -Status 'Compressing...' } $wimPath = Join-Path $makeDriversPath "$sanitizedModelName.wim" try { - Compress-DriverFolderToWim -SourceFolderPath $modelPath -DestinationWimPath $wimPath -WimName $modelDisplay -WimDescription $modelDisplay -PreserveSource:$PreserveSourceOnCompress -ErrorAction Stop + $null = Compress-DriverFolderToWim -SourceFolderPath $modelPath -DestinationWimPath $wimPath -WimName $modelDisplay -WimDescription $modelDisplay -PreserveSource:$PreserveSourceOnCompress -ErrorAction Stop $driverRelativePath = Join-Path $make "$sanitizedModelName.wim" $statusFinal = 'Completed & Compressed' } diff --git a/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.HP.psm1 b/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.HP.psm1 index 27c2fdc..1e96a95 100644 --- a/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.HP.psm1 +++ b/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.HP.psm1 @@ -179,13 +179,14 @@ function Save-HPDriversTask { # Special handling for existing folders that need compression if ($CompressToWim -and $existingDriver.Status -eq 'Already downloaded') { $wimFilePath = Join-Path -Path $hpDriversBaseFolder -ChildPath "$($sanitizedModelName).wim" + $wimRelativePath = Join-Path -Path $make -ChildPath "$($sanitizedModelName).wim" $sourceFolderPath = Join-Path -Path $hpDriversBaseFolder -ChildPath $sanitizedModelName WriteLog "Attempting compression of existing folder '$sourceFolderPath' to '$wimFilePath'." if ($null -ne $ProgressQueue) { Invoke-ProgressUpdate -ProgressQueue $ProgressQueue -Identifier $identifier -Status "Compressing existing..." } try { - Compress-DriverFolderToWim -SourceFolderPath $sourceFolderPath -DestinationWimPath $wimFilePath -WimName $identifier -WimDescription "Drivers for $identifier" -PreserveSource:$PreserveSourceOnCompress -ErrorAction Stop - $existingDriver.Status = "Already downloaded & Compressed" - $existingDriver.DriverPath = Join-Path -Path $make -ChildPath "$($sanitizedModelName).wim" + $null = Compress-DriverFolderToWim -SourceFolderPath $sourceFolderPath -DestinationWimPath $wimFilePath -WimName $identifier -WimDescription "Drivers for $identifier" -PreserveSource:$PreserveSourceOnCompress -ErrorAction Stop + $existingDriver.Status = "Compression successful" + $existingDriver.DriverPath = $wimRelativePath $existingDriver.Success = $true WriteLog "Successfully compressed existing drivers for $identifier to $wimFilePath." } @@ -407,7 +408,7 @@ function Save-HPDriversTask { $wimFilePath = Join-Path -Path $hpDriversBaseFolder -ChildPath "$($identifier).wim" WriteLog "Compressing '$modelSpecificFolder' to '$wimFilePath'..." try { - Compress-DriverFolderToWim -SourceFolderPath $modelSpecificFolder -DestinationWimPath $wimFilePath -WimName $identifier -WimDescription "Drivers for $identifier" -PreserveSource:$PreserveSourceOnCompress -ErrorAction Stop + $null = Compress-DriverFolderToWim -SourceFolderPath $modelSpecificFolder -DestinationWimPath $wimFilePath -WimName $identifier -WimDescription "Drivers for $identifier" -PreserveSource:$PreserveSourceOnCompress -ErrorAction Stop WriteLog "Compression successful for '$identifier'." $finalStatus = "Completed & Compressed" $driverRelativePath = Join-Path -Path $make -ChildPath "$($identifier).wim" # Update relative path to the WIM diff --git a/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Lenovo.psm1 b/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Lenovo.psm1 index db2950a..e59c3ae 100644 --- a/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Lenovo.psm1 +++ b/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Lenovo.psm1 @@ -132,13 +132,14 @@ function Save-LenovoDriversTask { # Special handling for existing folders that need compression if ($CompressToWim -and $existingDriver.Status -eq 'Already downloaded') { $wimFilePath = Join-Path -Path $makeDriversPath -ChildPath "$($sanitizedIdentifier).wim" + $wimRelativePath = Join-Path -Path $make -ChildPath "$($sanitizedIdentifier).wim" $sourceFolderPath = Join-Path -Path $makeDriversPath -ChildPath $sanitizedIdentifier WriteLog "Attempting compression of existing folder '$sourceFolderPath' to '$wimFilePath'." if ($null -ne $ProgressQueue) { Invoke-ProgressUpdate -ProgressQueue $ProgressQueue -Identifier $identifier -Status "Compressing existing..." } try { - Compress-DriverFolderToWim -SourceFolderPath $sourceFolderPath -DestinationWimPath $wimFilePath -WimName $identifier -WimDescription "Drivers for $identifier" -PreserveSource:$PreserveSourceOnCompress -ErrorAction Stop - $existingDriver.Status = "Already downloaded & Compressed" - $existingDriver.DriverPath = Join-Path -Path $make -ChildPath "$($sanitizedIdentifier).wim" + $null = Compress-DriverFolderToWim -SourceFolderPath $sourceFolderPath -DestinationWimPath $wimFilePath -WimName $identifier -WimDescription "Drivers for $identifier" -PreserveSource:$PreserveSourceOnCompress -ErrorAction Stop + $existingDriver.Status = "Compression successful" + $existingDriver.DriverPath = $wimRelativePath $existingDriver.Success = $true WriteLog "Successfully compressed existing drivers for $identifier to $wimFilePath." } diff --git a/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Microsoft.psm1 b/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Microsoft.psm1 index 10897b9..1c80d2b 100644 --- a/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Microsoft.psm1 +++ b/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.Microsoft.psm1 @@ -123,13 +123,14 @@ function Save-MicrosoftDriversTask { if ($CompressToWim -and $existingDriver.Status -eq 'Already downloaded') { $makeDriversPath = Join-Path -Path $DriversFolder -ChildPath $make $wimFilePath = Join-Path -Path $makeDriversPath -ChildPath "$($modelName).wim" + $wimRelativePath = Join-Path -Path $make -ChildPath "$($modelName).wim" $sourceFolderPath = Join-Path -Path $makeDriversPath -ChildPath $modelName WriteLog "Attempting compression of existing folder '$sourceFolderPath' to '$wimFilePath'." if ($null -ne $ProgressQueue) { Invoke-ProgressUpdate -ProgressQueue $ProgressQueue -Identifier $modelName -Status "Compressing existing..." } try { - Compress-DriverFolderToWim -SourceFolderPath $sourceFolderPath -DestinationWimPath $wimFilePath -WimName $modelName -WimDescription "Drivers for $modelName" -PreserveSource:$PreserveSourceOnCompress -ErrorAction Stop - $existingDriver.Status = "Already downloaded & Compressed" - $existingDriver.DriverPath = Join-Path -Path $make -ChildPath "$($modelName).wim" + $null = Compress-DriverFolderToWim -SourceFolderPath $sourceFolderPath -DestinationWimPath $wimFilePath -WimName $modelName -WimDescription "Drivers for $modelName" -PreserveSource:$PreserveSourceOnCompress -ErrorAction Stop + $existingDriver.Status = "Compression successful" + $existingDriver.DriverPath = $wimRelativePath $existingDriver.Success = $true WriteLog "Successfully compressed existing drivers for $modelName to $wimFilePath." }