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.