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 both Rust core and C# UI
.\scripts\build.ps1
This compiles:
native/target/debug/uai-tray.exeui/UniversalAnalogInputUI/bin/Debug/# 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>/
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
For end users:
UniversalAnalogInput-Setup-v1.0.0.exe from the latest releaseInstaller Features:
For end users:
C:\Program Files\UniversalAnalogInput\)UniversalAnalogInput.exeRequirements:
UniversalAnalogInput.exe at the root (Rust tray app)ui/ subdirectoryUniversalAnalogInput.exe): Runs as system tray application
ui/UniversalAnalogInputUI.exe): Launches on-demand
Installation Directory (e.g., C:\Program Files\UniversalAnalogInput\):
./ui/UniversalAnalogInputUI.exeUser Data Directory (%APPDATA%\UniversalAnalogInput\):
C:\Users\<Username>\AppData\Roaming\UniversalAnalogInput\profiles\*.jsonApplication Data Directory (%LOCALAPPDATA%\UniversalAnalogInput\):
C:\Users\<Username>\AppData\Local\UniversalAnalogInput\crash.logC:\Users\<Username>\AppData\Local\UniversalAnalogInput\settings.txtC:\Users\<Username>\AppData\Local\UniversalAnalogInput\theme.txtIPC Communication:
\\.\pipe\universal_analog_inputDevelopment mode (debug builds):
cargo run --bin uai-tray<project>/ui/UniversalAnalogInputUI/bin/Debug/...Production mode (release builds):
./ui/UniversalAnalogInputUI.exenative/Cargo.tomlui/UniversalAnalogInputUI/UniversalAnalogInputUI.csproj.\scripts\package.ps1 -Clean -SelfContained.\scripts\create-release.ps1 -Version "x.y.z"+crt-static)vcruntime140.dll or Visual C++ Redistributablesen-US retained to minimize package size.ico files requiredThe application uses standard Windows directories for user data:
Roaming Data (%APPDATA%\UniversalAnalogInput\):
C:\Users\<Username>\AppData\Roaming\UniversalAnalogInput\profiles/*.json - User-created game profiles and mappingsLocal Data (%LOCALAPPDATA%\UniversalAnalogInput\):
C:\Users\<Username>\AppData\Local\UniversalAnalogInput\crash.log - Application crash logs and error trackingsettings.txt - Application settingstheme.txt - UI theme preference (Light/Dark/System)Installation Directory:
C:\Program Files\UniversalAnalogInput\)Version numbers are managed in two locations:
native/Cargo.toml
[package]
version = "1.0.0"
ui/UniversalAnalogInputUI/UniversalAnalogInputUI.csproj
<PropertyGroup>
<Version>1.0.0</Version>
</PropertyGroup>
The UI displays its version on the Settings page via reflection.
THIRD_PARTY_LICENSES.md“ViGEm driver not found”
“Wooting SDK not detected”
“UI doesn’t launch”
ui/ folder exists alongside executableui/UniversalAnalogInputUI.exe is present%LOCALAPPDATA%\UniversalAnalogInput\crash.log“IPC connection failed”
%LOCALAPPDATA%\UniversalAnalogInput\crash.log“Profiles not saving”
%APPDATA%\UniversalAnalogInput\profiles\“Settings/Theme not persisting”
%LOCALAPPDATA%\UniversalAnalogInput\settings.txt and theme.txt are not read-onlyAll legal documents must be verified and included in the installation before release:
Official Release Status:
deploy/.env.env file (see section below)Storage Locations:
deploy/.env - Production DSN configuration (ignored in .gitignore){app}\.env by Inno Setup during installation%LOCALAPPDATA%\UniversalAnalogInput\.env at runtimeUser Control: Users can disable Sentry by:
%LOCALAPPDATA%\UniversalAnalogInput\.env and commenting out DSN lines.env file entirelyThe Inno Setup installer (installer/setup.iss) includes:
TERMS_OF_SERVICE.md displayed before installationPRIVACY_POLICY.md included in installationTHIRD_PARTY_LICENSES.md included in installationdeploy/.env copied as .env with production DSN keysnative/Cargo.tomlui/UniversalAnalogInputUI/UniversalAnalogInputUI.csprojdeploy/.env contains correct production DSN keys.\scripts\build.ps1 -Release.enviscc installer\setup.iss.env with DSN presentUniversalAnalogInput-Setup-v{VERSION}.exe to GitHubLast Updated: 2026-01-14