# WJDT Printer Installer (Map UI)

Forked from `PrinterInstaller/` on branch `feature/printer-map`.

## Why a fork

The web flow at `printerinstallermap.asp` -> `installprinter.asp` (which downloads a per-selection `.bat` that invokes the original `PrinterInstaller.exe /PRINTER=...`) is blocked by current Edge policy: `.bat` downloads disallowed, unsigned `.exe` runs disallowed.

This variant replaces the web map UI with an in-installer wizard page so the operator never touches a browser. Same drivers, same install logic, same `/PRINTER=` silent path - all that changes is the selection UX.

## What's new vs PrinterInstaller 2.0

- **New wizard page**: site-map bitmap with clickable printer markers placed at `printers.mapleft, maptop` coords from ShopDB. Click toggles selection; selections feed the existing checkbox page.
- **Bundled site map**: `sitemap2025-dark.png` (2550 x 3300, sourced from `shopdb/images/`) baked into `[Files]`, extracted to `{tmp}` at install start.
- **API call extended**: `api_printers.asp` now returns `mapleft, maptop` per row (additive; older clients ignore).
- New `AppId` GUID, new `OutputBaseFilename=PrinterInstallerMap`, new `AppName` so the two installers coexist on the same PC without UninstallString collision.

## What's unchanged

- Driver bundle (HP UPD, Xerox UPD, Brother MFC, HID FARGO).
- `Install-PrinterDriver` + `Install-NetworkPrinter` install logic.
- `/PRINTER="..."` and `/VERYSILENT /NORESTART` silent-install path - existing bat-file deployments would still work if pointed at this EXE binary, but the whole point of the fork is to retire that flow.
- ShopDB API base URL (`http://192.168.122.151:8080/api_printers.asp`).
- Custom branding (`gea-logo.ico`, `patrick.bmp`, `patrick-sm.bmp`).

## Status

Stub. `.iss` header renamed; map wizard page not yet implemented. Tracked work:

- [ ] Extend `api_printers.asp` to return `mapleft, maptop`.
- [ ] Add `sitemap2025-dark.png` to `[Files]`.
- [ ] Implement `MapPage` Pascal procedure (TScrollBox + TImage + click-to-toggle hotspots).
- [ ] Wire selected printer IDs into the existing `SelectedPrinters` array used by the checkbox page.
- [ ] Code-signing cert (separate task - see project memory).
- [ ] Rebuild + sign + bake into PXE image.

## Build / sign / deploy

Same as `PrinterInstaller/`. See `../PrinterInstaller/README.md` for the build matrix.
