`Chamberlain et al.
`
`USOO6735766 B1
`(10) Patent No.:
`US 6,735,766 B1
`(45) Date of Patent:
`May 11, 2004
`
`(54) METHOD AND COMPUTER-READABLE
`MEDIUM FOR INSTALLING AN UPGRADE
`TO AN APPLICATION PROGRAM
`
`6,009.274 A * 12/1999 Fletcher et al. ............. 395/712
`6,189,146 B1
`2/2001 Misra et al. ................ 717/178
`6,202,207 B1
`3/2001 Donohue .................... 717/178
`
`OTHER PUBLICATIONS
`(75) Inventors: Benjamin C. Chamberlain, Redmond,
`Kelly, M., “Gain Control of Application Setup and Mainte
`WA (US); Robert C. Collie, Redmond,
`nance with the New Windows Installer,” Microsoft Systems
`WA (US); Darrin N. Hatakeda,
`Journal, Sep. 1998, pp. 15-27.
`Redmond, WA (US)
`(73) Assignee: Microsoft Corporation, Redmond, WA * cited by examiner
`(US)
`Primary Examiner Tuan Dam
`ASSistant Examiner-Chuck Kendall
`-
`Subject to any disclaimer, the term of this
`(74) Attorney, Agent, or Firm-Christensen O'Connor
`patent is extended or adjusted under 35
`Johnson Kindness PLLC
`U.S.C. 154(b) by 0 days.
`
`(*) Notice:
`
`(21) Appl. No.: 09/261,863
`(22) Filed:
`Mar. 3, 1999
`7
`(51) Int. Cl.' .................................................. G06F 9/44
`(52) U.S. Cl. ....................... 717/173; 717/177, 709/203;
`709/218; 709/219
`(58) Field of Search ........................... 717/11, 168-178;
`709/201-203, 218, 219
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`5,586,304 A * 12/1996 Stupek, Jr. et al. ......... 395/712
`5,600834. A * 2/1997 Howard ............
`... 707/201
`5.675,831. A 10/1997 Caputo...................... 710/10
`5,732.275 A
`3/1998 Kullicket al. .
`... 395/712
`5,742,829. A
`4/1998 Davis et al. .................. 717/11
`5,764.992 A * 6/1998 Kullick et al. .
`... 395/712
`5,953,533 A * 9/1999 Fink et al. .....
`717177
`5,966,540 A * 10/1999 Lister et al. ...
`... 395/712
`5.991,774. A * 11/1999 Tate et al. .................. 717/168
`
`ABSTRACT
`(57)
`A method and computer-readable medium for upgrading an
`application program, and making an installer program aware
`that an application has been upgraded is disclosed. The
`method recognizes that an upgrade to the application has
`been initiated. The upgrade includes an identifier for the
`application to be upgraded, as well as information required
`for the installer to perform the upgrade. The installer pro
`gram accesses the upgrade information, which includes
`instructions necessary for installing the upgrade. The
`installer program also accesses information related to the
`installed state of the application and related applications.
`The installer program determines whether or not the upgrade
`should be performed. If the upgrade should be performed,
`the installer program performs the upgrade and Stores the
`fact that the application has been upgraded. If the application
`should not be upgraded, the installer program Stores infor
`mation reflecting the fact that the upgrade is available but
`not installed.
`
`7 Claims, 10 Drawing Sheets
`
`
`
`140
`142
`144
`146
`148
`
`150
`52
`154
`
`160
`162
`164
`
`170
`
`180
`
`UPGRADE INSTALLATIONFILE
`
`PROPERTY TABLE
`a PRODUCT CODE
`LPGRADE CODE
`VERSION IDENTIFIER
`LANGUAGE CODE
`
`FILEIDENTIFIER LIST (LIST OF FILESTO INTALL)
`o FLE NAME
`FOREACHFILE
`a FILE VERSION NUMBER / TO INSTALL
`
`REGISTRYLIST
`a REGISTRY KEY
`O REGISTRY WALLE
`
`FOREACH REGISTRY
`KEY TO BE LIPDATED
`
`IPGRADE TABLE (INSTRICTIONS FOR REMOVING
`EXISTING PRODUCTS)
`(FIG. 4.B.)
`
`ACTION LIST (INSTRUCTIONS FOR INSTALLATION)
`SEE EXAMPLE (FIG. 4C)
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 1 of 20
`
`
`
`US. Patent
`
`May 11,2004
`
`Sheet 1 0f 10
`
`US 6,735,766 B1
`
`6R
`
`NVM
`
`m_mmmviyumam_kw_
`
`wlwEMUEMMEE
`
`
`
`OHQBV0mm:
`
`
`
`MEAVQVmmEaQRZN
`
`flmlw
`
`UZwmmmUO-n~
`
`mHE’S
`
`Efimxm
`
`302,63
`
`NM
`
`#5.»Emma
`NU<§EZ~
`EOENZ
`NUaanMHHZH
`NOVEHHZH
`
`HSUHHAO
`
`UHHMZUE
`
`gag
`
`EDMED
`
` >-Hm~wm-
`
`MEDDE
`
`EPEQ
`
`mu<n-~m~h2~
`
`Sikmhm
`
`CISCO SYSTEMS, INC. / Page 2 of 20
`
`EX.1022
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 2 of 20
`
`
`
`
`
`
`
`
`U.S. Patent
`
`May 11, 2004
`
`Sheet 2 of 10
`
`US 6,735,766 B1
`
`
`
`
`
`
`
`
`
`
`
`
`MODULE
`NEW
`
`CHANGESTO
`APPLICATION
`PROGRAMMODUILE
`SMALL
`
`AUTHOR INSTALL
`DATA AND
`INSTRUCTIONS
`
`IS
`UIPGRADE
`PESIRED
`
`AUTHOR
`LIPGRADE
`INSTALL DATA
`AND
`INSTRUCTIONS
`(FIG. 3)
`
`
`
`
`
`ALTHOR PATCH
`INSTALL IDATA
`AND
`INSTRUCTIONS
`
`Fig.2.
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 3 of 20
`
`
`
`U.S. Patent
`
`May 11, 2004
`
`Sheet 3 of 10
`
`US 6,735,766 B1
`
`./ 110
`
`122
`
`126
`
`130
`
`START
`
`OPEN UIPGRADE INSTALLATION
`FILE
`
`GENERATE PRODUCT CODE
`
`CREATE PROPERTY TABLE AND
`STORE IN UIPGRADE
`INSTALLATION FILE
`
`STORE FILE IDENTIFIER LIST IN
`UIPGRADE INSTALLATION FILE
`
`STORE REGISTRY INFORMATION
`IN UIPGRADE INSTALLATION FILE
`
`GENERATE UIPGRADE TABLE AND
`STORE IN LIPGRADE
`INSTALLATION FILE
`
`GENERATEACTION LISTAND
`STORE IN UIPGRADE
`INSTALLATION FILE
`
`CREATE UIPGRADE INSTALLATIO
`PACKAGE (UIPGRADE
`INSTALLATION FILE, PROGRAM
`APPLICATION FILES)
`
`
`
`134
`
`MAKE UIPGRADE INSTALLATION
`PACKAGE AVAILABLE TO USERS
`
`120
`
`124
`
`128
`
`132
`
`136
`
`Fig. 3.
`
`RETURN
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 4 of 20
`
`
`
`U.S. Patent
`
`May 11, 2004
`
`Sheet 4 of 10
`
`US 6,735,766 B1
`
`
`
`140
`142
`144
`146
`148
`
`150
`152
`154
`
`160
`162
`164
`
`170
`
`180
`
`UIPGRADE INSTALLATION FILE
`
`PROPERTY TABLE
`O PRODUCT CODE
`O LIPGRADE CODE
`o VERSION IDENTIFIER
`LANGUAGE CODE
`
`FILE IDENTIFIER LIST (LIST OF FILES TO INTALL)
`O
`FILE NAME
`FOREACH FILE
`O FILE VERSION NUMBER TO INSTALL
`
`REGISTRY LIST
`O REGISTRY KEY
`O REGISTRY VALUIE
`
`FOREACH REGISTRY
`KEY TO BE LIPDATED
`
`LIPGRADE TABLE (INSTRUCTIONS FOR REMOVING
`EXISTING PRODUCTS)
`(FIG. 4B.)
`
`ACTION LIST (INSTRUCTIONS FOR INSTALLATION)
`SEE EXAMPLE (FIG. 4C.)
`
`Fig. 4A.
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 5 of 20
`
`
`
`U.S. Patent
`
`May 11, 2004
`
`Sheet 5 of 10
`
`US 6,735,766 B1
`
`
`
`00Z
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 6 of 20
`
`
`
`U.S. Patent
`
`May 11, 2004
`
`Sheet 6 of 10
`
`US 6,735,766 B1
`
`180 -1
`
`
`
`182
`
`184
`
`186
`
`188
`
`Find Related Products
`
`InstallFiles
`
`Migrate FeatureSettings
`RemoveExistingProducts
`
`Fig. 4C.
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 7 of 20
`
`
`
`US. Patent
`
`aM
`
`4002
`
`07
`
`US 6,735,766 B1
`
`_______
`
`_
`
`mam>-Hm~wm-
`
`:Emhm
`
`Swam¥m
`
`"9E§mmo
`/Q-O\S/mUHMn~O/m§wOMA/U
`mvamiummm/WHOOHUZHMOOMA
`
`
`u,S0555
`
`_$5305
`
`ymm
`
`__________
`
`0mmHm8
`2560mm%SSEmmflfiefi
`w>5E5§E<
`AZMMOHV Evflhmk
`lbs/EM-
`
`AfimdflmmmOH.EvflAZMMOHV
`AgogOHEh<a~
`
`EN
`
`EN
`
`mthEEOU
`
`eN
`
`HNN
`
`mm
`
`a0?»ENG?»
`
`mHNMUMSOmMU§U<A~
`
`a6.5
`
`Hm
`
`CISCO SYSTEMS, INC. / Page 8 of 20
`
`EX.1022
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 8 of 20
`
`
`
`
`
`U.S. Patent
`
`May 11, 2004
`
`Sheet 8 of 10
`
`US 6,735,766 B1
`
`RECEIVE LIPGRADE
`NOTIFICATION
`
`300
`
`OPEN UIPGRADE
`INSTALLATION
`
`312
`
`GET ACTION LIST
`
`PRODUCTS
`INSTALLED
`2
`
`
`
`
`
`
`
`UIPGRA
`INSTALLED
`2
`
`
`
`
`
`
`
`ARE
`THERE MORE
`ACTIONS TO
`PROCESS
`?
`
`NO
`
`STORE
`IPGRADE
`INSTALLATION
`FILE
`
`PROCESS NEXT
`ACTION
`(FIG. 7)
`
`
`
`REGISTER
`UIPGRADED
`PRODUCT
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Fig.6.
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 9 of 20
`
`
`
`US. Patent
`
`May 11,2004
`
`Sheet 9 0f 10
`
`US 6,735,766 B1
`
`20:?aGE
`
`Ecxmm
`
`
`nfimmsamzEBESEEsmammWEEEEEQE
`
`SECURE”SENSEESE:SEESczafimQZE
`
`
`
`wmm.cmmon
`
`NNm
`
`
`
`mm:mm»mm»mm»
`
`3m
`
`0“.%NM
`
`a
`
`Oa.
`
`6>-Hm~Um-
`
`5mm1PM
`
`
`
`who:DOMQ
`
`ZOHHU<a
`
`EOEMM
`
`QZHHmUmm
`
`«mHUBQOan
`
`wmm.
`
`manma“6%Sm
`
`mm
`
`ZOPHva
`
`HH<Qn~B
`
`02O2
`
`ma
`
`20:.va
`
`HHflHmZH
`
`ZOWUfl
`
`
`
`UZEmHNmQZHH
`
`CISCO SYSTEMS, INC. / Page 10 of 20
`
`EX.1022
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 10 of 20
`
`
`
`
`
`U.S. Patent
`
`May 11, 2004
`
`Sheet 10 Of 10
`
`US 6,735,766 B1
`
`START
`
`-/ 334
`
`340
`
`
`
`
`
`ARE
`THERE MORE
`LPGRADE TABLE
`ENTRIE S
`
`
`
`YES
`
`342
`
`NO
`
`RETURN
`
`NO
`
`YES
`
`YES
`
`344
`
`NO
`
`GET INSTALLATION
`FILE FOR PRODUCT
`TO BE REMOVED
`
`GENERATE
`INSTRUCTIONS FOR
`REMOVING PRODUIC
`
`REMOVE PRODUCT
`
`346
`
`48
`
`350
`
`Fig.8.
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 11 of 20
`
`
`
`US 6,735,766 B1
`
`1
`METHOD AND COMPUTER-READABLE
`MEDIUM FOR INSTALLING AN UPGRADE
`TO AN APPLICATION PROGRAM
`
`FIELD OF THE INVENTION
`This invention relates generally to the installation of
`Software applications on a computer System, and more
`Specifically, to upgrading a Software application program on
`a computer System.
`
`2
`application. However, the upgrade does not modify the
`configuration database to make the installer program aware
`of the existence of the new program file. In addition, the
`installer program is unable to update its configuration data
`base to reflect the existence of the new file because the
`upgrade and new file were not installed by the installer
`program. The result is that the installer program is unaware
`that the new program file was added, So any additional
`functionality provided by the installer program is unavail
`able for that new program file. For example, the installer
`program is unable to Verify the existence of the new program
`file if requested by the application.
`Another problem with traditional methods of upgrading
`Software applications is that they may not be able to properly
`upgrade an uninstalled or partially-installed application. At
`installation, the user may choose not to install all of the
`features of an application, but rather delay the installation of
`certain features until they are actually used. The installer
`program may provide an application with the ability to offer
`the feature as available although the feature is not installed
`(“advertising” the feature). When the user or application
`attempts to access that feature for the first time, the installer
`program automatically installs the advertised feature. This
`reduces the amount of Storage Space consumed by features
`of an application that are not initially used.
`Yet another problem with traditional upgrades is that there
`is not a Standard. This forces authors to create custom
`upgrade logic. This in itself is a significant problem,
`however, the problem is compounded in that this custom
`logic trickles down to the user. This means that upgrades of
`different products may have different installation procedures
`from the perspective of a user.
`Accordingly, there exists a need in the art for an improved
`method of upgrading a Software program that provides
`standardization from the perspective of both the author of
`the upgrade and the user installing the upgrade. In addition,
`a need exists for a method of upgrading a Software program
`that can determine if any older versions of the Software
`program are installed and act accordingly. Furthermore, the
`actions taken, i.e., current install State of the Software
`program, should be stored.
`SUMMARY OF THE INVENTION
`The present invention is directed to a method, and
`computer-readable medium for upgrading an application
`using an installer program. The installer program recognizes
`that an upgrade to the application has been initiated. The
`upgrade includes an identifier for the application to be
`upgraded, as well as information required for the installer to
`perform the upgrade. The installer program accesses the
`upgrade information which includes instructions necessary
`for installing the upgrade. The installer program also
`accesses information related to the installed State of the
`application and related applications. The installer program
`determines whether or not the upgrade should be performed.
`If the upgrade should be performed, the installer program
`performs the upgrade and Stores the fact that the application
`has been upgraded. Preferably, this is accomplished by
`unregistering the previously installed application and regis
`tering the upgrade, i.e., newly installed application.
`In accordance with other aspects of the invention, the
`application is identified using a unique identifier known as
`a product code. Alternatively, the application is identified
`using a product-identifying triplet composed of an upgrade
`code, a version number, and a language code.
`In accordance Still other aspects of the invention, the
`installer program determines if there are newer versions of
`
`BACKGROUND OF THE INVENTION
`Software application installation is an area of increasing
`importance. Unfortunately, existing installation technolo
`gies fail to address all of a computer user's needs. Most
`installation technologies are simply brute-force mechanisms
`for copying program files from one location to another. Only
`one known installer program, Microsoft Windows Installer,
`developed by Microsoft Corporation, Redmond,
`Washington, even comes close. For a description of
`Microsoft Windows Installer, see Kelly, Mike, “Gain Con
`trol of Application Setup and Maintenance with the New
`Windows Installer, Microsoft Systems Journal, pp. 15-27,
`September 1998.
`The one installer program that comes closes to addressing
`all of a computer user's needs manages the installation of an
`application So that information related to of each of the
`application's resources is Stored in a “configuration data
`base.” The configuration database may be registry keys
`within a System registry, or it may be a Stand-alone database.
`The stored information includes, but is not limited to, the
`installed State of the application, i.e., what features of the
`application are or are not installed, whether the application
`should be run locally or run from a Source, paths to the
`program files of the application, whether features are “adver
`tised” (i.e., available but not installed), etc. The stored
`information is Stored at install time and is used by the
`installer program to ensure that an application always has
`available the resources that it expects or that the user
`requests. For instance, one function of the installer program
`is to Verify the existence of a resource needed by the
`application. When the application requests a path to a
`program file, the installer program verifies the existence of
`that program file at the expected location Stored in the
`configuration database. If, for Some unexpected reason, the
`program file does not exist at the expected location, the
`installer program installs the program file prior to returning
`its path to the application. The installer program continually
`updates the configuration database if any changes are made
`to the installed State of the application.
`Once installed, there may be a need to change an appli
`cation. Generally Speaking, changes to an application may
`be minor, in which case a patch is desirable, or changes may
`be more significant, in which case an upgrade is desirable.
`For example, patching may be performed if an application is
`in need of a Service release or update to remedy a program
`ming bug or other infirmity, whereas an upgrade will be
`performed for a new release. The present invention is
`directed to upgrades, as opposed to patches. There are
`Several problems with traditional methods of upgrading
`Software applications.
`First, traditional methods of upgrading Software applica
`tions modify the resources of the application, but do not
`modify the configuration database maintained by the
`installer program to reflect those modifications. For
`example, an upgrade will often add a new program file to the
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 12 of 20
`
`
`
`3
`the product installed. If there are newer versions of the
`product installed, a default is Set So that the upgrade is not
`installed. Preferably, this default can be overridden. If there
`are not newer versions of the application installed, the
`upgrade should be installed.
`In accordance with further aspects of the invention, the
`installer program checks to See if there are previous versions
`of the product or related products installed. If there are
`previous versions of the product or related products
`installed, the installer program determines if the upgrade can
`coexist with the previous version or related products. If the
`upgrade can not coexist with previous versions of the
`product or related products, the previous version or related
`products that can not coexist with the application upgrade,
`are removed. Preferably, the installer program presents the
`user options based on this information. For example, if two
`products can not coexist, a message is displayed to the user.
`The user can decide whether to remove the installed version
`of the product and install the upgrade, or cancel the upgrade
`without removing the installed version of the product.
`In accordance with Still further aspects of the invention,
`the upgrade includes an upgrade table. The upgrade table
`includes a list of entries for products related to the applica
`tion upgrade. Each entry provides directions Specifying how
`the related product is to be treated. For example, whether
`previous products or related products can coexist with the
`upgrade. Preferably, each upgrade table entry includes: an
`upgrade code; a Version number; a language code and an
`attribute field. An example attribute field is a coexist value.
`BRIEF DESCRIPTION OF THE DRAWINGS
`The foregoing aspects and many of the attendant advan
`tages of this invention will become more readily appreciated
`as the same becomes better understood by reference to the
`following detailed description, when taken in conjunction
`with the accompanying drawings, wherein:
`FIG. 1 is a block diagram of a general purpose computer
`System Suitable for implementing the present invention;
`FIG. 2 is a flow diagram illustrating the Overall logic used
`by an author to provide Set-up information to be used by an
`installer program formed in accordance with the present
`invention;
`FIG. 3 is a flow diagram illustrating in detail the logic of
`authoring upgrade data and instructions,
`FIG. 4A is a pictorial representation of an exemplary
`upgrade installation file;
`FIG. 4B is a pictorial representation of an upgrade table
`included in the upgrade installation file of FIG. 4A;
`FIG. 4C is an example action list included in the upgrade
`installation file of FIG. 4A;
`FIG. 5 is a System diagram of a computer environment
`including an exemplary installer program and associated
`programs and resources for installing an upgrade contained
`on a CD-ROM;
`FIG. 6 is a flow diagram illustrating the overall logic
`performed by an installer program for upgrading an appli
`cation program module performed in accordance with the
`present invention;
`FIG. 7 is a flow diagram illustrating in detail the logic of
`processing an upgrade action; and
`FIG. 8 is a flow diagram illustrating in detail the logic of
`the action of removing existing products.
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENTS
`The present invention is directed to a method and
`computer-readable medium for upgrading a Software appli
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 6,735,766 B1
`
`4
`cation and providing an installer program with notice of an
`upgrade's existence So that the installer program can modify
`a configuration database to reflect the upgrade. Simply
`Stated, the present invention makes the installer program
`upgrade-aware So that should the user or application make or
`require any changes to the installed State of the application,
`the installer program will be able to operate on the System
`resources with knowledge that the application has either
`been upgraded, or that an upgrade is present for the appli
`cation. Briefly described, the present invention provides a
`mechanism by which the launching of an upgrade file, is
`passed to the installer program and the installer program
`takes control of installing the upgrade. In this manner, the
`installer program is able to Store information related to the
`upgrade to ensure the proper operation of the installer
`program and proper upgrading of the application.
`Exemplary Operating Environment
`FIG. 1 and the following discussion are intended to
`provide a brief, general description of a Suitable computing
`environment in which the invention may be implemented.
`While the invention will be described in the general context
`of an application program that runs on an operating System
`in conjunction with a personal computer, those skilled in the
`art will recognize that the invention also may be imple
`mented in combination with other program modules.
`Generally, program modules include routines, programs,
`components, data Structures, etc., that perform particular
`tasks or implement particular abstract data types. Moreover,
`those skilled in the art will appreciate that the invention may
`be practiced with other computer System configurations,
`including hand-held devices, multiprocessor Systems,
`microprocessor-based or programmable consumer
`electronics, minicomputers, mainframe computers, and the
`like. The invention may also be practiced in distributed
`computing environments where tasks are performed by
`remote processing devices that are linked through a com
`munications network. In a distributed computing
`environment, program modules may be located in both local
`and remote memory Storage devices.
`With reference to FIG. 1, an exemplary system for imple
`menting the invention includes a conventional personal
`computer 20, including a processing unit 21, a System
`memory 22, and a System buS 23 that couples the System
`memory to the processing unit 21. The System memory 22
`includes read-only memory (ROM) 24 and random access
`memory (RAM) 25. Abasic input/output system 26 (BIOS),
`containing the basic routines that help to transfer informa
`tion between elements within the personal computer 20,
`such as during start-up, is stored in ROM 24. The personal
`computer 20 further includes a hard disk drive 27, a mag
`netic disk drive 28, e.g., to read from or write to a removable
`disk 29, and an optical disk drive 30, e.g., for reading a
`CD-ROM disk 31 or to read from or write to other optical
`media. The hard disk drive 27, magnetic disk drive 28, and
`optical disk drive 30 are connected to the system bus 23 by
`a hard disk drive interface 32, a magnetic disk drive inter
`face 33, and an optical drive interface 34, respectively. The
`drives and their associated computer-readable media provide
`nonvolatile Storage for the personal computer 20. Although
`the description of computer-readable media above refers to
`a hard disk, a removable magnetic disk and a CD-ROM disk,
`it should be appreciated by those skilled in the art that other
`types of media which are readable by a computer, Such as
`magnetic cassettes, flash memory cards, digital Video disks,
`Bernoulli cartridges, and the like, may also be used in the
`exemplary operating environment.
`A number of program modules may be Stored in the drives
`and RAM 25, including an operating System 35, one or more
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 13 of 20
`
`
`
`US 6,735,766 B1
`
`1O
`
`15
`
`25
`
`35
`
`40
`
`S
`application programs 36, other program modules, Such as an
`installer program 37 in accordance with an exemplary
`embodiment of the present invention, and program data,
`Such as a configuration database 38 associated with the
`installer program 37. The operating system 35 may include
`a system registry 39. In this embodiment, the invention may
`reside within the installer program 37 and the configuration
`database 38. A user may enter commands and information
`into the personal computer 20 through a keyboard 40 and
`pointing device, Such as a mouse 42. Other input devices
`(not shown) may include a microphone, joystick, game pad,
`Satellite dish, Scanner, or the like. These and other input
`devices are often connected to the processing unit 21
`through a Serial port interface 46 that is coupled to the
`System bus, but may be connected by other interfaces, Such
`as a game port or a universal serial bus (USB). A monitor 47
`or other type of display device is also connected to the
`System buS 23 via an interface, Such as a Video adapter 48.
`In addition to the monitor, personal computers typically
`include other peripheral output devices (not shown), Such as
`Speakers or printers.
`The personal computer 20 may operate in a networked
`environment using logical connections to one or more
`remote computers, Such as a remote computer 49. The
`remote computer 49 may be a Server, a router, a peer device
`or other common network node, and typically includes many
`or all of the elements described relative to the personal
`computer 20, although only a memory Storage device 50 has
`been illustrated in FIG.1. The logical connections depicted
`in FIG. 1 include a local area network (LAN) 51 and a wide
`area network (WAN) 52. Such networking environments are
`commonplace in offices, enterprise-wide computer
`networks, intranets and the Internet.
`When used in a LAN networking environment, the per
`sonal computer 20 is connected to the LAN 51 through a
`network interface 53. When used in a WAN networking
`environment, the personal computer 20 typically includes a
`modem 54 or other means for establishing communications
`over the WAN 52, Such as the Internet. The modem 54,
`which may be internal or external, is connected to the System
`bus 23 via the serial port interface 46. In a networked
`environment, program modules depicted relative to the
`personal computer 20, or portions thereof, may be Stored in
`the remote memory storage device 50. It will be appreciated
`that the network connections shown are exemplary and other
`means of establishing a communications link between the
`computerS may be used.
`Discussion of Terminology
`Before discussing FIG. 2, a brief discussion of terminol
`ogy is needed. In accordance with an exemplary embodi
`ment of the present invention, the installer program module
`37 recognizes three principal elements: products, features
`and components. A "product” represents a Single, entire
`application program, such as the “MICROSOFT WORD"
`application program marketed by MicroSoft Corporation of
`Redmond, Washington. Each product has a globally unique
`identifier known as a Product Code that allows each product
`to be distinguished. Each product is made up of one or more
`features. A feature is a granular piece of the product that a
`user may choose to install or execute. Features typically
`correspond roughly to the functional features of the product
`itself, such as a “Proofing Tools' feature. Each feature is
`essentially a grouping of components and may also include
`other features. Features need not be globally unique, and
`therefore may be identified by any appropriate means, Such
`as with a textual feature identifier.
`A component is a collection of resources, Such as files or
`registry keys, that are all installed or uninstalled as a unit.
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`Components are the building blocks of the product that are
`not exposed to the user. A resource, Such as a file or a registry
`key, may be part of only one component. Two components
`may not share the same resource whether they are part of the
`Same product or parts of different products. Each component
`has a globally unique identifier known as a Component
`Code. One resource within the component is designated as
`a key file. The key file may be any resource, Such as a file
`or registry key, within the component.
`Authoring Upgrade Installation Data and Instructions
`FIG. 2 is a flow diagram illustrating the logic used by the
`author of data to be used by an installer program. A preferred
`installer program, installs new applications, installs
`upgrades to installed applications, and installs patches to
`installed applications. The flow diagram of FIG. 2 illustrates
`the overall logic used by an author to generate Setup infor
`mation (i.e., install data and instructions) for any of the
`above. It will be appreciated that the actual changes to or
`creation of the application program module are assumed to
`have occurred independently of (preferably before) the logic
`shown in FIG. 2.
`The logic of FIG. 2 moves from a start block to decision
`block 100 where a test is made to determine if the applica
`tion program module is a new program module. If So, the
`logic moves to block 102 where install data and instructions
`are authored. Included with the install data and instructions
`are a product code and a product-identifying triplet com
`posed of an upgrade code, a version number, and a language
`code. The product code is a unique identifier that is used for
`identification of a product. For example, the product code is
`used to determine if a patch should be applied to the product.
`The product-identifying triplet also uniquely identifies the
`product, however, it also allows for products to be distin
`guished as groups. The product-identifying triplet is used
`during the upgrade process, for example to determine which
`related products should be removed. Use of the product
`identifying triplet with respect to the installation of a product
`upgrade is discussed in more detail later. Install data and
`instructions, while very similar to upgrade data and
`instructions, are not the Subject of the present invention, and
`are not discussed in further detail. Install data and instruc
`tions are included and/or referenced in an installation file.
`If the application program module is not new, the logic
`moves from decision block 100 to decision block 104 where
`a test is made to determine if the changes to the application
`program module are Small. Generally Speaking, Small
`changes are implemented via a patch, while large changes
`are implemented via an upgrade. However, an author may
`implement a Small change via an upgrade. It will also be
`appreciated that large changes can be implemented using a
`patch. However, this is not preferable, and is therefore not
`shown in FIG. 2. A distinction between patches and
`upgrades is that patches generally just make changes to the
`existing Set of features and files, whereas an upgrade gen
`erally adds new features and components. If in decision
`block 104 it is determined that the changes to the program
`module are small, the logic moves to decision block 106
`where a test is made to determine if an upgrade is desired.
`If so, the logic moves to block 110, which is described
`below. If not, the logic moves to block 108 where patch
`install data and instructions are authored. Patch install data
`and instructions, although Similar to upgrade data and
`instructions as mentioned above, are not the Subject of this
`invention, and are therefore not described in further detail.
`Patch install data and instructions are included in a patch
`package.
`If in decision block 104 it is determined that changes to
`the application program are not Small, or if changes are
`
`Ex.1022
`CISCO SYSTEMS, INC. / Page 14 of 20
`
`
`
`7
`Small, but the author desires an upgrade (yes in decision
`block 106), the logic moves to block 110 where upgrade
`install data and instructions are authored. The logic of block
`110 is illustrated in detail in FIG. 3, and discussed below.
`After installation data and instructions have been authored
`(block 102), patch data and instructions have been authored
`(block 108), or upgrade data and instructions have been
`authored (block 110), the logic of FIG. 2 ends.
`Install data and instructions are included in and/or refer
`enced by an installation file. The logic of authoring upgrade
`install data and instructions (FIG. 3) moves from a start
`block to block 120 where an upgrade installation file is
`opened. An example of an upgrade installation file is illus
`trated in FIG. 4A, and described below. Next, in block 122,
`a product code for the product to be upgraded is generated.
`Preferably, a facility is available for an author to generate a
`unique product code, Such as through an application pro
`gramming interface (API) call made available as part of a set
`of authoring tools used to create the upgrade install data and
`instructions. Alternatively, a product code may be Selected
`from a list of reserved product codes. The logic then moves
`to a block 124 where a property table is created and stored
`in the upgrade installation file.
`Referring to FIG. 4A, the property table 140 includes a
`product code 142, an upgrade code 144, a version identifier
`146, and a language code 148 for this particular product. The
`product code of FIG. 4A is the unique product code gener
`ated in block 122 of FIG. 3. The product code is equivalent
`to a product-identifying triplet consisting of an upgrade
`code, a version identifier, and a language code. The product
`code and product-identifying triplet allow other products to
`install Subsequent patches and upgrades, respectively.
`Returning to FIG. 3, after the property table has been
`Stored in the upgrade installation file, a file identifier list is
`stored in the upgrade installation file in block 126. As shown
`in