Как предотвратить перезапись значений пользовательских записей реестра при переустановке моего пакета?

Мой пакет вводит записи реестра. Изменения администратором сайта не должны перезаписываться при переустановке пакета.

Много способов добраться до Рима. Я выбрал ftw.upgrade. Мне нравится декларативный способ синтаксиса шага обновления. Можно использовать каталог обновления для общих настроек xml-файлов, таких как propertiestool.xml. Нет необходимости определять обработчик кода Python. Обновление работает хорошо. Администратор может обновить с панели управления, и в моем случае новое свойство добавляется. Insomma: Для нового свойства нужно добавить только это: объявление шага обновления для исходной и целевой версии и каталог, где найти файл properties.xml. Палец вверх! -

2 ответа

Вы можете попробовать, что делать при установке дополнения Plone, предоставив Extension/install.py файл с 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')

Таким образом, вы можете предотвратить запуск шага удаления при переустановке.

Предупреждение: как Матиас предложил использовать quickinstaller -> функция переустановки плохая.

Предупреждение: это, вероятно, больше не будет работать на Plone 5 (об этом есть открытая дискуссия).

Я думаю, что вы описываете, является одной из проблем, возникающих в связи с возрастающей сложностью стека Plone, и одной из причин, почему не рекомендуется выполнять переустановку больше, а предоставлять профиль для каждой версии Add- Вкл, через шаги апгрейда (как упоминал Матиас). Это значительно увеличивает время разработки и приводит к еще большему количеству конфликтов моего опыта. Вот справочные документы: http://docs.plone.org/develop/addons/components/genericsetup.html

Элизабет Ледди однажды написала дополнение, чтобы облегчить эту боль, и я могу подтвердить, что это так: https://github.com/ampsport/amp.ezupgrade

И отличные ребята из FTW тоже, я никогда не использовал его, но выглядит многообещающе: https://pypi.python.org/pypi/ftw.upgrade

Ни один из них не использовал его, даже утверждает, что у него есть некоторые дополнительные полезности, такие как очистка сломанных объектов OFS и объектов Р. Паттерсона: https://github.com/collective/collective.upgrade

Поскольку мы здесь, первый хороший документ, который я смог найти об этом ~ 1,5 года назад, прибывает из Uwosh, конечно: http://www.uwosh.edu/ploneprojects/docs/how-tos/how-to-use-generic-setup-upgrade-steps

Другое решение может состоять в том, чтобы проверить, является ли это первоначальной или переустановкой, и установить свойства программно с помощью Python-скрипта, обычно называемого "setuphandlers.py", как описано в этом ответе: Как проверить, если мой продукт уже установлен, при установке? Таким образом, можно по-прежнему запускать переустановки, не взрывая их.

Наконец, многие из GS-xml-файлов понимают purge-свойство, установив его False, не будет перезаписывать весь файл, только ваши данные реквизиты. Это может или не может применяться к вашему делу, вы можете найти образцы в приведенном выше официальном документе.

Другие вопросы по тегам