1.5.3

 - Added an Extensions.Install module and an initial test suite.
   [stefan]

 - Added optional reinstall argument to install() and uninstall() method
   [tiran]

 - Enabled uninstall of deleted products by making the parser.py handle
   missing product directories slightly more gracefully.
   [tesdal]

 - Fixed multiple register bug

   QI doesn't assign an object to a product when it is already registered
   for another product. This fixes bugs like the removal of the archetype
   tool when a product was removed which itself had had installed Archetypes.
   [tiran]

 - Added afterInstall / beforeUninstall hooks:

   out = afterInstall(portal, reinstall=reinstall, qi_product)
   out, cascade = beforeUninstall(portal, reinstall, qi_product, cascade)
   [tiran]

1.4

  - reinstall button

    does the same as uninstall/install except that it does _not_ delete
    objects that have been created on portal_level (portal_objects)

  - product version info

    added getProductVersion to the API
    shows the version of the products
    for installed products it also shows the version of the prod at install time

  - By Andy McKay

    Remove the except: pass from trying to make a External method, if there is an error in the import log the error to ZLOG. Unfortunately there is a string error we have to try and catch as well. That string error occurs when the module cant be found, so
 we should ignore that.

  - content type registry support 

    QuickInstaller now also tracks entries in the content_type_registry.

  - if products have been removed from disc, mark them in the installed list as 'removed'

  - added a ChangeLog :)
