2015-05-28 6 views
2

В моем пакете представлены записи реестра. Изменения, внесенные администратором сайта, не должны перезаписываться при переустановке пакета.Как предотвратить перезапись значений пользовательских записей реестра при переустановке моего пакета?

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

+3

Лучшей практикой является не переустановка пакета, а создание этапа обновления, в котором устанавливается только дельта (ваши изменения в реестре). Переустановка пакета обычно переопределяет сделанные вами изменения. – Mathias

+0

Написание шагов обновления, например, с ftw.upgrade, также очень хорошо документировано. -> https://github.com/4teamwork/ftw.upgrade – Mathias

+0

@Mathias:: D Да, уже упомянул об этом в ответе ниже. –

ответ

3

Вы можете пилотировать, что делать при установке 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 это, вероятно, не будет работать (об этом открыто обсуждение).

+0

Что означает «NBB» и «NBBB»? –

+0

Поскольку квест связан с реестром, возможно, хороший момент, чтобы указать вашу статью об этом, что мне понравилось: http://blog.redturtle.it/redturtle/plone.app.registry-how-to-use-it - и-love-it (слишком плохо, хотя, что содержащая ссылка на djay's doc мертва. –

+0

На самом деле, это еще лучше: http://blog.redturtle.it/2012/09/18/plone-registry -strikes-back :) –

2

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

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

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

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

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

Другим решением может быть, чтобы проверить, если это начально или повторно -install и задавать свойства программно с помощью скрипта Python, который называется «setuphandlers.py», как описано в этом ответе: How to check, if my product is already installed, when installing it? Таким образом, все еще можно инициировать переустановку, не продувая все это.

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

+0

Вау, спасибо за эту кучу информации. Шаги обновления - хорошая помощь с их сообщением, отображаемым на панели управления. –

+0

не рекомендуется запускать переустановку с тех пор, как я работал с plone - 6 лет. – vangheem

+0

@vangheem: Не рекомендуется, правда. Все еще зависит от конкретного случая и может быть осуществимым. Мне нравилось просто удалять переустановку во время dev, при изменении прокрутки в xml-файле профиля, намного быстрее. Для любопытства: какой инструмент вы используете для них, или вы пишете их вручную? –

 Смежные вопросы

  • Нет связанных вопросов^_^