Cross-platform GUI installer for Windows, macOS, and Linux.
The GUI presents the canonical installation stages:
- Core — install the US House/JWSTF runtime.
- Tools — install software-house tools and conveniences.
- Configure — apply selected configuration and integrations.
- Verify — inspect the resulting installation and produce a report.
The broader lifecycle is install → update → verify → remove, while the evidence lifecycle remains 1 Origin → 2 Custody → 3 Production → 4 Release.
The installer should expose these options before execution:
- Install / repair
- Update
- Verify
- Remove installed artifacts
/userprofessional/user-scoped profile/deckenterprise/machine-wide profile- Linux / Windows / macOS target
- Distribution-managed or manually managed Tomcat on Linux
- Apache integration where available
- Java 21 prerequisite handling
- JWSTF application, configuration, state, and log paths
- Start/stop service after operation
- Dry-run / review changes
- Export an installation report
The GUI must never silently delete repository source. Removal concerns installed/generated artifacts and uses the platform's normal uninstall mechanism where available.
The UI provides Microsoft and Apple integration choices. Actual privileged changes are delegated to platform-specific launchers under cmd/us-house/windows, cmd/us-house/macos, and the corresponding Linux implementation. This keeps the JavaFX GUI platform-neutral.
The installer reads config/preferred-install-paths.json. /user and /deck are logical deployment profiles; they resolve to native OS locations rather than replacing OS conventions.
For Linux, distribution-managed Tomcat retains its package-managed /etc/tomcat10 and /var/lib/tomcat10 layout. A deliberate manual Tomcat installation may use /opt/tomcat; these management models must not be mixed.
The repository should build the GUI as a Java application/JAR and use jpackage on the target OS for native installation artifacts:
- Windows:
.exeand/or.msi - macOS:
.dmgand/or.pkg - Linux:
.deband/or.rpm, plus an application image where useful
Native installers should be generated on their corresponding operating system, signed where appropriate, checksummed, and published as release artifacts. The repository should not contain fabricated platform binaries.
The existing source is the GUI implementation layer; a JavaFX Maven or Gradle packaging project should be added/used by the release build before producing native installers.