| 
 Hi guys,  
  
Update operation is already submitted as a patch. It's 
denoted with "-updateIU" and could be used in simillar manner as 
"-installIU" and "-uninstallIU". You can see the 
bug below for more information.  
Any comments and feedback are highly appreciated. 
 
  
Kind regads, 
Katya
  
Of course, adding an update operation would be relatively straight 
forward.  Seems like that would be a welcomed contribution to the director 
app. As Richard mentioned, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=279659.
  
Jeff 
  
On 2010-09-27, at 11:27 AM, Andrew Niefer wrote: 
  
  As Jeff pointed out, you need to "update" the product. The director 
  application does not have any arguments for updating IUs. The closest 
  equivalent using the director is uninstall followed by install.
  See http://stackoverflow.com/questions/2380228/run-plugin-updates-outwith-eclipse-ui 
  and https://bugs.eclipse.org/bugs/show_bug.cgi?id=279659
  <graycol.gif>Samuel Wu---09/27/2010 11:19:03 AM---Hi Shenny, I ran into the 
  same problem as yours. I posted question on how to update an
  
   
    
    
      <ecblank.gif> From: | 
      <ecblank.gif> Samuel 
        Wu/Toronto/IBM@IBMCA |  
    
      <ecblank.gif> To: | 
      <ecblank.gif> P2 
        developer discussions <p2-dev@xxxxxxxxxxx> |  
    
      <ecblank.gif> Date: | 
      <ecblank.gif> 09/27/2010 11:19 AM |  
    
      <ecblank.gif> Subject: | 
      <ecblank.gif> Re: 
        [p2-dev] Product publishing and product update |  
    
      <ecblank.gif> Sent by: | 
      <ecblank.gif> p2-dev-bounces@xxxxxxxxxxx |   
   
  Hi Shenny, I ran into the same problem as yours. I 
  posted question on how to update an installed product but haven't figured it 
  out yet. My current work around is to only use the product as a stub. All the 
  features are built under another main feature and install that main feature to 
  the product instance. The installed main feature can be updated. You may want 
  to try this approach.  I still want to know how to update a product. 
  Although the package is small, it may still contain bug that needs to be 
  fixed. 
  Best Regards
  Samuel 
  Wu
 
  <graycol.gif>"Yousouf, Shenol" ---09/27/2010 10:08:55 AM---Hi, First, thanks for the 
  dedicated support and the quick responses ! :) 
  
    
    
      <ecblank.gif> From: | 
      <ecblank.gif> "Yousouf, Shenol" 
        <s.yousouf@xxxxxxx> |  
    
      <ecblank.gif> To: | 
      <ecblank.gif> P2 developer 
        discussions <p2-dev@xxxxxxxxxxx> |  
    
      <ecblank.gif> Date: | 
      <ecblank.gif> 09/27/2010 10:08 
      AM |  
    
      <ecblank.gif> Subject: | 
      <ecblank.gif> Re: [p2-dev] Product 
        publishing and product update |  
    
      <ecblank.gif> Sent by: | 
      <ecblank.gif> p2-dev-bounces@xxxxxxxxxxx |   
   
  
 
  Hi,
  First, thanks for the dedicated support and the quick responses ! 
  J
  I checked the official p2 director 
  documentation but none 
  of  the described arguments do not explicitly point to an update 
  functionality. Only the options for install and uninstall of IUs are quite 
  apparent.
  I also reviewed the options constants in DirectorApplication to 
  make sure that none of them are  missed in the documentation.
  Maybe it is some 
  combination of parameters which is not known to me. Ill check for further 
  information on the net but Id really appreciate any help to speed up 
  resolving this case.
  Best regards, Shenny  
  From: p2-dev-bounces@xxxxxxxxxxx 
  [mailto:p2-dev-bounces@xxxxxxxxxxx] On Behalf Of 
  Jeff McAffer Sent: Monday, September 27, 
  2010 4:26 PM To: P2 developer discussions Subject: Re: [p2-dev] Product 
  publishing and product update
  Seems in step 7 you are trying to *install* 
  the new version of the product rather than *update* the existing version. This 
  seems like the source of the difficulty. I don't remember the various director 
  arguments but there likely is one that does update.
  Jeff
  On 2010-09-27, at 
  8:28 AM, Yousouf, Shenol wrote:
 
  Hi,
  Yep, wrong setup is the most probable 
  reason for that; however, I tried to minimize the product configuration in 
  order to avoid dependencies to other factors as much as possible and I still 
  cant see where the problem is coming from. Here is what I am 
  doing:
  1. Download standard Eclipse IDE, at least version 3.6. Personally, 
  I tested on Eclipse 3.6.1 and 3.7 M2a to the same effect. Run it without any 
  modifications in a clean new workspace.
  2. In the IDE create an empty bundle (no 
  activator, no sources) and a feature which includes this bundle.
  3. Create a new 
  Product Configuration (File à New à Product 
  Configuration
) which includes only this feature. The option for native 
  launcher artifacts in the Product Editor must NOT be checked. (we dont need 
  any extra IUs). Append some version to the product in the Overview 
  tab.
  4. Run the Eclipse Product export wizard (available as a link in 
  the Overview tab in product editor) and publish the product to some 
  directory. The only difference from the default settings is that I uncheck the 
  Synchronize before exporting checkbox in the wizard, otherwise the export is 
  not possible (probably because product has no plugin to synch, only a 
  feature). A sample p2 repository which is a result from the first export is 
  attached as repository1.zip. Alternatively, instead of using the wizard, 
  you can first export the feature and then run the product publisher 
  application against the feature repository. The final p2 repo looks 
  identical.
  5. Run the p2 director application from the IDE to install the just 
  exported minimal product (sample application arguments:  -os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} 
  -consoleLog -console -repository file:/e:/temp/test_repo/repository -installIU 
  TestProduct -destination e:/temp/test_install -profile Test -bundlepool 
  e:/temp/test_install)
  6. You may want to delete the repository from step 4 
  to regenerate it again from scratch but it wont influence the final outcome. 
  Increment the product version in editor and export it again. Note that in the 
  result repository (example is attached as repository2.zip) both the product 
  and the included feature versions have increased.
  7. Try to 
  install the updated product with the p2 director application to the same 
  installation location used in step 5. The installation fails with message that 
  looks something like this: !MESSAGE Only one of the 
  following can be installed at once: !SUBENTRY 2 
  org.eclipse.equinox.p2.director 4 0 2010-09-27 14:38:29.642 !MESSAGE Test 
  Product 0.0.1 (TestProduct 0.0.1) !SUBENTRY 2 
  org.eclipse.equinox.p2.director 4 0 2010-09-27 14:38:29.642 !MESSAGE Test 
  Product 0.0.2 (TestProduct 0.0.2)
 
  I tested this procedure on several different versions 
  of Eclipse and also on the PCs of my colleagues to avoid local setup factors. 
  So Ill be grateful to anyone who can show me what I am doing wrong here. 
  Thanks in advance !
  Best regards, Shenny
 
  From: p2-dev-bounces@xxxxxxxxxxx 
  [mailto:p2-dev-bounces@xxxxxxxxxxx] On Behalf Of 
  Jeff McAffer Sent: Friday, September 24, 
  2010 10:44 PM To: P2 developer discussions Subject: Re: [p2-dev] Product 
  publishing and product update
  Must be something quirky in your setup as my 
  customers and I do this all the time.
  The singleton-ness should not be an issue as 
  you are wanting to update/replace this IU anyway so there will only be 
  one.
  Jeff
 
  On 2010-09-24, at 11:17 AM, Yousouf, Shenol 
  wrote:
 
 
  Hello again,
  I am continuing with some experiments along the 
  directions that Jeff gave me. I encountered several problems for which I 
  cannot find an explanation. For example, I tried to update the product after 
  incrementing its version in the repository. The update failed again because it 
  lists among its requirements a tooling configuration unit which is a 
  singleton. It looks quite simple: <unit id='tooling<product name>.configuration' 
  version='<product version>'> <provides 
  size='1'> <provided namespace='org.eclipse.equinox.p2.iu' 
  name='tooling<product name>.configuration' version='<product 
  version>'/> </provides> <touchpoint id='null' 
  version='0.0.0'/> </unit>
  Note that this is generated by the 
  product publisher and cannot be avoided. I dont have any idea what the 
  purpose of such a basic unit could be but being a singleton and a requirement 
  of the product, it stops the update of the whole product because there is 
  already an IU installed with the same name on the system (actual message from 
  p2 director says Only one of the following can be installed at once, 
  concerning this IU).
  Can anybody tell me why is this configuration unit 
  created at all on publishing ?
 
  In general, I am very surprised to see 
  how many problems I encounter to implement a simple product update given the 
  fact that p2 supports updates of features and bundles out of the box. So far, 
  the most direct approaches I tried failed completely: 
  
  
    
      
        - If I try to update, preserving the same product 
          version (as it is fixed in the .product descriptor), it fails because 
          of conflicting versions of the requirements. - If I try to update with an increased version of 
          the product, then the singleton configuration unit stops 
      me.     So 
  it seems that my initial concept how the product update should be done is 
  wrong. But then how new versions of products are supposed to be shipped to 
  customers to be consumed immediately by p2 ? How are the customers supposed to 
  perform updates of the whole product (not by individual bundles and features) 
  ?
 
  Best regards, Shenny
 
 
  From: p2-dev-bounces@xxxxxxxxxxx 
  [mailto:p2-dev-bounces@xxxxxxxxxxx] On Behalf Of 
  Jeff McAffer Sent: Friday, September 24, 
  2010 4:36 AM To: P2 developer discussions Subject: Re: [p2-dev] Product 
  publishing and product update
  There are a couple sides to this. One is that if you have Product X 
  v 1.2.3.20100923, that should mean something. If you allow ranges as 
  described, then two users installing X 1.2.3.20100923 may not get the same 
  actual software installed. Variation is introduced for example, if user 1 has 
  access to a different set of repos than user 2 or there is a network error for 
  user 1 but not user 2 or the single repo changed between when user 1 and user 
  2 did their install.
 
 
 
  Of course, these behaviours *could* also be 
  exactly what you want but certainly some folks free at this non-determinism as 
  a support nightmare.
  Anyway, looking at features, they allow for 
  things to be *included* or *required*. Included things have exact version 
  ranges while required things have, generally, wider ranges. Traditionally the 
  notion was that on install, the things *included* by the feature were 
  installed whereas the things *required* merely had to be there. Early update 
  manager didn't even help you find/get/install the required things. That was 
  goofy so we provided a means for users to say "yeah, get the required stuff 
  also". Now with p2 we do this automatically without involving the user. So 
  much for context...
  It would be reasonable to allow ranges on product content but it 
  would also force the product designer to be very aware of the consequences 
  pointed out at the beginning of this message. I honestly don't know what 
  people would do naturally or what guidance we could/should give them (e.g., 
  what's the default?).
  Back to your original topic, there is also 
  the possibility of producing new versions of your product that identify the 
  new versions of the components. Product production and distribution in p2 is 
  very light weight and users would see this as incoming new versions of the 
  product (that they know about) vs changes to random components (that they may 
  well not even know exist). What would you say as the user of some banking 
  product if told that there was a new version of EMF? "WFT?!"
  Scenarios vary. If 
  that does not work for you, you can insulate your product by making it consist 
  of one feature. In that feature, *require* everything that you want to be 
  updatable, include the stuff you want to be fixed (or put this stuff directly 
  in the product). The product will be bound to the one version of your 
  container feature and the container feature can use ranges. Beware the 
  problems outlined above with non-determinism. Note that you can also usethe 
  p2.inf file to do this. Andew Niefer did a couple blog posts on this a while 
  ago http://aniefer.blogspot.com/2009/07/composing-and-updating-custom-eclipse.html http://aniefer.blogspot.com/2009/07/composing-and-updating-custom-eclipse.html
  Good 
  luck Jeff
 
  On 2010-09-23, at 12:13 PM, Yousouf, Shenol 
  wrote:
 
 
 
  Hi all,
  I noticed that product publishing always sets requirements for a 
  fixed 
  version of the contained bundles/features, i.e. the defined range has its 
  lower and upper boundaries equal like this: <required namespace="org.eclipse.equinox.p2.iu" name="TestBundle"range="[1.0.0.201009171510,1.0.0.201009171510]" /> while I need 
  something like this: <required namespace="org.eclipse.equinox.p2.iu" name="TestBundle"range="[1.0.0.201009171510,2.0.0)" /> or even this: <required namespace="org.eclipse.equinox.p2.iu" name="TestBundle" range="1.0.0.201009171510" 
  /> (which means any version > 
  1.0.0.201009171510)
 
  The 
  .product file format does not support a way to specify a range for its 
  components, only an attribute for a fixed version. The product publisher also 
  has no notion how to generate version ranges  it simply sets the range 
  boundaries equal to the component version (see method AbstractPublisherAction.createIURequirements() for reference). So far, I cannot find a way how to 
  workaround this issue and in my opinion it as a limitation of the product 
  definition concept.
  Why is this so important ? The use case is like this: I am 
  developing a product consisting of several components which is getting 
  published on an update site on a regular basis. The components receive 
  frequent updates in the p2 repository and their versions are incremented which 
  is reflected in the requirements of the published product. However, once I 
  install this product, I cannot apply updates to the system any more. The 
  updates are refused because version ranges of the requirements for the 
  installed and the updated products do not intersect which seems to make them 
  incompatible.
  This 
  wouldnt be the case if it was possible to define open ranges in the product 
  file. For example, the installed product would require a specific component in 
  version range [1.0.0, 2.0.0) while its new version would require it in the 
  range [1.1.0, 2.0.0). This would allow the update to pass because obviously 
  range [1.1.0, 2.0.0) is compatible with (falls into) range [1.0.0, 2.0.0). The 
  way they are generated now is [1.0.0, 1.0.0] for the old product and 
  [1.1.0,1.1.0] for the new one. Since these two ranges do not intersect, the 
  update is not possible.
  In short, I have two issues and hope to receive some advice from 
  you how to address them: 
  
    
      
        
          - Is it possible to define a product with 
          extended version ranges of its components ? 
          
 - What makes product versions compatible 
          for update ? Why changed version requirements, which come as a natural 
          result of the publishing process, do not allow the product to get 
          updated to the higher version of its included components 
        ?
     
  Best regards, Shenny
  _______________________________________________ p2-dev mailing 
  list p2-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/p2-dev
  _______________________________________________ p2-dev mailing 
  list p2-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/p2-dev
  <repository1.zip><repository2.zip>_______________________________________________ p2-dev 
  mailing list p2-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/p2-dev _______________________________________________ p2-dev mailing 
  list p2-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/p2-dev
  _______________________________________________ p2-dev 
  mailing list p2-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/p2-dev
  _______________________________________________ p2-dev 
  mailing list p2-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/p2-dev
    
 |