Skip to content

feature: HP OEM hybrid pattern (HPIA + BCU + debloat)#72

Closed
Gumbees wants to merge 1 commit into
developmentfrom
feature/oem-hybrid-pattern-hp
Closed

feature: HP OEM hybrid pattern (HPIA + BCU + debloat)#72
Gumbees wants to merge 1 commit into
developmentfrom
feature/oem-hybrid-pattern-hp

Conversation

@Gumbees

@Gumbees Gumbees commented May 11, 2026

Copy link
Copy Markdown
Contributor

Summary

Replicates the OEM hybrid pattern (orchestrator + vendor-tool leaves + inline-config leaves with jsDelivr lib bootstrap and SHA256 verification) for HP, following the Dell prototype landed in #69.

Closes #70.

Components

  • oem-hp/hp-baseline.ps1 ... orchestrator. Detects manufacturer, fetches and invokes each enabled leaf from jsDelivr, reports status to a Ninja custom field.
  • oem-hp/hp-image-assistant-install.ps1 ... idempotent HPIA install. Downloads hp-hpia-<version>.exe, verifies SHA256, runs /s, verifies version post-install.
  • oem-hp/hp-image-assistant-run.ps1 ... /Operation:Analyze /Action:Install /Category:Drivers,Software,Firmware,BIOS /Selection:All /Silent with /ReportFolder and /SoftpaqDownloadFolder set to C:\ProgramData\DTC\HPIA\. Parses HPIA exit codes (0/256/257/3010 = success, 4096/4097/8194/8199 = failure).
  • oem-hp/hp-bios-config.ps1 ... fetches dtc-baseline.repset from jsDelivr, applies via BiosConfigUtility64.exe /setconfig:... /log:..., supports optional password file via /cspwdfile.
  • oem-hp/hp-debloat.ps1 ... removes HP consumer software (Support Assistant, JumpStart, Wolf Security, Connection Optimizer, etc.) and the AD2F1837.* provisioned AppX bundles. Keep-list protects HPIA, HP CMSL, BCU, Client Security Manager, and System Default Settings.
  • oem-hp/lib/hp-detection.ps1 ... Test-HPHardware (covers HP* and Hewlett* manufacturer strings), Get-HPInstalledModel, Test-HPIAInstalled, Get-HPIAVersion, Get-HPIAPath, Get-HPBCUPath.

Reuses the shared helpers from #69 (Get-OEMManufacturer, Get-VerifiedDownload) at oem-shared/lib/oem-manufacturer-detect.ps1. No new shared helpers added.

Conventions held

  • $env:VAR contract everywhere; $env:RMM compared against "1".
  • Three-section structure (RMM vars / input handling / script logic).
  • Start-Transcript / Stop-Transcript with the $TranscriptStarted guard pattern (Fix Stop-Transcript error when transcript not active #34).
  • camelCase variables, kebab-case filenames.
  • No em dashes in script comments, no AI tells.

TODOs captured in code

Each is marked with an explicit # TODO: comment in the file that needs it.

  • hp-image-assistant-install.ps1 ... confirm canonical HPIA EXE URL on the HPIA index page; capture SHA256 of hp-hpia-5.3.4.exe into $env:HPIAInstallerSha256.
  • hp-bios-config.ps1 ... author oem-hp/policy/dtc-baseline.repset by exporting from a known-good HP with BiosConfigUtility64.exe /getconfig:current.repset, editing the active-value markers (*) to the DTC baseline, and committing at that path. Capture its SHA256 into $env:HPBiosPolicySha256.
  • All lib-bootstrap blocks and leaf-invoke calls in hp-baseline.ps1 ... replace REPLACE_WITH_REAL_HASH placeholders once the libs and leaves land on the @release tag (same pattern as the Dell PR).

Verification

  • [System.Management.Automation.Language.Parser]::ParseFile passes clean on all six scripts (no syntax errors, no parse warnings).
  • Grep for [—–] (em / en dash) across oem-hp/ returns no matches.
  • File shape and conventions visually diffed against the Dell prototype at origin/feature/oem-hybrid-pattern-dell.

Notes for follow-up testing on a live HP endpoint

  • Validate HPIA install path resolves to C:\Program Files\HP\HPIA\ (some installer versions have landed at C:\Program Files (x86)\HP\HPIA\; the detection lib checks both).
  • Validate BCU install path resolves correctly (lib checks both Hewlett-Packard and HP subfolders under Program Files and Program Files (x86)).
  • Confirm exit codes 257 vs 3010 behave as expected on a machine with pending updates.
  • Capture all SHA256 TODOs into the lib-bootstrap pinning before tagging @release.

Replicates the Dell prototype from #69 for HP. Same hybrid shape:
orchestrator + vendor-tool leaves + inline-config leaves, with shared
helpers fetched from jsDelivr at runtime and SHA256-verified.

Components:
- oem-hp/hp-baseline.ps1 ... orchestrator, detects + dispatches
- oem-hp/hp-image-assistant-install.ps1 ... idempotent HPIA install
- oem-hp/hp-image-assistant-run.ps1 ... HPIA /Analyze /Install with
  parsed exit codes (0/256/257/3010 = success-class)
- oem-hp/hp-bios-config.ps1 ... BCU /setconfig policy push
- oem-hp/hp-debloat.ps1 ... remove HP consumer software, keep HPIA,
  HP CMSL, BCU, and enterprise security agents
- oem-hp/lib/hp-detection.ps1 ... HP-specific detection helpers

Reuses oem-shared/lib/oem-manufacturer-detect.ps1 from #69. No new
shared helpers added.

TODOs: SHA256 placeholders for all jsDelivr URLs (libs + leaves +
HPIA installer + .repset policy file) need to be captured once those
assets land on the @Release tag. Each is marked with an explicit
TODO comment in code. The .repset policy file also needs to be
authored from a known-good HP and committed at
oem-hp/policy/dtc-baseline.repset.
@Gumbees Gumbees added type:enhancement New work that adds or improves capability (Halo: Enhancement) category:feature Net-new capability the customer/operator didn't have labels May 11, 2026

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Code review skipped — your organization's overage spend limit has been reached.

Code review is billed via overage credits. To resume reviews, an organization admin can raise the monthly limit at claude.ai/admin-settings/claude-code.

Once credits are available, push a new commit or reopen this pull request to trigger a review.

@Gumbees

Gumbees commented May 11, 2026

Copy link
Copy Markdown
Contributor Author

Closing in favor of the OEM redo design captured at #74. The original approach (runtime lib bootstrap via jsDelivr, "baseline" naming with static policy files, hash placeholders) is being replaced with CI-generated fat scripts, internet check only at the install step, and RMM-env-var-driven configure scripts. New PRs will be opened against the foundation PR (separate, coming next).

Branch retained ... cherry-pick anything worth preserving from the new PR's branch.

@Gumbees Gumbees closed this May 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category:feature Net-new capability the customer/operator didn't have type:enhancement New work that adds or improves capability (Halo: Enhancement)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feature(oem): replicate OEM hybrid pattern for HP

1 participant