The setup tools are .NET 8 (bc8f70b)
DBSetup, DBSetupQuick, DBUpdater, DataDirectorySynchronizer and the Shared library move from .NET Framework 4.8.1 to SDK-style net8.0-windows. The COM API is consumed through a checked-in tlbimp wrapper (source/Tools/Interop/), so the tools build with plain dotnet build on any machine — no registered typelib needed. Dialog metrics are pinned to the fonts the forms were designed against, so nothing shifts visually, and the silent command-line contract the installer and the VM test runner depend on is unchanged. The VB6 migration tools are replaced by a supported Import Tool (b19ccba)
The source/Migration folder held five wizards, none of which could be built — their shared VB6 sources were never in the repository — and three of which migrated from products dead for two decades (ArgoSoft, IMail, Mercury). The two with lasting value return as one .NET 8 tool, shipped under Addons:
- Accounts from a text file — the same comma-separated format, now with per-line validation and a created/updated/failed summary instead of a crash on the first malformed line.
- Messages from mbox files — one IMAP folder per mbox file, streaming files of any size through the supported COM API (Utilities.ImportMessageFromFileToIMAPFolder) instead of the old tool's raw MySQL INSERTs against a decades-old schema. Every defect documented in the VB6 version is fixed: the silently dropped last message, CRLF mailboxes parsing as one giant message, mboxrd >From quoting, and SMTP dot-stuffing corrupting stored messages. Verified end to end against a live server with both Unix (LF) and Windows (CRLF) mailboxes.
Installer hardening (3f9b2ca, 2f388fd)
The .NET 8 Desktop Runtime is now a server-component prerequisite, not just a Control Panel one: it is installed — with its exit code actually checked — before the database tools run at post-install. The obsolete .NET Framework 4.5 gate is gone, and the supported-OS floor is now Windows 10 1607, the .NET 8 runtime's own minimum. The database tools ship as dotnet publish folders staged by the new build/build-tools.ps1.
CI builds every C# project (3f9b2ca)
A new tools job builds the tools solution with warnings-as-errors against the checked-in interop wrapper. Previously only the Control Panel was built, which let a dependency update break the test and tool projects invisibly — exactly what happened with the NUnit 4 bump, caught only by local validation.
The test suite runs on NUnit 4 (7a9e402)
NUnit 4.6.1, adapter 6.2, console runner 3.22 via Dependabot's grouped update, with the 2,200+ classic assert call sites kept compiling through NUnit 4.6's C# 14 extension members. The suite's local-address selection now probes for an address the server actually answers on instead of trusting interface enumeration order, which broke under a connected VPN.
Verified at 6.2.12
- Server, tools, Control Panel and the regression harness all build clean; the tools and Control Panel build with -warnaserror.
- Full regression suite against the rebuilt 6.2.12 service: 1026 of 1026 executed and passed, zero failures, with live SpamAssassin and ClamAV.
- Import Tool verified end to end against a live server; automated UI walkthrough clean.
- DBUpdater /SilentIfOk and DBSetupQuick /silent exit 0 from the merged Bin layout the installer creates.
- Binaries report 6.2.12 / 6.2.12.0; the COM API reports 6.2.12-B14.
- The changes were shaken down by an adversarial multi-agent review before merge: 12 findings raised, 9 confirmed, all fixed.