krona-staff/docs/DRIVER-DISTRIBUTION.md
Ochenstarik fd1ec3d819 style: establish repository formatting baseline
Run the configured formatter across the repository before audit remediation so later security fixes produce reviewable, conflict-resistant diffs.
2026-09-26 14:22:25 +07:00

4.7 KiB

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


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."

  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:
    pnputil /add-driver slk20r.inf /install
    
  4. Deploy KronaStaffTerminal-Setup-<version>.exe /S silently.