安装时如何检查我的产品是否已安装?

Ida*_*kes 4 plone

我想在导入步骤中执行部分代码,但前提是尚未安装产品本身.

我尝试使用quickinstaller-tool的'listInstalledProduct-method.

但是,这将返回所有已安装的产品,而不是我自己的产品.

如果我的产品已经安装在网站上,我该如何检查?

Ida*_*kes 5

有了Anne Walther(又名'awello')的正确暗示,我可以找到一个解决方案:

from Products.CMFCore.utils import getToolByName
def myMethod(context):
    qi = getToolByName(context, 'portal_quickinstaller')

    prods = qi.listInstallableProducts(skipInstalled=False)

    for prod in prods:
        if (prod['id'] == 'your.productname') and (prod['status'] == 'new'):
        # further code...
Run Code Online (Sandbox Code Playgroud)

无论出于何种原因,幸运的是,重新安装过程中产品的状态将返回"已卸载",尚未安装的产品返回状态为"新",最后已经安装的网站大吼大叫并引以为傲:"已安装" .

这样就可以区分重新安装和初始安装.