6 Deploying
Forgejo Actions edited this page 2026-08-11 14:35:46 +00:00

🚀 Deploying to Intune

Each .intunewin is uploaded once per driver series and then reused for every printer of that series by creating one Win32 app per printer with different command-line arguments — see Architecture § Deploy-time parameterization and detection model for why the packages are built this way.

  1. Build the package (see Building) and upload the resulting .intunewin in Intune admin center → Apps → Windows → Add → Windows app (Win32).

  2. Set the install and uninstall commands, e.g. for HP UPD PCL6:

    • Install:
      powershell.exe -NoProfile -ExecutionPolicy Bypass -File Install.ps1 -PrinterName "Floor3-Copier" -IPAddress "10.10.20.15" -Model "HP LaserJet M611"
      
    • Uninstall:
      powershell.exe -NoProfile -ExecutionPolicy Bypass -File Uninstall.ps1 -PrinterName "Floor3-Copier"
      

    -Model is optional metadata for HP's universal driver; it matches the device over the network port at print time, not by model string.

    For UTAX/Kyocera KX, -Model instead selects a specific driver when given (see Supported Printers for the exact strings) and falls back to its own universal driver when omitted:

    powershell.exe -NoProfile -ExecutionPolicy Bypass -File Install.ps1 -PrinterName "Floor2-MFP" -IPAddress "10.10.20.20" -Model "CD 1030 / DC 2130 KX"
    

    OKI has no universal driver at all, so -Model is required:

    powershell.exe -NoProfile -ExecutionPolicy Bypass -File Install.ps1 -PrinterName "Floor1-MFP" -IPAddress "10.10.20.30" -Model "OKI MC873(PCL6)"
    
  3. Install behavior: System. Requirements: 64-bit, an appropriate minimum OS.

  4. Detection rule: Registry, no script.

    • Key path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\<PrinterName>
    • Rule: key exists (Windows creates this key as a side effect of Add-Printer, so no separate detection logic is needed).
  5. Assign the app to the device(s)/group(s) for that one printer.

  6. Repeat steps 2-5 (same uploaded package, new app entry) for every additional printer of the same driver series.

Before rolling out broadly

tools/mkintunewin.py's package format is confirmed against a real Intune tenant (hp-upd-pcl6, 2026-08-11: upload, SYSTEM-context install, and printer creation all succeeded). That's the packaging layer, not any individual vendor's driver/script combination — do a single test printer end-to-end (steps above, then confirm install + detection on a test device) for every new vendor package before assigning to a wider group. See Architecture § Format validation and fallback if a failure looks like it points at the package format itself rather than the driver/script logic.