Skip to content
kasemir edited this page May 12, 2010 · 13 revisions

= Update Repository =

PageOutline

Ideally, CSS end users can update their version of CSS seamlessly to the latest version, install desired features or uninstall functionality that they no longer want.

== Online Updates == CSS versions with online update support have a menu entry {{{Help, Check for Updates}}} that contacts a pre-configured update site, then either displays available updates or states that there is nothing to update.

For example, users who downloaded epics_css_1.9.9-*.zip from http://ics-web.sns.ornl.gov/css/updates/apps/ should see that a version 2.0.0 or later is available, and after selecting the version, maybe acknowldege "unsigned" content and agreeing on a restart, CSS updates itself to that version.

The menu item {{{Help, About...}}} offers a button {{{Installation Details}}} which leads to a dialog that lists the installation history, and allows to revert to a previous version:

Image(config.png)

In addition, {{{Help, Install New Software...}}} allows the manual installation of optional features.

== Technical Details == Online updates are based on Eclipse "P2", see

== Issues == While the overall "update" can be accomplished in a way that is convenient to the end user, there are still some problems.

=== Versions === A Product must be based on Features, which in turn list Plugins. The version numbers of the product, features and plugins must change when their content is modified for P2 to recognize the change. The use of "1.1.2.qualifier" is suggested to assert that new builds will create individual versions based on the build date.

=== Site-Specific Repositories === Each CSS "Product" and each "Feature" has its default update repository built-in. Since different sites use different products, and probably also need to control what updates (features, their versions) are suitable for their users, at least for the complete product update, the update repositories need to be site-specific.

=== Headless Build Issues === The only practical way to create products is a "headless build", but in a headless build the launchers for Linux and OS X are for the time being not marked as executable (https://bugs.eclipse.org/bugs/show_bug.cgi?id=282260).

=== Whole-product update === When for example the Data Browser feature changes, it would be nice to only export this latest feature to the repository so that users can fetch an update. This, however, does currently not work if the product already included the Data Browser. There will be an error message "Only one of the following can be installed at once", declaring a conflict between the Data Browser plugin that's part of the product and the one from the intended update.

The only accepted method seems to be:

  • Update the version number of the product
  • Export the whole product to the update repository

=== Use of dropins, direct plugin manipulations === When using P2, one should not use dropins or even direct plugin folder manipulations, even though that would be convenient when only one plugin is to be updated.

=== Imperfect Dependencies === Correctly configuring all dependencies takes a lot of time.

{{{Help, Install New Software...}}} might allow users to install features which are really incompatible to their current setup.

For example, it will allow users of the SNS "Office" product to add the core CSS components for the SNS "Basic" product without warnings, resulting in a product that really contains two products, which then refuses to run.

Clone this wiki locally