EOL (End of Life) Components and Branching


Have you ever wondered what are those "End of Life (EOL)" components in XPE database and how they work?

When a new version of some application or component is available (e.g. Windows Media Player 9.0 or DirectX 9.0), old version of that component (e.g. WMP 8.0 or DirectX 8.0) is retired. To replace the old version of component, an EOL object for that component is added to XPE database which indicates that the component is no longer valid. EOL components are created by removing all resources (file, registry and any other resources) from the original component - they are essentially empty objects with special revision and visibility values. EOL objects have revision value of 100,000 or greater and they typically have a visibility of 0 (so you wouldn't see them under components list in TD). If your existing configuration already contains the component(s) that has been EOLed, Target designer can detect it and handle it correctly. Target Designer will show "(EOL)" at the end of component displayname - so that you can recognize that the component has been EOLed in the new version of the database.

To replace the EOLed component in the configuration with the new version of component, "Branching" is used. Components support a special branch resource that is added in EOL component (NOTE: Branch resource is only valid in an EOL object). The Branch resource contains a property, TargetVIGUID, which contains the VIGUID of a replacement component. Due to this branch resource, when you upgrade your existing configuration and go through dependency check, the new component replaces the EOL component in the configuration. The Branch resource also contains an optional MinRevision property that indicates the minimum revision level of the target component that may be used as a replacement for the current component. Following are special scenarios:

  • If MinRevision not specified or 0, any revision level may be used.
  • If the EOL component does not specify a Branch resource, then the component is dead, and has no replacement component.
  • If the EOL component specifies multiple Branch resources, then the component is replaced by all the components specified.
  • If several different EOL components specify Branch resources that all reference the same target component, these components are replaced by single new component.
Comments (3)
  1. Tim Hill says:

    Just a slight correction to EOL. In fact, the normal revision/versioning mechanisms of components can take care of upgrades such as WMP 8 to WMP 9. The primary job of an EOL was to handle the case where a "fault-line" exists between a component and its successors. For example, if WMP10 is split into distinct video and audio players, then there is no obvious 1:1 correspondance between an old and new component. So in this case an EOL component is appropriate.

  2. Harsh says:

    Thanks for clarifying Tim. You are right. EOL is used when there is no 1:1 correspondence between old and new component.

Comments are closed.

Skip to main content