platform-update-home/doc/shared_eclipse_installs.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download) (as text)

1 : jeem 1.1 <html>
2 :    
3 :     <head>
4 :     <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
5 :     <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
6 :     <meta name="ProgId" content="FrontPage.Editor.Document">
7 :     <title>Multi-user Installs of Eclipse-based Products</title>
8 :     </head>
9 :    
10 :     <body>
11 :    
12 :     <h1>Multi-user Installs of Eclipse-based Products</h1>
13 :     <p>Last revised 15:30 Monday May 6, 2002</p>
14 :     <p>There are special considerations when a product is installed somewhere in a
15 :     shared file system so that the installed base of files can be used
16 :     simultaneously by several users. Doing this requires making and maintaining a
17 :     clear separation between files containing information that should be common
18 :     across users from files containing user-specific information, for which each user will
19 :     need personal copies. It helps to think of the installed
20 :     based of files as being read-only (which they often are), and imagine that these
21 :     installed files can only be created or changed when the product is installed (or
22 :     updated). The user-specific files are stored elsewhere in some read-write user
23 :     space.</p>
24 :     <p>This note describes how shared, multi-user installs of Eclipse-based products work.</p>
25 :     <h2>What product developers need to know</h2>
26 :     <p>When an Eclipse-based product is installed on a disk, various files are laid
27 :     out in the product install directory (denoted <code>&lt;<i>install</i>&gt;</code>)
28 :     which is specified at the time the product is installed. Installed files
29 :     directly related to Eclipse are in the <code>&lt;<i>install</i>&gt;/eclipse/</code>
30 :     subdirectory. Installed files are neither written nor deleted during the normal
31 :     course of operating the Eclipse-based product.</p>
32 :     <p>When an Eclipse-base product is installed, special one-time initialization is
33 :     initiated with the <code>-initialize</code> option. This invocation creates and
34 :     modifies files in <code>&lt;<i>install</i>&gt;/eclipse/</code>. These files
35 :     ensure that the product starts quickly, with the correct splash screen, on
36 :     subsequent occasions. Once installed and initialized,
37 :     the <code>&lt;<i>install</i>&gt;</code> directory can be write-protected without
38 :     impacting the ability for a user to successfully operate the product stored
39 :     there. The product installer and the Eclipse update manager are the only parties
40 :     that alter the installed base of files.&nbsp;</p>
41 :     <p>Running an Eclipse-based product requires a read-write &quot;workspace&quot;
42 :     area (denoted <code>&lt;<i>workspace</i>&gt;</code>) to hold Eclipse platform
43 :     and plug-in data. The user can specify the location of the workspace area explicitly with <code>-data
44 :     &lt;<i>workspace</i>&gt;</code> on the command line. If not specified on the
45 :     command line, the location of the workspace defaults to <code>&lt;<i>current
46 :     working directory</i>&gt;/workspace/</code>. The user can have any number of
47 :     workspaces for use with a given product. Because of this, a single user with
48 :     several workspaces is the small scale version of a multi-user install; the only
49 :     significant difference is that in the former case the user is likely to also
50 :     have write access to the installed base of files.</p>
51 :     <p>To make things confusing, a common Windows shortcut to <code>&lt;<i>install</i>&gt;/eclipse/eclipse.exe</code>
52 :     will default <code>&lt;<i>current working directory</i>&gt;</code> to the
53 :     directory holding the executable. As a direct consequence, the default workspace
54 :     will appear inside the install directory (!), at <code>&lt;<i>install</i>&gt;/eclipse/workspace/</code>.
55 :     Similarly, a Windows shortcut to <code>&lt;<i>install</i>&gt;/<i>myproduct</i>.exe</code>
56 :     will cause the default workspace to appear up one directory level, at <code>&lt;<i>install</i>&gt;/workspace/</code>.
57 :     Both arrangements work fine for a single-user install, but are problematic for a
58 :     shared, multi-user install.</p>
59 :     <p>For a multi-user install, <code>&lt;<i>current working directory</i>&gt;</code>
60 :     should be a read-write directory in user space, apart from the <code>&lt;<i>install</i>&gt;</code>
61 :     directory. This ensures that the default workspace location is a different place
62 :     for each user. With a multi-user install, a user without write access to the install
63 :     directory would be unable to run the product installer or use the Eclipse update
64 :     manager to change the product install (however, it is still possible to use the
65 :     update manager to install and configure new features and product updates, just
66 :     not into the <code>&lt;<i>install</i>&gt;</code> directory).</p>
67 :     <h2>What product developers do not need to know</h2>
68 :     <p><b>N.B. The details in this section are not Eclipse platform API, and may
69 :     change over time. Do not rely on anything described in this section.</b></p>
70 :     <p>(0) Initial launch behavior</p>
71 :     <ul>
72 :     <li>done at install time</li>
73 :     <li>performs one-time initialization</li>
74 :     <li>optional, but highly recommended</li>
75 :     <li>done with <code>-initialize</code> option</li>
76 :     <li>runs headless</li>
77 :     <li>can use other options -data, -ws, -os, -nl, etc.</li>
78 :     <li>entails creating a scratch workspace somewhere (deleted on completion of install)</li>
79 :     <li>determines set of installed features and plug-ins</li>
80 :     <li>computes a maximal configuration using the most recent versions of all
81 :     features</li>
82 :     <li>unconditionally writes configuration info to <code>&lt;<i>install</i>&gt;/eclipse/.config/platform.cfg</code></li>
83 :     <li> initial launch of a new workspace will be case (1)</li>
84 :     <li> <code>&lt;<i>install</i>&gt;/eclipse/.config/platform.cfg</code> is used (only) on first user launches</li>
85 :     </ul>
86 :     <p>(1) New workspace - precomputed configuration in install (no <code>&lt;<i>workspace</i>&gt;/.metadata/.config/platform.cfg</code>;
87 :     but <code>&lt;<i>install</i>&gt;/eclipse/.config/platform.cfg</code> present)</p>
88 :     <ul>
89 :     <li>reads configuration <code>&lt;<i>install</i>&gt;/eclipse/.config/platform.cfg</code>
90 :     </li>
91 :     <li>unconditionally writes configuration info to <code>&lt;<i>workspace</i>&gt;/.metadata/.config/platform.cfg</code></li>
92 :     <li>this behavior ensures that workspace in not affected even if <code>&lt;<i>install</i>&gt;/eclipse/.config/platform.cfg</code>
93 :     were to later change</li>
94 :     <li>happens once for each workspace</li>
95 :     </ul>
96 :     <p>(2) New workspace - no precomputed configuration in install (no <code>&lt;<i>workspace</i>&gt;/.metadata/.config/platform.cfg</code>;
97 :     no <code>&lt;<i>install</i>&gt;/eclipse/.config/platform.cfg</code> either)</p>
98 :     <ul>
99 :     <li>puts up simple splash screen saying &quot;Completing the install. Please
100 :     wait...&quot;</li>
101 :     <li>determines set of installed features and plug-ins</li>
102 :     <li>computes a maximal configuration using the most recent versions of all
103 :     features</li>
104 :     <li>unconditionally writes configuration info to <code>&lt;<i>workspace</i>&gt;/.metadata/.config/platform.cfg</code></li>
105 :     <li>exit and relaunch</li>
106 :     </ul>
107 :     <p>(3) Existing workspace (<code>&lt;<i>workspace</i>&gt;/.metadata/.config/platform.cfg</code>)</p>
108 :     <ul>
109 :     <li>reads configuration <code>&lt;<i>workspace</i>&gt;/.metadata/.config/platform.cfg</code></li>
110 :     <li>may rewrite configuration info file</li>
111 :     </ul>
112 :     <p>Note that the above behavior is independent of whether the install is
113 :     single-user or multi-user.</p>
114 :     <p>Using Eclipse update manager to update an install</p>
115 :     <ul>
116 :     <li>allows privileged user to upgrade a multi-user install</li>
117 :     <li>allows user to upgrade a single-user install in a way that affects new
118 :     workspaces</li>
119 :     <li>user must have write access to <code>&lt;<i>install</i>&gt;</code></li>
120 :     <li>
121 :     <p ALIGN="LEFT">user launches eclipse with <code>-configuration
122 :     &lt;install&gt;/eclipse/.config/platform.cfg</code></li>
123 :     <li>installs new and updated features into <code>&lt;<i>install</i>&gt;/eclipse/</code></li>
124 :     <li>creates new configurations in&nbsp; <code>&lt;<i>install</i>&gt;/eclipse/.config/platform.cfg.metadata/</code></li>
125 :     <li>new configurations must only contain features and plug-ins within <code>&lt;<i>install</i>&gt;</code>
126 :     local site (or a local site linked to it)</li>
127 :     <li>sets default configuration by rewriting <code>&lt;<i>install</i>&gt;/eclipse/.config/platform.cfg</code></li>
128 :     <li>deletes configurations from <code>&lt;<i>install</i>&gt;/eclipse/.config/platform.cfg.metadata/</code></li>
129 :     <li>new configurations appear for all users</li>
130 :     <li>changes default configuration used for all new workspaces</li>
131 :     </ul>
132 :     <p>Using Eclipse update manager to update in the context of a single workspace</p>
133 :     <ul>
134 :     <li>user does not require write access to <code>&lt;<i>install</i>&gt;</code></li>
135 :     <li>
136 :     <p ALIGN="LEFT">user launches eclipse normally</li>
137 :     <li>installs new and updated features into any local site (possibly <code>&lt;<i>install</i>&gt;</code>)</li>
138 :     <li>creates new configurations in&nbsp;standard place (<code>&lt;<i>workspace</i>&gt;/.metadata/.config/platform.cfg.metadata/</code>)</li>
139 :     <li>new configurations may contain features and plug-ins in any local
140 :     site </li>
141 :     <li>sets configuration for workspace by rewriting <code>&lt;<i>workspace</i>&gt;/.metadata/.config/platform.cfg</code></li>
142 :     <li>sets configuration for workspace to default configuration for install</li>
143 :     <li>deletes configurations from <code>&lt;<i>workspace</i>&gt;/.metadata/.config/platform.cfg.metadata/</code></li>
144 :     <li>features and configurations only appear when using <code>&lt;<i>workspace</i>&gt;</code></li>
145 :     </ul>
146 :    
147 :     </body>
148 :    
149 :     </html>