Я пытаюсь создать приложение 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, поскольку оно даже не будет считываться до тех пор, пока миграция не произойдет. Я знаю, в чем проблема, но я не могу видеть последний шаг, чтобы сделать его таким, чтобы он был включен по умолчанию. Есть ли что-то еще, что я могу установить, или какой-то другой обходной путь, который я не смог найти?