如何使用Eclipse RCP中的plugin_customization.ini将org.eclipse.equinox.p2.ui.sdk.scheduler / enabled设置为true?

时间:2010-08-09 23:57:18

标签: java eclipse-rcp

我正在尝试构建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方法中,所以我不能简单地在plugin_customization中将migrated34Prefs的值设置为true,因为直到迁移已经发生之后才会读取它。我知道问题是什么,但我不能完全看到最后一步,以便默认情况下启用它。还有其他我可以设置的东西,或其他一些我无法找到的解决方法吗?

1 个答案:

答案 0 :(得分:2)

解决方法是直接从您自己的插件访问AutomaticUpdatePlugin的首选项,例如在首选项初始化程序中:

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