2

我的包引入了注册表项。站点管理员所做的更改不应在重新安装软件包时被覆盖。

很多方式去罗马。我选择了ftw.upgrade。我喜欢升级步骤语法的声明方式。可以将升级目录用于通用设置 xml 文件,如 propertiestool.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 -> reinstall 功能不好

警告:这可能不再适用于 Plone 5(对此有公开讨论)。

于 2015-05-28T08:18:32.213 回答
2

我认为您所描述的是随着 Plone 堆栈复杂性的增加即将出现的问题之一,以及为什么建议再执行重新安装而是为每个版本的 Add-提供配置文件的原因之一-开启,通过升级步骤(如 Mathias 所述)。根据我的经验,这会显着增加开发时间并导致更多冲突。以下是参考文档: http ://docs.plone.org/develop/addons/components/genericsetup.html#add-upgrade-step

Elizabeth Leddy 曾经写过一个插件来缓解这种痛苦,我可以确认它确实如此: https ://github.com/ampsport/amp.ezupgrade

还有来自 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 -通用设置升级步骤

另一种解决方案可以是检查它是初始安装还是重新安装,并通过 Python 脚本以编程方式设置属性,方便地称为“setuphandlers.py”,如此答案中所述: 如何检查,如果我的产品已经安装了,什么时候安装呢? 这样一来,人们仍然可以触发重新安装而不会将其全部炸毁。

最后,很多 GS-xml 文件都理解purge-property,将其设置为False,不会覆盖整个文件,只会覆盖您给定的道具。这可能适用于您的案例,也可能不适用于您的案例,您可以在上面引用的官方文档中找到示例。

于 2015-05-28T08:24:39.750 回答