4

製品自体がまだインストールされていない場合にのみ、インポート ステップでコードの一部を実行したいと考えています。

私はquickinstaller-toolの「listInstalledProduct's-method」で試しました。

ただし、これにより、インストールされているすべての製品が返されますが、自分自身のものは返されません。

製品がサイトに既にインストールされているかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

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...

なんらかの理由で、幸いなことに、再インストール中の製品のステータスは「アンインストール済み」を返し、まだインストールされていない製品は「新規」ステータスで返され、最後に、サイトの既にインストール済みの製品は大声で誇らしげに「インストール済み」と叫びます。 .

このようにして、再インストールと初期インストールを区別することができます。

于 2012-11-07T14:47:38.200 に答える