The framework installation handles versions named with any string, including version names with more than four digits (for example, 9.4.1.1.0.1) or letters (for example, 9.4.acmecorp). It also handles patches that are inserted into the version sequence after subsequent versions have already been released. Each framework version installs a file called AppInfo.rul into the SERVER_INSTALL\Apps\Framework\<version>\Schema\ directory. The VERSION_LIST section of this file contains a list of all of the framework versions in sequence. The last one listed is the latest version of the framework. All installation files and routines refer to this file to get the latest version and version list. As each framework and application version is installed, the setup routines record the application name, version, and installation date in a Version Log, which is stored in the code section of eServiceSystemInformation.tcl. The installation routines that handle version comparison and tracking work as follows: - Get versions in sequence from the VERSION_LIST section of the AppInfo.rul file.
- Check whether the framework is installed.
- If the framework is not installed, start installing from the first version in the VERSION_LIST section of AppInfo.rul. After successful completion of the installation of each version, make an entry in the Version Log (eServiceSystemInformation.tcl). For example, the log for a new installation might look like this:
Framework 8-0-1-0 05-11-2010 09:41 AM
Framework 8-0-2-0 11-05-2010 09:42 AM
Framework 9-0-0-0 11-05-2010 09:43 AM
Framework 9-0-0-1 11-05-2010 09:43 AM
Framework 9-0-1-0 11-05-2010 09:44 AM
.
.
.
Framework 9-5-1-2 11-05-2010 09:50 AM
PartStructure 9-5-0-0 11-05-2010 10:15 AM
PartDefinition 9-5-0-0 11-05-2010 10:16 AM
ProfileManagement 9-5-0-0 11-05-2010 10:16 AM
EngineeringChange 9-5-0-0 11-05-2010 10:44 AM
- If a previous version of the framework is installed, then:
- Get the version of the installed framework and list it in the Version Log. For the date, enter UNKNOWN (because the new version has no way of knowing when the installed version was installed). For example:
Framework 9-0-0-0 UNKNOWN
Framework 9-0-1-2 10-29-2010 11:23 AM
Framework 9-0-2-0 10-29-2010 11:24 AM
Framework 9-0-2-1 10-29-2010 11:24 AM
EngineeringChange 9-0-3-0 UNKNOWN
EngineeringChange 9-1-0-0 11-29-2010 11:24 AM
- Check whether the installed version of the framework is in the VERSION_LIST section of AppInfo.rul for the version being installed. This is a check to see if the installing version knows about the already installed version. For example, the installing version might not know about a patch for a previous version that was released after the installing version was released. Suppose a patch for version 9.5.1.2, called 9.5.1.2.0.1, were released after version 9.5.1.4 had been released. Versions 9.5.1.3 and 9.5.1.4 will not know about the patch.
If the installed version is in the installing version's VERSION_LIST (i.e., the installing version does know about the installed version), start installing the framework from the very next version. After successful completion of each version, make an entry in the Version Log. If the installed version is not in the installing version's VERSION_LIST (i.e., the installing version does not know about the installed version), get the latest version from the Version Log that is in the installing version's VERSION_LIST (i.e., get the latest version that the installing version does know about). Start installing from the very next version. Using the example versions described above, suppose you are installing 9.5.1.4 over the 9.5.1.2.0.1 patch, which the 9.5.1.4 version doesn't know about. The installing version checks the VersionLog and finds that the latest version that is in its VERSION_LIST is 9.5.1.2. Therefore, it will begin installing with version 9.5.1.3, leaving all of the changes made by the patch intact.
|