Files
MokoSuiteCross/source
jmiller 60a9d81e22
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 30s
fix(installer): verify install success before showing success
Gate the success/license path in both installer scripts so a partial
install can no longer report success.

- Package script (pkg_mokosuitecross): add missingChildExtensions(),
  which reads the package manifest via getParent()->getManifest() and
  verifies each declared <file> child is registered in #__extensions
  (matching element+type, plus folder=group for plugins). If any are
  missing, enqueue an error and return before warnMissingLicenseKey().
  Housekeeping (download-key restore, core-plugin enable, PerfectPublisher
  migration detection) still runs unconditionally.
- Component script (com_mokosuitecross): postflight was empty. Add
  missingTables(), which parses the installed sql/install.mysql.sql for
  every CREATE TABLE and verifies each exists (prefix-substituted,
  case-insensitive). On any missing tables, enqueue an error and return
  before the success message; otherwise show install-success/license notice.

Both checks fail open (try/catch returning []/true) so a glitch never turns
a good install into a false failure. Extension names are htmlspecialchars'd.

Claude-Session: https://claude.ai/code/session_01MrxXW9iyuDda5yDZrjZMbF
2026-07-05 22:55:42 -05:00
..