UniversalAnalogInput

Deployment Guide

Package Structure

The release package follows this structure for optimal organization:

UniversalAnalogInput/
├── UniversalAnalogInput.exe          # Main tray application (Rust core, entry point)
├── README.txt                        # User documentation
├── LICENSE.txt                       # MIT License
│
├── ui/                               # WinUI 3 UI application and dependencies
│   ├── UniversalAnalogInputUI.exe    # Configuration interface
│   ├── UniversalAnalogInputUI.dll
│   ├── *.dll                         # WindowsAppSDK and WinUI dependencies
│   ├── resources.pri                 # WinUI resources
│   └── Assets/                       # UI assets
│       └── shadow.png
│

Build Process

1. Quick Build (Development)

# Build both Rust core and C# UI
.\scripts\build.ps1

This compiles:

2. Package for Distribution

# Create self-contained package with .NET runtime included
.\scripts\package.ps1 -SelfContained

# Or framework-dependent (requires .NET 9 on user machine)
.\scripts\package.ps1

Output: artifacts/UniversalAnalogInput-<timestamp>/

3. Create Installer

Inno Setup Installer

The installer automatically:

Latest release: v1.0.1

Manual ZIP Distribution

# Create release ZIP from packaged artifacts
.\scripts\create-release.ps1 -Version "1.0.0"

Output: UniversalAnalogInput-v1.0.0.zip

Installation Methods

For end users:

  1. Download UniversalAnalogInput-Setup-v1.0.0.exe from the latest release
  2. Run the installer
  3. Follow the installation wizard
  4. Dependencies (ViGEm, Wooting SDK) are installed automatically
  5. Launch from Start Menu or system tray

Installer Features:

Method 2: Manual ZIP Installation (Alternative)

For end users:

  1. Ensure prerequisites are installed:
    • ViGEm Bus Driver: https://github.com/nefarius/ViGEmBus/releases
    • Wooting Analog SDK: https://github.com/WootingKb/wooting-analog-sdk
  2. Extract ZIP to desired location (e.g., C:\Program Files\UniversalAnalogInput\)
  3. Run UniversalAnalogInput.exe
  4. System tray icon appears
  5. Configuration UI launches automatically on first run

Requirements:

Architecture Benefits

Clean Structure

IPC Architecture

Runtime Behavior

Installation Directory (e.g., C:\Program Files\UniversalAnalogInput\):

User Data Directory (%APPDATA%\UniversalAnalogInput\):

Application Data Directory (%LOCALAPPDATA%\UniversalAnalogInput\):

IPC Communication:

Development vs Production

Development mode (debug builds):

Production mode (release builds):

Distribution Checklist

For ZIP Distribution (Alternative)

For Installer Distribution

Technical Notes

Static Linking

Self-Contained Mode

Framework-Dependent Mode (Alternative)

Language Folders

Icon Embedding

Data Storage Locations

The application uses standard Windows directories for user data:

Roaming Data (%APPDATA%\UniversalAnalogInput\):

Local Data (%LOCALAPPDATA%\UniversalAnalogInput\):

Installation Directory:

Version Management

Version numbers are managed in two locations:

  1. Rust Core: native/Cargo.toml
    [package]
    version = "1.0.0"
    
  2. C# UI: ui/UniversalAnalogInputUI/UniversalAnalogInputUI.csproj
    <PropertyGroup>
      <Version>1.0.0</Version>
    </PropertyGroup>
    

The UI displays its version on the Settings page via reflection.

Distribution Platforms

GitHub Releases (Primary)

Security Considerations

Dependencies

Troubleshooting

Common Issues

“ViGEm driver not found”

“Wooting SDK not detected”

“UI doesn’t launch”

“IPC connection failed”

“Profiles not saving”

“Settings/Theme not persisting”



All legal documents must be verified and included in the installation before release:

Sentry Configuration

Official Release Status:

Storage Locations:

User Control: Users can disable Sentry by:

  1. Editing %LOCALAPPDATA%\UniversalAnalogInput\.env and commenting out DSN lines
  2. Deleting the .env file entirely

Data Processing Agreement (DPA)

The Inno Setup installer (installer/setup.iss) includes:


Release Checklist

Before Building Installer

Building & Testing

Release Distribution


Last Updated: 2026-01-14