2

私のパッケージには、レジストリ エントリが導入されています。サイト管理者による変更は、パッケージの再インストール時に上書きされるべきではありません。

ローマへの多くの方法。私はftw.upgradeを選びました。アップグレード ステップの構文の宣言的な方法が気に入っています。propertiestool.xml のような一般的なセットアップ xml ファイルのアップグレード ディレクトリを使用することができます。ハンドラー Python コードを定義する必要はありません。アップグレードはうまく機能します。管理者はコントロール パネルからアップグレードでき、私の場合は新しいプロパティが追加されます。Insomma: 新しいプロパティの場合、追加する必要があるのは、ソース バージョンと宛先バージョンのアップグレード ステップの宣言と、properties.xml を見つけるディレクトリです。いいね!–

4

2 に答える 2

3

内部Extension/install.pyにメソッドを含むファイルを提供することで、Ploneアドオンをインストールするときに何をすべきかをパイロットできます:install

def install(portal, reinstall=False):
    if not reinstall:
        setup_tool = portal.portal_setup
        setup_tool.runAllImportStepsFromProfile('profile-your.pfile:default')

このようにして、インストール時に Plone がすべきことを実行します。

必要な場合: アンインストールの場合と同じ:

def uninstall(portal, reinstall=False):
    if not reinstall:
        setup_tool = portal.portal_setup
        setup_tool.runAllImportStepsFromProfile('profile-example.gs:uninstall')

これにより、再インストール時にアンインストール手順が実行されないようにすることができます。

警告: Mathias が提案したように、quickinstaller を使用する -> 再インストール機能は良くありません。

警告: これはおそらく Plone 5 ではもう動作しません (これについてはオープンな議論があります)。

于 2015-05-28T08:18:32.213 に答える
2

あなたが説明したことは、Plone のスタックの複雑さが増すことで発生する問題の 1 つであり、理由の 1 つであると思います。なぜなら、再インストールの実行が推奨されなくなり、Add-オン、アップグレード手順を介して(マティアスが述べたように)。これにより、開発時間が大幅に増加し、私の経験では、さらに多くの競合が発生します。参照ドキュメントは次のとおりです: http://docs.plone.org/develop/addons/components/genericsetup.html#add-upgrade-step

エリザベス・レディはかつて、その苦痛を和らげるためにアドオンを書きました

そして、FTWの偉大な人たちも、私はそれを使用したことはありませんが、有望に見えます: https://pypi.python.org/pypi/ftw.upgrade

どちらもこれを使用せず、壊れた OFS オブジェクトのクリーンアップや R. Patterson のものなど、いくつかの追加機能があるとさえ主張しています: https://github.com/collective/collective.upgrade

私たちがここにいるとき、私がそれについて見つけた最初の良いドキュメントは〜1.5年前、もちろんUwoshから来ました: http://www.uwosh.edu/ploneprojects/docs/how-tos/how-to-use -generic-setup-upgrade-steps

別の解決策は、初期インストールか再インストールかを確認し、この回答で説明されているように、「setuphandlers.py」と呼ばれる便利な Python スクリプトを介してプログラムでプロパティを設定することです: How to check, if my productインストール時に既にインストールされていますか? そうすれば、すべてを爆破することなく再インストールをトリガーできます。

最後に、多くの GS-xml ファイルはpurge-property を理解し、それを に設定するとFalse、ファイル全体が上書きされるのではなく、指定された props だけが上書きされます。これはあなたのケースに当てはまるかどうかに関係なく、上記の公式ドキュメントでサンプルを見つけることができます。

于 2015-05-28T08:24:39.750 に答える