# Xerox Universal Print Driver - Offline USB Installer

Standalone offline installer for Xerox Universal Print Driver for USB-connected printers.

## Overview

This installer packages the Xerox Global Print Driver PCL6 for offline installation on computers that need to connect Xerox printers via USB. No network or database connection is required.

**Designed for Windows 7+ systems with outdated root certificates.**

## Features

- **Offline Installation**: No network connection required
- **USB Plug-and-Play**: After driver installation, connect printer via USB and Windows auto-detects
- **Multi-Architecture**: Supports both 32-bit and 64-bit Windows
- **Windows 7 Compatible**: Handles certificate trust issues on older systems
- **Certificate Bypass**: Automatically installs driver certificate to trusted store
- **Simple UI**: Welcome page → Install → Done

## Driver Information

| Property | Value |
|----------|-------|
| **Driver Name** | Xerox Global Print Driver PCL6 |
| **Version** | 5.1055.3.0 |
| **Architectures** | x64 and x32 |
| **Connection** | USB |
| **Min Windows** | Windows 7 SP1 |

## Windows 7 Certificate Handling

This installer addresses the "untrusted certificate" issue on Windows 7 systems that lack updated root certificates:

### What It Does

1. **Installs Certificate**: Extracts the Xerox signing certificate from the driver catalog (.cat) file and adds it to:
   - `TrustedPublisher` store - Trusts the driver publisher
   - `Root` store - Validates certificate chain

2. **Modifies Signing Policy**: Sets driver signing policy to "Warn" (not "Block") via registry:
   - `HKLM\SOFTWARE\Microsoft\Driver Signing`
   - `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSigning`

3. **Multiple Install Methods**: Tries several approaches for compatibility:
   - `pnputil /add-driver` (Windows 10+ syntax)
   - `pnputil -a` (Windows 7 syntax)
   - `rundll32 setupapi.dll,InstallHinfSection` (fallback)
   - `rundll32 printui.dll,PrintUIEntry` (driver registration)

## Project Structure

```
OfflineInstaller/
├── XeroxOfflineInstaller.iss    # Main Inno Setup script
├── README.md                     # This file
├── gea-logo.ico                  # Application icon
├── patrick.bmp                   # Wizard image (164x314px)
├── patrick-sm.bmp                # Small wizard image (55x58px)
└── drivers/
    ├── xerox_x64/                # 64-bit driver files
    │   └── UNIV_5.1055.3.0_PCL6_x64_Driver.inf/
    │       ├── x3UNIVX.inf       # Main INF file
    │       └── x3UNIVx.cat       # Certificate catalog
    └── xerox_x32/                # 32-bit driver files
        ├── x3UNIVX.inf           # Main INF file
        └── x3UNIVx.cat           # Certificate catalog
```

## Building the Installer

### Requirements
- Windows machine with Inno Setup 6 installed
- All files in this directory

### Steps
1. Copy this folder to a Windows machine
2. Open `XeroxOfflineInstaller.iss` in Inno Setup Compiler
3. Press F9 to compile
4. Output: `Output\XeroxOfflineInstaller.exe`

### Command Line Build
```batch
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" XeroxOfflineInstaller.iss
```

## Running the Installer

1. Run `XeroxOfflineInstaller.exe` as **Administrator**
2. Click Next on the Welcome page
3. Watch installation progress:
   - Step 1: Installing certificate to trusted store
   - Step 2: Configuring driver signing policy
   - Step 3: Installing printer driver
4. Press any key to close
5. Connect your Xerox printer via USB
6. Windows will automatically detect and configure the printer

## Silent Installation

```batch
XeroxOfflineInstaller.exe /VERYSILENT /NORESTART
```

## How It Works

1. **Extract**: Driver files extracted to temp folder
2. **Certificate**: Installs signing certificate to trusted stores using `certutil`
3. **Policy**: Sets driver signing to "Warn" mode via registry
4. **pnputil**: Adds driver package to Windows driver store
5. **PrintUI**: Registers driver with Windows Print Spooler
6. **USB Detection**: When printer is connected, Windows matches it to installed driver

## Supported Printers

This universal driver supports most Xerox printers including:
- Xerox AltaLink series
- Xerox VersaLink series
- Xerox WorkCentre series
- And many more Xerox models

## Troubleshooting

### "Access Denied" Error
- Run the installer as Administrator

### "Untrusted Certificate" Still Appears
If Windows still shows a certificate warning after installation:
1. Click **"Install this driver software anyway"**
2. The driver will install and work normally
3. This is expected on some Windows 7 configurations

### Driver Already Installed
- The installer will detect this and skip installation
- Your printer is ready to use

### Printer Not Detected After USB Connection
1. Open Device Manager
2. Look for any devices with warning icons
3. Right-click → Update Driver → Browse my computer
4. Select "Let me pick from a list"
5. Choose "Xerox Global Print Driver PCL6"

### Verify Driver Installation (Windows 7)
```cmd
wmic printer driver list brief | findstr /i xerox
```

### Verify Driver Installation (Windows 10+)
```powershell
Get-PrinterDriver -Name "Xerox Global Print Driver PCL6"
```

### Verify Certificate Installation
```cmd
certutil -store TrustedPublisher
```

## Differences from PrinterInstaller

| Feature | PrinterInstaller | OfflineInstaller |
|---------|------------------|------------------|
| Network Required | Yes (queries ShopDB) | No |
| Connection Type | TCP/IP Network | USB |
| Vendors | HP, Xerox | Xerox only |
| Printer Selection | Database-driven list | N/A (driver only) |
| Windows 7 Support | Limited | Full (cert bypass) |
| Use Case | Network printers | USB printers |

## Technical Details

### Registry Keys Modified
```
HKLM\SOFTWARE\Microsoft\Driver Signing
  Policy = 1 (DWORD) - Warn instead of Block

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSigning
  Policy = 1 (DWORD) - Warn instead of Block
```

### Certificate Stores Used
- `TrustedPublisher` - Machine-level trusted publishers
- `Root` - Trusted root certification authorities

### Installation Methods (in order)
1. `pnputil /add-driver <inf> /install` - Windows 10+
2. `pnputil -a <inf>` - Windows 7
3. `rundll32 setupapi.dll,InstallHinfSection` - Fallback
4. `rundll32 printui.dll,PrintUIEntry /ia` - Driver registration

## Version History

### Version 1.1 (2025-12-23)
- Added Windows 7 certificate bypass
- Switched to batch script for better compatibility
- Added certutil certificate installation
- Added driver signing policy modification
- Added fallback installation methods
- Uses Windows 7 pnputil syntax (`-a` flag)

### Version 1.0 (2025-12-23)
- Initial release
- Xerox Global Print Driver PCL6 v5.1055.3.0
- x64 and x32 support

---

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