Skip to content

Xanthey/BL-Build_Utility

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧪 Belmont Labs Build Utility

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.

GUI GUI GUI
---

What It Does

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.


Managed Applications

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

Project Structure

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

Requirements

  • Windows (Windows Forms application)
  • .NET 8 SDKDownload
  • Git — required only if building SyncDAT from source

Building

dotnet build BelmontLabsBuildUtility.csproj -c Release

Or 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.


Usage

Run BelmontLabsBuildUtility.exe. The wizard will:

  1. Welcome screen — overview and version info
  2. Project selection — choose which Belmont Labs apps to install
  3. Configuration screens — one per selected app (install paths, build options, etc.)
  4. Review — summary of all pending actions
  5. Installation — live progress log as each app is installed/built
  6. Completion — shortcuts created, next steps shown

To re-configure an already-installed app, launch the utility again and use the Modify flow.


Developer Notes

  • ProjectSelectionScreen.cs is hardcoded — adding a new installable app requires updating this file manually in addition to apps-manifest.json. The manifest alone is not read at runtime for selection.
  • Config screens follow a consistent pattern — new apps get a [AppName]ConfigScreen.cs modeled on WhoDATAddonConfigScreen.cs.
  • Emoji in source files — C# files use actual UTF-8 characters; avoid escape sequences to prevent encoding corruption.
  • TryGetValue not GetValueOrDefault — used throughout for Dictionary<string, ProjectConfiguration> to avoid build failures.

Part of the Belmont Labs Suite

"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.

About

The foundry. The forge. The place where all the other experiments are hammered into existence. Handle with care (sometimes it bites...)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors