2.0.1 Unreleased

 - Adjusted installProduct method to be compatible with CMF 2.1 (including the
   conversion of tools as utilities).
   [hannosch]

 - Refactored ResourceRegistries support not to require the product itself to
   be installed in QI.
   [hannosch]

 - Added the INonInstallable interface that is used to look up utilities
   which provide a list of non-installable products. This allows applications
   to exclude certain products from the list of installable products.
   [hannosch]

 - Added an option to omit snapshot creation which defaults to True to speed up
   test runs and migrations.
   [hannosch]

 - We automatically create a GenericSetup snapshot before and after installation
   now, so you can at least compare the changes a product did during
   installation. We have no better uninstall yet, though.
   [hannosch]

2.0.0 Released October 25, 2006

 - Slightly optimize for GenericSetup profile based installations.
   [hannosch]

 - Adjusted actions installation tracking to work with CMF 2.1+.
   [hannosch]

 - Made profile based installation work with CMF 2.1+. The profile id may use
   the full package name now, instead of only the product name (for example:
   Products.CMFCalendar instead of CMFCalendar).
   [hannosch]

 - Changed GS profile registration to be zcml based. Fixed some problems with
   the logging calls. Removed some stale code from the tests.
   [hannosch]

 - Removed lots of unused and bbb code. This version requires at least CMF 1.6.
   [hannosch]

 - Added support for GenericSetup extension profile-based installation.
   [hannosch]

1.5.9 Released June 1, 2006

 - Fixed two missing imports in utils.py. This closes
   http://dev.plone.org/plone/ticket/5529.
   [hannosch]

1.5.8 Released May 15, 2006

 - Some general spring cleaning.
   [hannosch]

 - Avoid DeprecationWarning for product_name.
   [hannosch]

 - Added methods to display Products directory and debug mode (if enabled)
   [joelburton]

1.5.7 Released December 23, 2005

 - Cook resources when new types were added and ResourceRegistries is installed.
   [fschulze]

 - If we are reinstalling do not say the product is already installed if we
   see an exception but show the real error message
   [wichert]

1.5.6 Released December 18, 2005

 - Fix missing import in utils.py.
   https://trac.plone.org/plone/ticket/4817
   [hannosch]

1.5.5

 - Keeping track of ResourceRegistries entries.
   [zwork]

1.5.4

 - listInstalledProducts and listInstallableProducts now return
   alphabetized lists.
   [geoffd]

 - Catch errors where the product is there but install cannot by compiled,
   this picks up syntax errors and adds the them to an errors dict.
   When listInstallableProducts is called, the errors dict is repoulated.
   Also added in a few except ConflictErrors.
   [andym]

 - Fixing plone bug #3113, where the "uninstall" button would raise an exception
   if no items were selected; this makes the uninstallProducts() method symmetric
   with the installProducts() method
   [optilude]

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 :)
