AI-assisted issue. Filed by agent driven by @soloturn via GDD.
Context
Follow-up to #5351 (the Homebrew tap for macOS). Windows users have no equivalent winget install path today - only the launcher, a direct-download zip, or now Homebrew on macOS.
Problem / Current State
winget doesn't work like Homebrew taps or the AUR. There's exactly one official repo, microsoft/winget-pkgs - no lightweight self-hosted equivalent of a Homebrew tap. Getting a package listed means submitting a manifest PR there, which goes through mandatory automated checks (schema validation, installer hash/URL checks, a live Defender antivirus scan, silent-install testing in a sandboxed VM) and manual moderator review. Microsoft's own docs state they can refuse a submission for any reason. winget does support third-party "sources," but those require hosting a REST-API-compliant server per Microsoft's spec, not just a git repo - not a realistic AUR/tap substitute.
There's also a packaging-fit problem: winget manifests are static YAML with no equivalent of a Homebrew cask's preflight script. The current Windows build (TerasologyOmega.zip: jars, natives, a .bat launcher, no installer) can't be wrapped into something more "installed" the way the macOS cask's preflight step builds a real .app bundle at install time. winget does support zip-based "portable" installers (manifest schema 1.4+, NestedInstallerType/NestedInstallerFiles) as the closer fit, or a real installer could be built separately (WiX/Inno Setup) - both are real engineering work beyond writing a manifest.
Acceptance Criteria
Technical Notes
- No org registration is required to submit to
winget-pkgs - individuals and projects submit under their own or a project name today. "Is this possible for an org like Terasology Foundation" is really "can we pass the review bar," not "do we need special account status."
- The Omega CI build is rolling but not anonymous:
.../lastSuccessfulBuild/buildNumber returns a real, stable build number for whatever's newest (e.g. 25 as of this writing) - each build's own artifact directory is a permanent, numbered URL, e.g. build 24's, with a sha256sums.txt giving a real checksum for that build's TerasologyOmega.zip. So unlike Homebrew's terasology-latest-bin (sha256 :no_check, no fixed version), a winget manifest tracking the rolling build could still pin a genuine PackageVersion (the build number) and a genuine InstallerSha256 each time - just needs re-submission on every build, which is what the automation bullet above is for.
- Reference:
terasology cask for what the existing zip contains and how it's currently unpacked/wrapped on macOS.
Related
Context
Follow-up to #5351 (the Homebrew tap for macOS). Windows users have no equivalent
winget installpath today - only the launcher, a direct-download zip, or now Homebrew on macOS.Problem / Current State
winget doesn't work like Homebrew taps or the AUR. There's exactly one official repo, microsoft/winget-pkgs - no lightweight self-hosted equivalent of a Homebrew tap. Getting a package listed means submitting a manifest PR there, which goes through mandatory automated checks (schema validation, installer hash/URL checks, a live Defender antivirus scan, silent-install testing in a sandboxed VM) and manual moderator review. Microsoft's own docs state they can refuse a submission for any reason. winget does support third-party "sources," but those require hosting a REST-API-compliant server per Microsoft's spec, not just a git repo - not a realistic AUR/tap substitute.
There's also a packaging-fit problem: winget manifests are static YAML with no equivalent of a Homebrew cask's
preflightscript. The current Windows build (TerasologyOmega.zip: jars, natives, a.batlauncher, no installer) can't be wrapped into something more "installed" the way the macOS cask'spreflightstep builds a real.appbundle at install time. winget does support zip-based "portable" installers (manifest schema 1.4+,NestedInstallerType/NestedInstallerFiles) as the closer fit, or a real installer could be built separately (WiX/Inno Setup) - both are real engineering work beyond writing a manifest.Acceptance Criteria
TerasologyOmega.zip(fastest, least install-experience polish), a real installer (WiX/Inno Setup wrapping the same zip, closer to a normal Windows install), or deferPackageIdentifierlikelyMovingBlocks.TerasologyorTerasologyFoundation.Terasology) passeswinget validateand the Windows Sandbox test locallymicrosoft/winget-pkgsand mergedwinget install <id>verified working end to endterasology-latest-bin(which has to skip verification withsha256 :no_check), the Omega build has a real, stable version identifier and a real checksum to pin each time (see Technical Notes) - CI could auto-file a new manifest PR per Omega build numberTechnical Notes
winget-pkgs- individuals and projects submit under their own or a project name today. "Is this possible for an org like Terasology Foundation" is really "can we pass the review bar," not "do we need special account status.".../lastSuccessfulBuild/buildNumberreturns a real, stable build number for whatever's newest (e.g.25as of this writing) - each build's own artifact directory is a permanent, numbered URL, e.g. build 24's, with asha256sums.txtgiving a real checksum for that build'sTerasologyOmega.zip. So unlike Homebrew'sterasology-latest-bin(sha256 :no_check, no fixed version), a winget manifest tracking the rolling build could still pin a genuinePackageVersion(the build number) and a genuineInstallerSha256each time - just needs re-submission on every build, which is what the automation bullet above is for.terasologycask for what the existing zip contains and how it's currently unpacked/wrapped on macOS.Related