Eclipse 提供了许多用来支持多用户安装的策略。每个策略都适用于特定的情况。本文档阐述了这些策略,并描述了在什么情况下应该使用哪个策略。本文的潜在读者包括对基于 Eclipse 的产品进行配置以进行分发的产品工程师、对基于 Eclipse 的产品进行设置以便在网络中使用的系统管理员以及有兴趣创建适用于此类安装的插件的开发者。
最后更新:2005 年 6 月 17 日
正如 Eclipse 运行时选项一文所描述的,在多用户安装中部署 Eclipse 的上下文中,有三个不同的位置很重要:
在 Eclipse 第一次运行前,配置区基本上是一个空目录。Eclipse 运行时和其它插件在 Eclipse 会话期间逐步填充此位置。在第一次会话关闭期间,将把 Eclipse 运行时保留的大部分元数据(例如插件依赖项和扩展注册表)写入此位置。如果未对已安装的插件集进行任何更改,则后续会话期间就不必写入任何数据。我们说此配置已初始化。当配置处于此状态时,甚至可以使配置区设置成只读的。在某些方案(如共享配置)中,将配置区设置为只读会非常有用(后面提供了更多这方面的内容)。
命令行选项 -initialize
允许对配置区进行初始化,而不要求运行 Eclipse 应用程序。初始化过程将强制创建在第一次 Eclipse 会话期间被写至配置位置的任何元数据。但是,在配置区中还存储了一些仅根据需要创建的文件。这些文件的示例包括:
Platform.asLocalURL(URL)
。因此,如果 URL 引用了
JAR 中的文件,就会将该文件抽取到文件系统中的配置区中。一旦抽取了文件,以后执行的
Platform.asLocalURL()
调用就能够找到该文件,因此不会再针对该文件执行其它抽取操作。一个类似方案(实际上是原始方案)使用了 Platform.asLocalURL
并具有相同效果,它的内容是确保远程内容(例如通过 http URL
访问的文件)位于本地。对于这些情况(以及第三方插件可能引入的其它情况),初始化过程不足以完全初始化配置区。尽管由于应用程序中所有导致在配置区中创建文件的执行路径被访问,写配置区的需求会趋于消失,仍然会有这样的需求。只有在可以确定配置区已完全初始化并且永远不再需要对其进行写访问时,Eclipse 才能运行。
这实际上是单用户方案。Eclipse 安装由单个用户使用,该用户对它拥有完全访问权。缺省情况下,配置区位置是安装位置下的 configuration 目录。
建立此方案的过程仅要求确保该用户对安装位置拥有完全访问权。
在此方案中,单个安装区由许多用户共享。安装区中的“configuration”目录仅仅是产品附带交付的 config.ini 的主目录(未进行初始化)。每个用户都有自己的本地独立配置位置。
要设置此方案,要求安装区对于常规用户是只读的。当用户启动 Eclipse 时,这使得配置区自动缺省为用户主目录下的一个目录。如果不采取此措施,所有用户最终会将同一个位置用作他们的配置区,这是不受支持的。
使用此方案,用户不仅共享安装区,而且共享主配置区。缺省情况下,用户仍拥有他们自己的私有可写配置区。用户的私有配置区级联到主配置,如果主配置已经被完全初始化,并且未对要安装的插件集进行任何更改,则私有配置区将不会包含任何有意义的数据。
在此方案中,系统管理员对主配置(通常位于安装位置下)进行初始化并确保整个安装区和配置区对用户来说都是只读的。当用户从共享安装位置运行基于 Eclipse 的产品时,由于他们对安装区下的配置区没有写访问权,所以将自动计算并初始化本地配置区。
共享配置初始化得越完全,就越不需要在本地配置下创建文件。
私有配置区的缺省位置是:
<user-home-dir>/.eclipse/<product-id>_<product-version>/configuration
用户主目录是由 Java 系统属性 user.home
确定的。产品标识和版本是从
Eclipse 安装中的产品标记文件 .eclipseproduct
中获取的。
可以通过设置系统属性 osgi.configuration.area
来定义非缺省配置区。此属性可以由最终用户设置,但是在启动程序 .ini 文件中或者在基本配置位置的 config.ini 文件中设置它将更加方便。
可以在共享配置中安装插件或者从共享配置中除去插件。Eclipse 下次运行时,用户将与那些更改保持同步。请确保将共享配置作为其主配置的用户未运行 Eclipse,这很有必要。
用户可以通过安装其它插件来修改他们的本地配置区。这不会导致共享配置发生任何更改,因此其他用户将觉察不到这些更改。注意,在共享配置中配置的插件无法被除去。如果那些插件被除去,平台下次启动时将重新安装它们。