krona-staff/docs/DRIVER-DISTRIBUTION.md
Ochenstarik 7cf5142678 style: rebuild formatting without sync behavior changes
Recreate the formatting baseline from f5ac179 using only Prettier output. Leave sync and tenant-isolation files byte-identical to the base so Antigravity and Grok retain ownership. Normalized comparison confirms all 19 changed files are formatting-only; npm run check passes. Full format check retains five upstream warnings in excluded files.
2026-09-26 17:16:51 +07:00

72 lines
4.7 KiB
Markdown

# ZKTeco SLK20R Driver Distribution & Licensing Policy
**Document Version:** 1.0.0
**Target Audience:** Compliance Officers, Legal Counsel, System Administrators, DevOps
**Affected Hardware:** ZKTeco SLK20R, BioLink U-Match, ZK6500, ZK8500, ZK9500
---
## 1. Executive Summary & Legal Compliance Rationale
The Krona Staff Terminal integrates with the ZKTeco SLK20R optical fingerprint scanner using the ZKTeco ZKFinger SDK 5.3 native interface (`libzkfpcsharp.dll` / `libzkfp.dll`).
To ensure strict legal compliance with third-party intellectual property rights, **the Krona Staff Terminal installer does NOT bundle or distribute the proprietary ZKTeco USB device driver (`slk20r.sys`, `slk20r.inf`, `zkfp.sys`) or native installer binaries**.
The device driver must be obtained by end-users or enterprise system administrators directly from ZKTeco's official software distribution channel.
---
## 2. EULA Analysis (ZKFinger SDK 5.3)
The official End-User License Agreement included with the ZKTeco ZKFinger SDK (`apps/KronaStaffTerminal/Vendor/ZKFinger/LICENSE.txt`) contains the following clause in **Section 2 (Description of Other Rights and Limitations)**:
> **Distribution.**
> _"The SOFTWARE PRODUCT may not be sold or be included in a product or package which intends to receive benefits through the inclusion of the SOFTWARE PRODUCT. The SOFTWARE PRODUCT may be included in any free or non-profit packages or products."_
### Legal Interpretation:
1. **Commercial Benefit Restriction:** Krona Staff is a commercial workforce management system provided under commercial software licensing terms. Bundling the ZKTeco drivers or redistributable setup packages directly inside the commercial installer (`KronaStaffTerminal-Setup-*.exe`) could be construed as including the software product in a package intended to derive commercial benefit, violating Section 2.
2. **Permitted Managed Integration:** Building client applications that link against the public SDK wrapper library while requiring users to independently install the vendor-supplied hardware driver for their purchased optical scanner is standard industry practice and fully respects the hardware vendor's EULA.
---
## 3. Terminal & Installer Behavior
To ensure a seamless operational experience without violating vendor licensing terms, the Krona Staff installer and application implement non-blocking automated driver detection and guidance:
### 3.1 Installer Detection Flow
1. During installation (via `installer/KronaStaffTerminal.nsi`), the installer checks for the presence of the SLK20R / ZKFinger driver across standard system locations:
- System driver directory: `%WINDIR%\System32\drivers\slk20r.sys`, `zkfp.sys`, `zkfpos.sys`, `ZKUSB.sys`
- Windows Service Registry keys:
- `HKLM\SYSTEM\CurrentControlSet\Services\slk20r`
- `HKLM\SYSTEM\CurrentControlSet\Services\zkfp`
- `HKLM\SYSTEM\CurrentControlSet\Services\ZKUSB`
2. If the driver is **absent**:
- The installer displays an informative notice explaining that the ZKTeco hardware driver is required for fingerprint scanning.
- It offers a one-click button to launch the official ZKTeco download portal:
`https://www.zkteco.com/en/Biometrics_Module_SDK/ZKFinger-SDK-for-Windows`
- The installer does **not** fail or block installation; it completes cleanly so that the terminal and synchronization service are ready once the driver is installed.
### 3.2 Terminal Runtime Flow
1. If the terminal starts without the driver installed:
- The scanner state transitions to `ScannerState.DriverError` or `ScannerState.Disconnected`.
- The system tray icon updates to `TrayState.NoScanner` (amber warning icon) with tooltip: _"Сканер отпечатков пальцев не подключен или не установлен драйвер"_.
- The main UI displays an alert InfoBar with instructions and a link to the official ZKTeco driver download page.
- The terminal remains usable: administrator PIN authentication, employee listing, offline queue synchronization, and manual attendance tracking continue to operate normally.
2. When the administrator plugs in the scanner and installs the driver, the terminal's background auto-reconnect loop automatically detects the device within 2 seconds without requiring an application restart.
---
## 4. Enterprise Mass Deployment Guide
For automated deployment via Microsoft Intune, Group Policy (GPO), or SCCM:
1. Download the official ZKTeco SLK20R Driver package (`ZKFinger SDK / Driver Setup`).
2. Extract the driver INF and SYS files (`slk20r.inf`, `slk20r.sys`, `slk20rx64.cat`).
3. Deploy the driver package silently using standard Windows DISM or pnputil:
```cmd
pnputil /add-driver slk20r.inf /install
```
4. Deploy `KronaStaffTerminal-Setup-<version>.exe /S` silently.