throbber
(12) United States Patent
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket