# HID Card Printer Driver Installer

Universal driver installer for HID FARGO card printers (badge and ID card printing).

## Overview

This Inno Setup installer installs USB drivers for HID FARGO card printers used for printing employee badges, ID cards, and access cards. The installer supports multiple HID models and automatically configures drivers for USB-connected devices.

## Features

- **Multi-Model Support**: Install drivers for multiple HID card printer models
- **Simple Selection**: Checkbox interface to choose which models to install
- **USB Driver Installation**: Uses `pnputil` for proper Windows driver installation
- **Professional UI**: Custom branding with GEA logo and Patrick artwork
- **Admin Installation**: Requires administrator privileges for driver installation
- **Plug-and-Play**: Once drivers are installed, USB card printers auto-configure

## Requirements

### To Build
- Inno Setup 6.x installed on Windows
- HID card printer drivers in `drivers/` subdirectories
- Access to build machine

### To Run
- Windows 10/11 (64-bit or 32-bit)
- Administrator privileges
- USB ports for card printer connection

## Project Structure

```
HIDCardPrinter/
├── HIDCardPrinter.iss            # Main Inno Setup script
├── README.md                      # This file
├── gea-logo.ico                   # Application icon
├── patrick.bmp                    # Large wizard image (164x314px)
├── patrick-sm.bmp                 # Small wizard image (55x58px)
└── drivers/
    ├── HID_DTC4500e/              # HID FARGO DTC4500e driver files
    │   ├── dtc4500e.inf           # Main driver INF file
    │   └── ...                    # Supporting driver files
    ├── HID_DTC1250e/              # HID FARGO DTC1250e driver files (optional)
    │   └── ...
    └── HID_HDP5000/               # HID FARGO HDP5000 driver files (optional)
        └── ...
```

## Supported Card Printers

### Currently Configured
- **HID FARGO DTC4500e** - Single-sided and dual-sided card printer

### Expandable Support (add drivers to enable)
- HID FARGO DTC1250e - Entry-level card printer
- HID FARGO HDP5000 - High-definition card printer
- HID FARGO DTC4250e - Mid-range card printer
- Any other HID FARGO model with Windows drivers

## Adding Driver Files

### Step 1: Obtain HID Driver Package

1. Download the driver from:
   - HID Global website: https://www.hidglobal.com/support/downloads
   - Driver CD included with printer
   - Your IT department's driver repository

2. Extract the driver package to a temporary location

### Step 2: Locate the INF File

Find the main driver INF file (e.g., `dtc4500e.inf`, `hidcard.inf`, etc.)

### Step 3: Copy Driver Files

```bash
# On Linux (via your mapped directory)
mkdir -p ~/projects/inno/HIDCardPrinter/drivers/HID_DTC4500e
cp -r /path/to/extracted/driver/* ~/projects/inno/HIDCardPrinter/drivers/HID_DTC4500e/
```

### Step 4: Update HIDCardPrinter.iss

Edit line 61 to update the actual INF filename:

```pascal
AvailableModels[0].InfFile := 'your_actual_inf_filename.inf';  // Update this
```

### Step 5: Add Additional Models (Optional)

To support multiple models, uncomment and configure additional entries in `HIDCardPrinter.iss`:

1. **Uncomment the [Files] section** (around line 35):
```pascal
Source: "drivers\HID_DTC1250e\*"; DestDir: "{tmp}\hid_dtc1250e"; Flags: ignoreversion recursesubdirs
```

2. **Increase array size** (line 51):
```pascal
SetArrayLength(AvailableModels, 3);  // Change from 1 to number of models
```

3. **Add model configuration** (after line 62):
```pascal
// HID FARGO DTC1250e
AvailableModels[1].ModelName := 'HID FARGO DTC1250e';
AvailableModels[1].DriverPath := ExpandConstant('{tmp}\hid_dtc1250e');
AvailableModels[1].InfFile := 'dtc1250e.inf';  // Update with actual filename
AvailableModels[1].DriverDisplayName := 'HID FARGO DTC1250e Card Printer';
```

## Building the Installer

### On Windows

1. Open Inno Setup Compiler
2. File → Open → Select `HIDCardPrinter.iss`
3. Build → Compile (or press F9)
4. Output file created at: `C:\Users\570005354\Downloads\Output\HIDCardPrinterInstaller.exe`

### Command Line

```batch
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" "C:\path\to\HIDCardPrinter.iss"
```

## Installation Process

When a user runs `HIDCardPrinterInstaller.exe`:

1. **Welcome Page**: Explains what the installer does
2. **Model Selection**: User selects which card printer models to install drivers for
3. **Ready Page**: Confirms selections
4. **Driver Installation**:
   - Extracts drivers to temp folder
   - Uses `pnputil /add-driver` to install driver packages
   - Shows progress in PowerShell window
5. **Summary**: Shows installation results and next steps

## How It Works

### Driver Installation

The installer uses Windows `pnputil.exe` to properly install driver packages:

```powershell
pnputil /add-driver [inf_file_path] /install /force
```

**Benefits:**
- Drivers installed to Windows driver store
- Digitally signed drivers validated
- Proper driver versioning
- Automatic device configuration on USB connection

### USB Plug-and-Play

After driver installation:
1. User plugs in HID card printer via USB
2. Windows detects the device
3. Windows matches device to installed driver
4. Printer automatically configures and appears in "Devices and Printers"
5. User can print test cards immediately

## Command-Line Parameters

### Silent Installation

Run installer silently (no UI):

```batch
HIDCardPrinterInstaller.exe /VERYSILENT /NORESTART
```

## Troubleshooting

### "Driver installation failed"
- **Solution**: Ensure running as Administrator
- **Check**: Windows version compatibility (Windows 10/11 supported)
- **Verify**: Driver files are present in `drivers/` folder
- **Confirm**: INF filename in script matches actual file

### "INF file not found"
- **Solution**: Check the `InfFile` parameter in `HIDCardPrinter.iss`
- **Update**: Line 61 with the correct INF filename from your driver package
- **Verify**: File exists in `drivers/HID_DTC4500e/` directory

### "Device not detected after installation"
- **Solution**:
  1. Restart computer after driver installation
  2. Plug in USB card printer
  3. Wait 30 seconds for Windows to detect
  4. Check Device Manager for any errors

### "Driver already installed" message
- **Normal**: Driver was previously installed or is built into Windows
- **Action**: No action needed - printer should work normally

### Finding the INF File

If you're not sure which file is the INF:

```bash
# On Linux
find ~/projects/inno/HIDCardPrinter/drivers/HID_DTC4500e/ -name "*.inf"

# On Windows
dir drivers\HID_DTC4500e\*.inf /s
```

The INF file typically contains:
- Device IDs (USB\VID_XXXX&PID_XXXX)
- Driver class (Printer, USB, etc.)
- Installation instructions for Windows

## Customization

### Change Database Server or Query Logic

This installer is standalone and doesn't query a database. All supported models are configured directly in the script.

### Add More Models

Follow the "Adding Driver Files" section above to add support for additional HID card printer models.

### Change Branding

Replace these files:
- `gea-logo.ico` - Application icon (32x32 or 48x48)
- `patrick.bmp` - Large wizard image (164x314px)
- `patrick-sm.bmp` - Small wizard image (55x58px)

## HID Card Printer Models Reference

### Common HID FARGO Models

| Model | Type | Features |
|-------|------|----------|
| DTC4500e | Dual-sided | Standard card printing, encoding options |
| DTC1250e | Single-sided | Entry-level, basic card printing |
| DTC4250e | Dual-sided | Mid-range, good quality |
| HDP5000 | High Definition | Premium quality, retransfer printing |
| DTC1500 | Single-sided | Modern entry-level model |

### Driver Download Sources

1. **HID Global Official**: https://www.hidglobal.com/support/downloads
2. **Windows Update**: Some drivers available via Windows Update
3. **Printer CD**: Included with printer purchase
4. **IT Department**: Internal driver repository

## Version History

### Version 1.0 (2025-10-24)
- Initial release
- Support for HID FARGO DTC4500e
- USB driver installation via pnputil
- Multi-model framework for expansion
- Based on PrinterInstaller.iss template

## Credits

- **Development**: WJDT
- **Template**: Based on PrinterInstaller.iss
- **Drivers**: HID Global Corporation
- **Installer Framework**: Inno Setup by Jordan Russell

## Related Documentation

- Main Inno Setup Guide: `/home/camp/projects/inno/INNO_SETUP_GUIDE.md`
- Network Printer Installer: `/home/camp/projects/inno/PrinterInstaller/README.md`

## Notes

### Differences from Network Printer Installer

| Feature | Network Printer | Card Printer |
|---------|----------------|--------------|
| Connection | TCP/IP network | USB |
| Database Query | Yes (ShopDB API) | No (static config) |
| Port Creation | TCP/IP ports | USB (automatic) |
| Driver Type | Universal (HP/Xerox) | Model-specific (HID) |
| Use Case | Office document printing | Badge/ID card printing |

### Why Separate Installer?

Card printers have different requirements:
- USB connection instead of network
- Model-specific drivers (not universal)
- Different user base (security/HR vs general office)
- Simpler deployment (no database lookup needed)

## Support

For questions about:
- **Driver files**: Contact HID Global support or your IT department
- **Installer issues**: Review troubleshooting section above
- **Custom modifications**: Consult INNO_SETUP_GUIDE.md

---

**Internal use only - WJDT / GE Aerospace**
