views:

297

answers:

2

I have an RCP app, consisting of:

  • A main plugin
  • A "framework" plugin
  • A product definition file

  • The product definition file lives in the main plug-in (is this a bad idea?).

    The product definition is based on "plug-ins", and has a dependency upon all the plug-ins in the workspace.

    Now, I want the user of the RCP app to be able to update the app. This includes new / changed HTML help files, new plug-ins, changed code in existing plug-ins etc.

    What do I need to be able to do this?

    What is the best way to set up my workspace / project heirarchy?

    +1  A: 

    First thing you should do is to make sure that your RCP product is based on features, not plug-ins. In your product overview tab select "The product configuration is based on features".. I think it's not possible to make update-able product without features, but I could be wrong, eclipse is changing so fast. Anyway, before doing this, you should, of course, define your features and assign plug-ins to those features. What gets updated are features, which drag along the plug-ins associated with them when automatic update process take place. Make sure you keep your features properly versioned so that update manager will be able to detect update changes. Once you've got this all sorted out, you build an update site, this can be done in Eclipse by creating new "Update Site Project". You will then add your features to it. When you build this project it will produce the actual update site structure, based on the features (and of course plug-ins) you specified. Take this whole structure and deploy it on some remote site. I keep it on my web site, but it could be anywhere. And yes, when defining the feature, make sure to specify the update site URL, this is where your application update manager will be looking for the updates of installed features. All above is valid for eclipse 3.3, perhaps in newer versions it's more optimized, but I believe the main idea won't change.

    May be there is a simpler way of doing this, but this is the way I do it.. let me know if you find a better way :)

    Dima
    A: 

    I was using the following resources to help me with this problem:

    Good luck.

    DJ