2

I am developing a Joomla! package that has a component and various plugins, libraries, modules, and a template. I have a package-level install script and a component-level install script (both named script.mycomponent.php). I haven't tested my package-level installation yet, but the component-level script file runs fine when I install just the component.

I notice though that the script.mycomponent.php file is not moved to my component's administrator/com_mycomponent directory after installation. I had it in the back of my head from somewhere that it is loaded into the database, but I don't see any evidence of that happening (OT: does Joomla! load any executable PHP script in the database?).

Do I need to package two copies of the install script in my build process - one in the root of the component archive and one in the administrator folder? Shouldn't this happen automatically by the Joomla! installer?

I have the same issue (and questions) about my component's manifest file (mycomponent.xml). Is it loaded in the DB? Do I need to manually put a copy of it in my administrator/com_mycomponent directory in my build process? Where is the package installer file and manifest file stored after installation?

2

The short answer is, no, you do not have to copy install scripts anywhere when you install a package or a component (or any Joomla extension). It is done automatically.

In a bit more details: for Joomla extensions installations, different Adapter classes are responsible. It starts with InstallerAdapter, then it is extended by PackageAdapter, ComponentAdapater, PluginAdapter and so on... for all extension type.

The package Adapter copies the manifest XML files into {joomla_root}/administrator/manifests folder and at the same time also copies (if it finds script declaration in the manifest) the package installer script file to {joomla_root}/administrator/manifests/your_package_name folder.

Same thing happens with your component (even if it is in a package). The Component Adapter copies the installer script file to the administrator/'your_extension_root' folder (into your administrator/component root simply).

Now, from my experience, the most important thing to keep attention on is checking your manifest XML that the correct name is given for your install script files (if it was declared at all in the manifest). Few times I simply forgot to declare the script file in the manifest XML and I was wondering why the script was not running and why I did not see my install script files in my extension root folder). If you do not find the Install script files copied in the above paths after installation, then there is a mistake you made most probably in your manifest XML file or in the install script file name.

Naming could be important: staying with a FOF example (since I know that it is your case), if your package name is 'Akeeba' for example then your script file name could be: script.akeeba.php and at the same time your com_akeeba component script file name could be: script.com_akeeba.php. The name also could be just script.php everywhere however and it still would work, but it is better to use distinctive names if we are developing a package. Regarding automatic copying of the Installation scripts, there is no any difference between FOF based extensions and normal Joomla extensions.

2

I don't believe there are any scripts or manifest files stored in the data base.

The manifest file for your component will/should be stored in the administrator/com_mycomponent directory as part of the install process and does not need any extra effort on your part. Package manifest files will go into /administrator/manifests/packages/mypackage.

If you want to stored your install script with your component you could use these lines in your manifest xml file. You don't need to have two copies, but I don't believe the install scripts are stored automatically with the component.

<scriptfile>install/install.script.php</scriptfile>
<administration>
    <files>
        <folder>install</folder>
    </files>
</administration>

Terry

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.