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 28541cd3ed
1175 changed files with 127441 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;

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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"

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