Joomla installers keep running after a failed sub-step, so a postflight
"installed successfully" / next-steps message can lie. Gate the success
path in both installer scripts.
Package (source/script.php): postflight now verifies every child extension
declared in the package manifest actually registered in #__extensions
(element + type, plus folder for plugins). If any are missing it enqueues
an error listing them and returns before the licence notice. Download-key
restore and plugin-enable housekeeping still run unconditionally. Check
fails open on any error.
Component (source/packages/com_mokoog/script.php): install() now parses the
installed SQL (JPATH_ADMINISTRATOR/components/com_mokoog/sql/install.mysql.sql)
for CREATE TABLE declarations and verifies each exists (prefix-substituted,
case-insensitive) before echoing the success message. Fails open if the SQL
is unreadable.
Claude-Session: https://claude.ai/code/session_01MrxXW9iyuDda5yDZrjZMbF