Initial commit: Inno Setup installer packages

Installer packages for GE manufacturing tools:
- BlueSSOFix: Blue SSO authentication fix
- HIDCardPrinter: HID card printer setup
- HPOfflineInstaller: HP printer offline installer
- MappedDrive: Network drive mapping
- PrinterInstaller: General printer installer
- ShopfloorConnect: Shopfloor connectivity tool
- XeroxOfflineInstaller: Xerox printer offline installer

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
cproudlock
2025-12-30 13:15:54 -05:00
commit 8be52f956e
540 changed files with 84522 additions and 0 deletions

View File

@@ -0,0 +1,207 @@
# 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**

View File

@@ -0,0 +1,199 @@
; Xerox Universal Print Driver - Offline USB Installer
; Installs Xerox Global Print Driver for USB-connected printers
; Supports Windows 7+ (includes certificate trust bypass for older systems)
[Setup]
AppId={{8C4D5E62-6F3B-4E9C-AF2D-9B7E5F4E3C2B}}
AppName=Xerox Universal Print Driver (USB)
AppVersion=5.1055.3.0
AppPublisher=WJDT
AppPublisherURL=http://tsgwp00524.logon.ds.ge.com
AppSupportURL=http://tsgwp00524.logon.ds.ge.com
AppUpdatesURL=http://tsgwp00524.logon.ds.ge.com
CreateAppDir=no
ChangesAssociations=no
PrivilegesRequired=admin
ArchitecturesInstallIn64BitMode=x64compatible
OutputDir=.\Output
OutputBaseFilename=XeroxOfflineInstaller
SolidCompression=yes
WizardStyle=modern
SetupIconFile=gea-logo.ico
WizardImageFile=patrick.bmp
WizardSmallImageFile=patrick-sm.bmp
CreateUninstallRegKey=no
DisableWelcomePage=no
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Messages]
WelcomeLabel2=This utility will install the Xerox Universal Print Driver for USB-connected printers.%n%nDriver: Xerox Global Print Driver PCL6 v5.1055.3.0%n%nAfter installation:%n1. Connect your Xerox printer via USB%n2. Windows will automatically detect and configure it%n%nClick Next to install the driver.
[Files]
; Xerox Universal Print Driver x64
Source: "drivers\xerox_x64\*"; DestDir: "{tmp}\xerox_drivers_x64"; Flags: ignoreversion recursesubdirs; Check: Is64BitInstallMode
; Xerox Universal Print Driver x32
Source: "drivers\xerox_x32\*"; DestDir: "{tmp}\xerox_drivers_x32"; Flags: ignoreversion recursesubdirs; Check: not Is64BitInstallMode
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
BatchScript: String;
TempScriptPath: String;
ResultCode: Integer;
IsX64: Boolean;
XeroxDriverPath, XeroxDriverDir, TempDir: String;
begin
if CurStep = ssPostInstall then
begin
// Determine architecture and driver paths
IsX64 := Is64BitInstallMode;
TempDir := ExpandConstant('{tmp}');
if IsX64 then
begin
XeroxDriverPath := ExpandConstant('{tmp}\xerox_drivers_x64\UNIV_5.1055.3.0_PCL6_x64_Driver.inf\x3UNIVX.inf');
XeroxDriverDir := ExpandConstant('{tmp}\xerox_drivers_x64\UNIV_5.1055.3.0_PCL6_x64_Driver.inf');
end
else
begin
XeroxDriverPath := ExpandConstant('{tmp}\xerox_drivers_x32\x3UNIVX.inf');
XeroxDriverDir := ExpandConstant('{tmp}\xerox_drivers_x32');
end;
// Build installation batch script
BatchScript :=
'@echo off' + #13#10 +
'setlocal enabledelayedexpansion' + #13#10 +
'' + #13#10 +
'echo.' + #13#10 +
'echo ========================================' + #13#10 +
'echo Xerox Universal Print Driver Installer' + #13#10 +
'echo ========================================' + #13#10 +
'echo.' + #13#10 +
'' + #13#10 +
'set "DRIVER_NAME=Xerox Global Print Driver PCL6"' + #13#10 +
'set "INF_FILE=' + XeroxDriverPath + '"' + #13#10 +
'set "DRIVER_DIR=' + XeroxDriverDir + '"' + #13#10 +
'set "CAT_FILE=%DRIVER_DIR%\x3UNIVx.cat"' + #13#10 +
'' + #13#10 +
'echo Step 1: Installing driver certificate to trusted store...' + #13#10 +
'echo.' + #13#10 +
'' + #13#10 +
'REM Find the catalog file' + #13#10 +
'if not exist "%CAT_FILE%" (' + #13#10 +
' for %%f in ("%DRIVER_DIR%\*.cat") do (' + #13#10 +
' set "CAT_FILE=%%f"' + #13#10 +
' )' + #13#10 +
')' + #13#10 +
'' + #13#10 +
'if exist "%CAT_FILE%" (' + #13#10 +
' echo Catalog file: %CAT_FILE%' + #13#10 +
' echo.' + #13#10 +
'' + #13#10 +
' REM Add catalog directly to TrustedPublisher store' + #13#10 +
' REM This works! Adds as Certificate Trust List (CTL)' + #13#10 +
' certutil -addstore TrustedPublisher "%CAT_FILE%" >nul 2>&1' + #13#10 +
' if !errorlevel! equ 0 (' + #13#10 +
' echo Certificate catalog added to TrustedPublisher store' + #13#10 +
' ) else (' + #13#10 +
' echo Note: certutil returned !errorlevel! - may already be installed' + #13#10 +
' )' + #13#10 +
') else (' + #13#10 +
' echo WARNING: No catalog file found - continuing anyway...' + #13#10 +
')' + #13#10 +
'' + #13#10 +
'echo.' + #13#10 +
'echo Step 2: Disabling driver signature enforcement...' + #13#10 +
'echo.' + #13#10 +
'' + #13#10 +
'REM Set driver signing policy to Ignore (0) - prevents "untrusted" dialogs' + #13#10 +
'reg add "HKLM\SOFTWARE\Microsoft\Driver Signing" /v Policy /t REG_BINARY /d 00 /f >nul 2>&1' + #13#10 +
'if !errorlevel! equ 0 (' + #13#10 +
' echo Driver signing policy set to Ignore' + #13#10 +
') else (' + #13#10 +
' echo Note: Could not set driver signing policy' + #13#10 +
')' + #13#10 +
'' + #13#10 +
'REM Also set via Group Policy registry key' + #13#10 +
'reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Driver Signing" /v BehaviorOnFailedVerify /t REG_DWORD /d 0 /f >nul 2>&1' + #13#10 +
'' + #13#10 +
'echo.' + #13#10 +
'echo Step 3: Installing printer driver...' + #13#10 +
'echo.' + #13#10 +
'' + #13#10 +
'if not exist "%INF_FILE%" (' + #13#10 +
' echo ERROR: INF file not found: %INF_FILE%' + #13#10 +
' echo.' + #13#10 +
' pause' + #13#10 +
' exit /b 1' + #13#10 +
')' + #13#10 +
'echo INF file: %INF_FILE%' + #13#10 +
'echo.' + #13#10 +
'' + #13#10 +
'echo Adding driver to Windows driver store...' + #13#10 +
'echo.' + #13#10 +
'' + #13#10 +
'REM Try Windows 7 syntax first (works on all Windows versions)' + #13#10 +
'REM -i = install on matching devices, -a = add driver package' + #13#10 +
'pnputil -i -a "%INF_FILE%"' + #13#10 +
'set PNPRESULT=!errorlevel!' + #13#10 +
'' + #13#10 +
'REM If Windows 7 syntax fails, try Windows 10+ syntax' + #13#10 +
'if !PNPRESULT! neq 0 (' + #13#10 +
' echo.' + #13#10 +
' echo Trying alternative syntax...' + #13#10 +
' pnputil /add-driver "%INF_FILE%" /install' + #13#10 +
' set PNPRESULT=!errorlevel!' + #13#10 +
')' + #13#10 +
'' + #13#10 +
'echo.' + #13#10 +
'' + #13#10 +
'if !PNPRESULT! equ 0 (' + #13#10 +
' echo Driver added to store successfully' + #13#10 +
') else if !PNPRESULT! equ 259 (' + #13#10 +
' echo Driver already in store' + #13#10 +
') else (' + #13#10 +
' echo pnputil returned: !PNPRESULT!' + #13#10 +
' echo Trying PrintUI method...' + #13#10 +
' echo.' + #13#10 +
' rundll32 printui.dll,PrintUIEntry /ia /m "%DRIVER_NAME%" /f "%INF_FILE%"' + #13#10 +
')' + #13#10 +
'' + #13#10 +
'echo.' + #13#10 +
'echo ========================================' + #13#10 +
'echo.' + #13#10 +
'echo Installation complete!' + #13#10 +
'echo.' + #13#10 +
'echo Driver: %DRIVER_NAME%' + #13#10 +
'echo.' + #13#10 +
'echo Next Steps:' + #13#10 +
'echo 1. Connect your Xerox printer via USB' + #13#10 +
'echo 2. Windows will automatically detect it' + #13#10 +
'echo 3. Printer will appear in Devices and Printers' + #13#10 +
'echo.' + #13#10 +
'echo ========================================' + #13#10 +
'echo.' + #13#10 +
'pause';
// Save and execute batch script
TempScriptPath := ExpandConstant('{tmp}\install_xerox_driver.bat');
SaveStringToFile(TempScriptPath, BatchScript, False);
Exec('cmd.exe',
'/c "' + TempScriptPath + '"',
'', SW_SHOW, ewWaitUntilTerminated, ResultCode);
DeleteFile(TempScriptPath);
end;
end;
// Skip directory selection page
function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := False;
if PageID = wpSelectDir then
Result := True;
end;

View File

@@ -0,0 +1 @@
5.1055.3.1

View File

@@ -0,0 +1 @@

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,51 @@
[OEMFiles]
OEMConfigFile1=x3up08M.dll
OEMDriverFile1=x3rpcl08M.dll
;
;
;
[ModelNames]
; Important: This list must exactly match the model names in the INF file
xModelName1="Xerox Global Print Driver PCL6"
xModelName2="Xerox GPD PCL6 V5.1055.3.0"
;
;
;
[ModelIds]
; Note: This list is independent of the names in the INF
xModelId1=Xerox Global Print Driver
xModelVersion1=1
xModelId2=Xerox GPD
xModelVersion2=1
;
;
;
[Defs]
xModelId=0
xProdUID=UNIV
xInstallCompleted=No
xColor=Monochrome
xPDL=PCLXL
xInbox=No
xFreeCP=No
xPrintProc=Yes
xResDll=X
xManufacturer="Xerox"

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

View File

@@ -0,0 +1,179 @@
@echo off
REM Test script for Xerox driver installation
REM Run as Administrator
REM Tests the same commands used by XeroxOfflineInstaller.exe
setlocal enabledelayedexpansion
echo.
echo ============================================
echo Xerox Driver Installation Test Script
echo Run as Administrator
echo ============================================
echo.
REM Set path to your driver folder (adjust as needed)
set "DRIVER_DIR=C:\temp\xerox_drivers"
set "CAT_FILE=%DRIVER_DIR%\x3UNIVx.cat"
set "INF_FILE=%DRIVER_DIR%\x3UNIVX.inf"
set "DRIVER_NAME=Xerox Global Print Driver PCL6"
echo Driver directory: %DRIVER_DIR%
echo.
REM ============================================
echo TEST 1: Check if files exist
echo ============================================
echo.
if exist "%CAT_FILE%" (
echo [OK] Catalog file: %CAT_FILE%
) else (
echo [FAIL] Catalog file NOT found: %CAT_FILE%
echo.
echo Please copy Xerox driver files to %DRIVER_DIR%
echo Required files: x3UNIVx.cat, x3UNIVX.inf, and all driver files
echo.
pause
exit /b 1
)
if exist "%INF_FILE%" (
echo [OK] INF file: %INF_FILE%
) else (
echo [FAIL] INF file NOT found: %INF_FILE%
pause
exit /b 1
)
echo.
REM ============================================
echo TEST 2: Add catalog to TrustedPublisher store
echo ============================================
echo.
echo Running: certutil -addstore TrustedPublisher "%CAT_FILE%"
echo.
certutil -addstore TrustedPublisher "%CAT_FILE%"
set CERT_RESULT=!errorlevel!
echo.
echo Exit code: %CERT_RESULT%
if %CERT_RESULT% equ 0 (
echo [OK] Certificate catalog added successfully
) else (
echo [INFO] certutil returned %CERT_RESULT% - may already be installed
)
echo.
REM ============================================
echo TEST 2b: Disable driver signature enforcement
echo ============================================
echo.
REM Method 1: Set policy to Ignore (0) via registry
echo Setting driver signing policy to Ignore...
reg add "HKLM\SOFTWARE\Microsoft\Driver Signing" /v Policy /t REG_BINARY /d 00 /f
echo Exit code: %errorlevel%
REM Method 2: Disable via WMIC (Windows 7)
echo.
echo Disabling driver signing via Group Policy registry...
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Driver Signing" /v BehaviorOnFailedVerify /t REG_DWORD /d 0 /f 2>nul
echo Exit code: %errorlevel%
REM Method 3: Set Code Integrity policy
echo.
echo Setting Code Integrity policy...
reg add "HKLM\SYSTEM\CurrentControlSet\Control\CI" /v UMCIDisabled /t REG_DWORD /d 1 /f 2>nul
echo.
REM ============================================
echo TEST 3: Install driver with pnputil
echo ============================================
echo.
REM Try Windows 7 syntax first (works on all versions)
echo Running: pnputil -i -a "%INF_FILE%"
echo (-i = install, -a = add driver package)
echo.
pnputil -i -a "%INF_FILE%"
set PNPRESULT=!errorlevel!
echo.
echo Exit code: %PNPRESULT%
REM If Windows 7 syntax fails, try Windows 10+ syntax
if !PNPRESULT! neq 0 (
echo.
echo Trying Windows 10+ syntax...
echo Running: pnputil /add-driver "%INF_FILE%" /install
echo.
pnputil /add-driver "%INF_FILE%" /install
set PNPRESULT=!errorlevel!
echo.
echo Exit code: !PNPRESULT!
)
echo.
if !PNPRESULT! equ 0 (
echo [OK] Driver added to store successfully
) else if !PNPRESULT! equ 259 (
echo [OK] Driver already in store
) else (
echo [WARN] pnputil returned !PNPRESULT! - check output above for details
)
echo.
REM ============================================
echo TEST 4: Verify driver installation
echo ============================================
echo.
echo Checking if driver is registered with print spooler...
echo.
REM Try PowerShell method (Windows 10+)
powershell -NoProfile -Command "Get-PrinterDriver -Name '%DRIVER_NAME%' -ErrorAction SilentlyContinue | Select-Object Name, PrinterEnvironment" 2>nul
if %errorlevel% equ 0 (
echo.
echo [OK] Driver found via PowerShell
) else (
echo PowerShell check failed - trying wmic...
wmic printer driver where "name like '%%Xerox%%'" get name 2>nul
)
echo.
REM ============================================
echo TEST 5: Check TrustedPublisher store
echo ============================================
echo.
echo Certificates/CTLs containing "Xerox" in TrustedPublisher:
certutil -store TrustedPublisher | findstr /i "xerox"
if %errorlevel% neq 0 (
echo (No Xerox entries found - checking for Microsoft HW Publisher...)
certutil -store TrustedPublisher | findstr /i "Microsoft Windows Hardware"
)
echo.
REM ============================================
echo SUMMARY
echo ============================================
echo.
echo Results:
echo - Certificate install (TEST 2): Exit code %CERT_RESULT%
echo - Driver install (TEST 3): Exit code %PNPRESULT%
echo.
echo If both exit codes are 0 or 1, installation succeeded!
echo.
echo Next: Connect your Xerox printer via USB.
echo Windows should automatically detect and configure it.
echo.
echo ============================================
echo.
pause