Създавам продукт, базиран на Eclipse RCP, и се натъквам на проблем, при който когато се опитам да използвам вградения потребителски интерфейс на p2, за да инсталирам актуализации на продукта, получавам съобщение за грешка в диалоговия прозорец, че „Недостатъчни привилегии за достъп до приложете тази актуализация."
Отстраних грешки в Eclipse и открих, че „основната причина“ е, че има p2 .profile файл, който има xml, който включва този фрагмент:
<iuProperties id='com.datical.db.ui.product' version='1.33.0.201412032223'>
<properties size='4'>
<property name='org.eclipse.equinox.p2.internal.inclusion.rules' value='STRICT'/>
<property name='org.eclipse.equinox.p2.type.root' value='true'/>
<property name='org.eclipse.equinox.p2.type.lock' value='3'/>
<property name='org.eclipse.equinox.p2.base' value='true'/>
</properties>
</iuProperties>
Съответният ред е този, който казва <property name='org.eclipse.equinox.p2.type.lock' value='3'/>
Не съм сигурен какво правя погрешно - мисля, че трябва да има нещо нередно в дефиницията на моя продукт или дефиницията на функцията ми или в моя процес на инсталиране, което причинява този ред да е там.
Когато преминавам през кода на Eclipse (целевата ни среда е 3.7/Indigo), виждам, че профилът се записва вътре в org.eclipse.equinox.internal.p2.engine:SurrogateProfileHandler:addSharedProfileBaseIUs
(което е частно статично.) Това се извиква от SurrogateProfileHandler:createProfile
Хранилището p2 на продукта се изгражда с помощта на добавките tycho, версия 0.15.