A wizard-driven installer and build tool for the Belmont Labs experiment suite.
The Build Utility guides users through installing, building, and configuring every Belmont Labs application — from WoW addons dropped into the right folder to full .NET desktop apps compiled from source. One wizard, all the experiments.
![]() |
![]() |
![]() |
The Build Utility is a Windows Forms wizard application (.NET 8) that handles:
- Compilation from source — clones and builds .NET projects (e.g. SyncDAT) with configurable build modes (Self-Contained, Framework-Dependent, ReadyToRun)
- Direct file installation — copies WoW addon files (Lua + TOC) to the correct AddOns directory
- Web downloads — fetches pre-built releases when source builds aren't needed
- Shortcut creation — desktop and Start Menu shortcuts with icons
- Modify flows — re-run configuration for already-installed apps without a full reinstall
Each application gets its own configuration screen where users set paths, options, and preferences before installation begins.
| App | Type | Description |
|---|---|---|
| WhoDAT AddOn | WoW Addon | Tracks character data in WotLK 3.3.5 |
| WhoDASH | WoW Addon / Web Dashboard | Displays and manages WhoDAT character data |
| SyncDAT | .NET Desktop App | Bi-directional WoW SavedVariables sync bridge (upload WhoDAT.lua, download TheGrudgeDB.lua) |
| TheGrudge AddOn | WoW Addon | Reads nemesis data from WhoDASH and fires in-game alerts |
| WhoCHAT AddOn | WoW Addon | Replaces the default WoW chat UI with a Microsoft Teams-style layout |
BelmontLabsBuildUtility.csproj — Main project file (.NET 8 / WinForms)
apps-manifest.json — Manifest of all installable applications
apps/ — Embedded app source files (addons, configs, etc.)
WhoDATAddOn/
WhoDASH/
TheGrudge/
WhoCHAT/
WhoDATUploader/ — Legacy; superseded by SyncDAT
WizardController.cs — Wizard state machine and navigation logic
WizardMainForm.cs — Top-level form shell
ProjectSelectionScreen.cs — App selection (hardcoded; does not read manifest at runtime)
AppManifest.cs — Manifest deserialization model
*ConfigScreen.cs — Per-app configuration wizard screens
InstallationService.cs — Core installation logic
BuildService.cs — Source compilation logic
DownloadService.cs — Web download logic
ResourceExtractor.cs — Extracts embedded resources at runtime
- Windows (Windows Forms application)
- .NET 8 SDK — Download
- Git — required only if building SyncDAT from source
dotnet build BelmontLabsBuildUtility.csproj -c ReleaseOr use the included build.bat.
The apps/ folder is embedded as resources at compile time — all managed app files travel inside the single output executable.
Run BelmontLabsBuildUtility.exe. The wizard will:
- Welcome screen — overview and version info
- Project selection — choose which Belmont Labs apps to install
- Configuration screens — one per selected app (install paths, build options, etc.)
- Review — summary of all pending actions
- Installation — live progress log as each app is installed/built
- Completion — shortcuts created, next steps shown
To re-configure an already-installed app, launch the utility again and use the Modify flow.
ProjectSelectionScreen.csis hardcoded — adding a new installable app requires updating this file manually in addition toapps-manifest.json. The manifest alone is not read at runtime for selection.- Config screens follow a consistent pattern — new apps get a
[AppName]ConfigScreen.csmodeled onWhoDATAddonConfigScreen.cs. - Emoji in source files — C# files use actual UTF-8 characters; avoid escape sequences to prevent encoding corruption.
TryGetValuenotGetValueOrDefault— used throughout forDictionary<string, ProjectConfiguration>to avoid build failures.
"The experiments are progressing. Mostly as intended."
| Project | Repo |
|---|---|
| SyncDAT | Xanthey/SyncDAT |
| BL Build Utility | Xanthey/BL-Build_Utility |
Belmont Labs — where science happens, sometimes on purpose.


