Как вы получаете org.eclipse.equinox.p2.ui.sdk.scheduler / enabled, чтобы быть правдой, используя plugin_customization.ini в Eclipse RCP? - PullRequest
2 голосов
/ 10 августа 2010

Я пытаюсь создать приложение Eclipse RCP, и в процессе мы пытаемся настроить приложение на автоматическое обновление. Мы пытаемся, чтобы он автоматически установил правильные настройки на странице «Настройки» -> «Установить / обновить» -> «Автоматическое обновление».

Я установил все нужные мне настройки в файле plugin_customization.ini для нашего .product (например, org.eclipse.equinox.p2.ui.sdk.scheduler / download = true) и почти все из них. Работа. Однако одно предпочтение, похоже, не устанавливается автоматически: это предпочтение org.eclipse.equinox.p2.ui.sdk.scheduler / enabled (значение, указанное с помощью флажка «Автоматически находить новые обновления и уведомлять меня» в AutomaticUpdatesPreferencePage) Копаясь в исходном коде, я понимаю, почему он не устанавливает его правильно, но я не уверен, как его обойти.

Вот по сути, почему это не работает: в последней строке метода AutomaticUpdatePlugin.start он вызывает

PreferenceInitializer.migratePreferences();

Поскольку это пусковой метод для плагина, это происходит до того, как любое из предпочтений будет прочитано из plugin_customization.ini. migratePreferences пытается перенести это предпочтение, которое было в другом месте в 3.4 и 3.3. Внутри AutomaticUpdatePlugin есть скрытое предпочтение «migrated34Prefs», которое проверяет, выполняет ли оно эту миграцию: эта миграция устанавливает значение включенного предпочтения в false, поэтому, если бы я мог каким-то образом остановить его от выполнения этой миграции (поскольку я знаю, что не будет перехода с 3.3 или 3.4, так как мы только что построили поверх 3.5), все будет работать нормально. Значение по умолчанию устанавливается правильно с помощью plugin_customization.ini, но фактическое значение по-прежнему равно false (т. Е. Если я впервые нажму кнопку «Восстановить настройки по умолчанию» на этой странице предпочтений после первого открытия RCP, поле переходит от непроверенного к проверенному).

Поскольку все это происходит в методе start, я не могу просто установить значение migrated34Prefs в true в plugin_customization, поскольку оно даже не будет считываться до тех пор, пока миграция не произойдет. Я знаю, в чем проблема, но я не могу видеть последний шаг, чтобы сделать его таким, чтобы он был включен по умолчанию. Есть ли что-то еще, что я могу установить, или какой-то другой обходной путь, который я не смог найти?

1 Ответ

2 голосов
/ 07 января 2011

Обходной путь для этого - получить доступ к настройкам AutomaticUpdatePlugin непосредственно из вашего собственного плагина, например, в инициализаторе предпочтений:

Preferences node = new DefaultScope().getNode(AutomaticUpdatePlugin.PLUGIN_ID);
node.putBoolean(PreferenceConstants.PREF_AUTO_UPDATE_ENABLED, true);
...