def install_packages(packages, dependencies, context, logger=None):
    """ Install packages from, """
    qi = getToolByName(context, "portal_quickinstaller")
    ordered = _order_packages(packages, dependencies)
    for dep in ordered:
        name = deps.get_package_name(dep["package"])
        qi.installProduct(name, locked=dep["locked"], hidden=dep["hidden"], profile=dep["profile"])
        if logger:
            logger.info("Installed %s" % name)
def uninstall_packages(packages, context, logger=None):
    """ Uninstall packages """
    qi = getToolByName(context, "portal_quickinstaller")
    for package in packages:
        name = deps.get_package_name(package)
        if qi.isProductInstalled(name):
            # We could pass a list in here, but debugging
            # would be harder
            qi.uninstallProducts(products=[name])
            if logger:
                logger.info("Uninstalled %s" % name)