feature: HP OEM hybrid pattern (HPIA + BCU + debloat)#72
Conversation
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.
There was a problem hiding this comment.
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.
|
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 Branch retained ... cherry-pick anything worth preserving from the new PR's branch. |
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. Downloadshp-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 /Silentwith/ReportFolderand/SoftpaqDownloadFolderset toC:\ProgramData\DTC\HPIA\. Parses HPIA exit codes (0/256/257/3010 = success, 4096/4097/8194/8199 = failure).oem-hp/hp-bios-config.ps1... fetchesdtc-baseline.repsetfrom jsDelivr, applies viaBiosConfigUtility64.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 theAD2F1837.*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(coversHP*andHewlett*manufacturer strings),Get-HPInstalledModel,Test-HPIAInstalled,Get-HPIAVersion,Get-HPIAPath,Get-HPBCUPath.Reuses the shared helpers from #69 (
Get-OEMManufacturer,Get-VerifiedDownload) atoem-shared/lib/oem-manufacturer-detect.ps1. No new shared helpers added.Conventions held
$env:VARcontract everywhere;$env:RMMcompared against"1".Start-Transcript/Stop-Transcriptwith the$TranscriptStartedguard pattern (Fix Stop-Transcript error when transcript not active #34).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 ofhp-hpia-5.3.4.exeinto$env:HPIAInstallerSha256.hp-bios-config.ps1... authoroem-hp/policy/dtc-baseline.repsetby exporting from a known-good HP withBiosConfigUtility64.exe /getconfig:current.repset, editing the active-value markers (*) to the DTC baseline, and committing at that path. Capture its SHA256 into$env:HPBiosPolicySha256.hp-baseline.ps1... replaceREPLACE_WITH_REAL_HASHplaceholders once the libs and leaves land on the@releasetag (same pattern as the Dell PR).Verification
[System.Management.Automation.Language.Parser]::ParseFilepasses clean on all six scripts (no syntax errors, no parse warnings).[—–](em / en dash) acrossoem-hp/returns no matches.origin/feature/oem-hybrid-pattern-dell.Notes for follow-up testing on a live HP endpoint
C:\Program Files\HP\HPIA\(some installer versions have landed atC:\Program Files (x86)\HP\HPIA\; the detection lib checks both).Hewlett-PackardandHPsubfolders under Program Files and Program Files (x86)).@release.