我有一个多用户/位置RCP应用程序,目前使用多个用户可配置选项。有些偏好是针对电台的,有些是特定于用户的。
选项来自首选项存储,它将* .prefs文件保存到“workspace.metadata.plugins \ org.eclipse.core.runtime.settings”。
如果我们只使用一台机器/用户,那就没问题。但是,如果用户要去另一个电台,那么用户将使用为该电台设置的任何偏好。
是否可以为持久性(而不是文件)指定另一种形式?
答案 0 :(得分:9)
根据eclipse wiki,首选项是基于文件的,并存储:
<eclipse_home>/eclipse/configuration/.settings/
中的文件中
每个插件通常有一个文件,扩展名为.prefs
请注意,很少有插件使用安装范围的首选项。<workspace>/.metadata/.plugin/org.eclipse.core.runtime/.settings
中的文件中
每个插件通常有一个文件,扩展名为.prefs
。.settings
子目录中的文件因此,如果文件选项保留,您可能需要:
HKEY_CURRENT_USER/Software/MyRCP/...
),然后.prefs
目录中的workspace.metadata.plugins\org.eclipse.core.runtime.settings
文件来导入它们答案 1 :(得分:8)
听起来您需要将您的偏好存储在所有用户/机器都可以到达的中心位置。这意味着您必须实现自己的IPersistentPreferencesStore
。然后,您可以覆盖org.eclipse.jface.preference.PreferencePage#doGetPreferenceStore()
以使用它。
更大的问题是如何实现中央首选项存储,但这取决于您使用的技术。通常,如果您的项目使用中央服务器,您可能应该在那里存储您的首选项。例如,如果您的项目已经使用了关系数据库,那么一种解决方案是创建适当的数据库表并实现IPersistentPreferencesStore
以通过JDBC访问这些表。
答案 2 :(得分:5)
您应该阅读multi-user installs
在我们的案例中,我们通过将config.ini设置为包含以下内容,将每用户首选项与应用程序配置分开:
osgi.instance.area=@user.home/Application Data/earthrise
osgi.configuration.area=@user.home/Local Settings/Application Data/earthrise/144/configuration
osgi.sharedConfiguration.area=c:/program files/earthrise/configuration
osgi.configuration.cascaded=true
这样做的结果是用户设置的任何首选项都存储在漫游配置文件中,但特定于应用程序的配置数据存储在本地设置中。
这不能解决具有特定于特定工作站的用户首选项的问题,但确实允许每个用户拥有自己的首选项。
这样做的一个问题是,eclipse错误日志文件将存储在实例区域中,并在其漫游配置文件中随身携带 - 实际上并不是您想要的。您可以在插件中编写代码。请参阅eclipse bugzilla的解决方法 - 搜索256502
答案 3 :(得分:0)
只是一个想法!
由于PreferenceStore的load()方法执行:
public void load() throws IOException {
FileInputStream in = new FileInputStream(filename);
load(in);
in.close();
}
您可以创建PreferenceStore
PreferenceStore(String filename)
或设置其文件名
public void setFilename(String name) {
filename = name;
}
您可能能够将文件名“破解”到共享服务器上的某个位置(或者用户共享主文件夹)......