Hi all
I have written an experimental installer for extensions. It's in SVN, maintenance/installExtension.php; It would be great if you would try it, and give some feedback. I hope this will make life much easier for users.
Basically, it fetches the files, places them in the extension dir, and optionally patches LocalSettings.php (if the user chooses that option and the extension provides an install.settings patch file). The CategoryTree extension has such a file, if you want to try the patching feature.
Extensions can be fetched from local tgz files or directories, from remote tgz files, or from a SVN path. The installer looks up extensions in "repositories", which are directories containing tgz files or subdirectories.
Per default, http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions is used as the repository (in svn mode), unless MediaWiki was checked out via SVN - in that case, the SVN path given in .svn/entries is used.
For testing, I have set up a tgz based repository at http://tools.wikimedia.de/~daniel/repository/extensions/. It has a tgz for each subdirectory in the extensions module. Note that extensions that do not have their own subdirectory are not supported.
Caveats: Custom install scripts (for example to patch the database) are not yet supported. This needs some more thought I guess. The ability to uninstall or deactivate extensions could be added - not sure how helpful that would be. The present script will also not work on Windows, because it relies on things like tar.
The installer is currently intended for use from the command line. A web interface would raise security concerns - perhaps it could be made part of the original installation procedure, though.
I wrote the installer in a manner that does not require changes to extensions or the way they are loaded. On the long run, it would probably be nicer to be able to hook up extensions without messing with LocalSetttings.php - although I'm not sure how to do that in a clean and at the same time flexible way. We should talk about how to do that, too, in time, but please keep that separate from talk about the present installer.
Any input would be appreciated -- Daniel