Skip to content

V5.3 - #17

Merged
Pnwcomputers merged 7 commits into
mainfrom
v5.3
Aug 18, 2026
Merged

V5.3#17
Pnwcomputers merged 7 commits into
mainfrom
v5.3

Conversation

@Pnwcomputers

Copy link
Copy Markdown
Owner

DeployWorkstation v5.3 — Package ID Auto-Resolution & Reboot-Aware Installs

This release is all about install reliability. Earlier versions could report false failures when winget package IDs drifted or when an installer just needed a reboot to finish. v5.3 fixes both, adds automatic recovery when a package ID has been renamed or retired, and rebuilds the exit-code handling against winget's official return codes.

Safe to run on bare-metal images, freshly cleaned PCs, and already-deployed machines.

✨ Highlights

  • 🔎 Package ID Auto-Resolution — Every winget ID is verified against the source before install. If the primary ID has been renamed or retired, DeployWorkstation tries an optional per-app fallback list, then a winget search by display name (adopted only when unambiguous), and logs candidate IDs when it can't decide for you. Results are cached per run (install + update share the cache), so this adds only a few seconds to a full deployment.
  • 🔄 Reboot-Aware Exit Handling — Installs that succeed but require a restart (Adobe Reader does this regularly) now count as success, set a RebootNeeded flag, and surface a restart notice in the summary and at end of run — instead of being retried and logged as network failures.
  • 🎯 --exact matching everywhere — All install/upgrade calls now use --exact (plus --disable-interactivity) so a substring ID can't quietly match the wrong package or fail as ambiguous.
  • 📊 Smarter update mode — Apps that aren't installed are now logged as SKIPPED and tracked separately, rather than counted as update failures.

🐛 Bug Fixes

  • Invalid .NET Framework package IDMicrosoft.DotNet.Framework.4.8 was never a valid winget ID, so every run failed that install with 0x8A150014 NO_APPLICATIONS_FOUND. Corrected to Microsoft.DotNet.Framework.Runtime (currently 4.8.1) with Microsoft.DotNet.Framework.DeveloperPack_4 as a fallback. On Win10 1903+ / Win11 the runtime ships in-box, so this typically resolves to a fast no-op.
  • Reboot exit codes misclassified as network errors0x8A150109 (restart to finish) and 0x8A15010A (restart before install) were treated as transient network faults and retried twice before being logged as failures. Reboot-to-finish now counts as success; reboot-before-install fails with the correct reason.
  • Wrong exit-code hex comments — Several return-code labels were incorrect (e.g. -1978335212 labeled 0x8A15002C is actually 0x8A150014; -1978334960 labeled "blocked by policy" is actually a dependency failure). Exit-code tables were rebuilt against winget's official returnCodes.md, and unknown codes now log their hex form for easy lookup.
  • Not-installed apps counted as update failures — In update mode, 0x8A150014 from winget upgrade --id is now logged as SKIPPED and tracked separately.

🔧 Other Reliability Improvements

  • --include-unknown on upgrades handles apps whose installed version winget can't read — common after Windows Update services the .NET runtimes out from under winget.
  • Installer hash-mismatch errors now trigger a winget source update before retrying, since they're usually caused by a stale manifest.
  • Retry logic now distinguishes genuinely transient errors (network faults, stale-manifest hash mismatches) from reboot and policy conditions, which are no longer blindly retried.

⚠️ Notes & Requirements

  • winget 1.4+ required — the script bootstraps the current release automatically on OEM machines where winget is missing or outdated.
  • Existing $script:ManagedApps entries continue to work unchanged. To take advantage of auto-resolution, add an optional Fallbacks = @('Alternate.Id') list to any app entry (see the README for an example). The Name field doubles as the winget search term of last resort, so keep it close to the app's actual display name in the winget catalog.

🚀 Upgrading

Pull the latest and re-run — no config migration needed:

git pull origin main
# Update managed apps only
.\DeployWorkstation.ps1 -SkipBloatwareRemoval -SkipSystemConfig -UpdateApps

Full Changelog: v5.2...v5.3

Tested on Windows 10 (1909+) and Windows 11 — Pro & Home Editions.

Fixed bugs in DeployWorkstation.ps1 related to package ID handling and reboot exit codes. Improved reliability of package ID resolution and added fallback mechanisms.
Added version information for v5.3 (Beta) to README.
@Pnwcomputers Pnwcomputers reopened this Aug 18, 2026
@Pnwcomputers
Pnwcomputers merged commit a70fe8c into main Aug 18, 2026
3 of 8 checks passed
@Pnwcomputers
Pnwcomputers deleted the v5.3 branch August 18, 2026 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant