From 12c6c771dca95e4cbdde52c71f11d3cc8ef49cc9 Mon Sep 17 00:00:00 2001 From: cproudlock Date: Wed, 19 Aug 2026 17:16:38 -0400 Subject: [PATCH] Stage the two universal print drivers at imaging time A bay comes off the line unable to build a printer queue. Set-ShopdbPrinters.ps1 creates queues against drivers that are already present and skips any that are not, so a freshly imaged PC silently gets no printers until some later enforcement cycle tops it up. The two universals are 100 MB and resolve the overwhelming majority of the fleet's printers. The four device-specific drivers are another 126 MB and are deliberately NOT here - they belong only on bays that own that hardware, and those bays pick them up from the runtime manifest. NO WAVE GATE on these entries, unlike the runtime ones. Waves exist because ~300 bays share one runtime share and GE-Enforce spreads them across only five minutes; imaging runs a handful of bays at a time on the isolated PXE LAN that already moves multi-GB WIMs, so there is no stampede to prevent. DETECTION IS THE SPOOLER'S OWN KEY, not pnputil, and the difference is not cosmetic. Installing a printer driver is two steps: pnputil /add-driver stages the package into the driver store, Add-PrinterDriver registers it with the spooler. Get-PrinterDriver - which is what Set-ShopdbPrinters consults - reads the spooler. Measured on a Win11 bay: after Remove-PrinterDriver the spooler reports the driver gone while pnputil still lists the package, so a pnputil- detected entry would report compliant forever while every queue kept skipping. A broken bay that looks healthy is the worst outcome available here. The payload is not in git, matching every other installer under preinstall/: stage printer-drivers/ onto the PXE share alongside the rest. --- playbook/preinstall/preinstall.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/playbook/preinstall/preinstall.json b/playbook/preinstall/preinstall.json index af6dde0..faa6ee3 100644 --- a/playbook/preinstall/preinstall.json +++ b/playbook/preinstall/preinstall.json @@ -218,6 +218,28 @@ "DetectionMethod": "File", "DetectionPath": "C:\\ProgramData\\PXEDrivers\\drivers-installed.marker", "PCTypes": ["gea-shopfloor-collections", "gea-shopfloor-nocollections", "gea-shopfloor-common", "gea-shopfloor-cmm", "gea-shopfloor-genspect", "gea-shopfloor-heattreat", "gea-shopfloor-keyence", "gea-shopfloor-partmarker", "gea-shopfloor-waxtrace"] + }, + { + "_comment": "HP universal print driver, staged at imaging so a bay comes off the line able to build an HP queue without waiting on the SFLD share. Set-ShopdbPrinters.ps1 creates queues against drivers that are already present and SKIPS any that are not, so without this a freshly imaged bay silently gets no printers until a later enforcement cycle tops it up. NO WAVE GATE HERE, deliberately: waves exist because ~300 bays share one runtime share, whereas imaging runs a handful of bays at a time on the isolated PXE LAN that already moves multi-GB WIMs. Detection is the SPOOLER's driver key, not pnputil - pnputil only proves the package reached the driver store, and Get-PrinterDriver (what Set-ShopdbPrinters consults) reads the spooler, so a pnputil check goes green on a half-install. Payload is NOT in git: stage printer-drivers/ onto the PXE share like the other installer payloads.", + "Name": "ShopDB Printer Driver - HP Universal PS", + "Installer": "printer-drivers\\Install-ShopdbPrinterDrivers.ps1", + "Type": "PS1", + "InstallArgs": "-Only 'HP Universal Printing PS'", + "LogFile": "C:\\Logs\\PreInstall\\printer-drivers.log", + "DetectionMethod": "Registry", + "DetectionPath": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Print\\Environments\\Windows x64\\Drivers\\Version-3\\HP Universal Printing PS", + "PCTypes": ["gea-shopfloor-collections", "gea-shopfloor-nocollections", "gea-shopfloor-common", "gea-shopfloor-cmm", "gea-shopfloor-genspect", "gea-shopfloor-heattreat", "gea-shopfloor-keyence", "gea-shopfloor-partmarker", "gea-shopfloor-waxtrace"] + }, + { + "_comment": "Xerox universal print driver. Same reasoning as the HP entry above. These two universals are 100 MB combined and resolve the overwhelming majority of the fleet's printers; the four device-specific drivers (DesignJet, Zebra ZT411, Epson C3500, FARGO card printer) are another 126 MB and are deliberately NOT staged at imaging - they belong only on the bays that have that hardware, and those bays pick them up from the runtime manifest on their next enforcement cycle.", + "Name": "ShopDB Printer Driver - Xerox Global PCL6", + "Installer": "printer-drivers\\Install-ShopdbPrinterDrivers.ps1", + "Type": "PS1", + "InstallArgs": "-Only 'Xerox Global Print Driver PCL6'", + "LogFile": "C:\\Logs\\PreInstall\\printer-drivers.log", + "DetectionMethod": "Registry", + "DetectionPath": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Print\\Environments\\Windows x64\\Drivers\\Version-3\\Xerox Global Print Driver PCL6", + "PCTypes": ["gea-shopfloor-collections", "gea-shopfloor-nocollections", "gea-shopfloor-common", "gea-shopfloor-cmm", "gea-shopfloor-genspect", "gea-shopfloor-heattreat", "gea-shopfloor-keyence", "gea-shopfloor-partmarker", "gea-shopfloor-waxtrace"] } ] }