`United States Patent
`5,752,042
`[11] Patent Number:
`
`[45] Date of Patent: May 12, 1998
`Cole et al.
`
`
`[54]
`
`SERVER COMPUTER FOR SELECTING
`PROGRAM UPDATES FOR A CLIENT
`COMPUTER BASED ON RESULTS OF
`RECOGNIZER PROGRAM(S) FURNISHED
`TO THE CLIENT COMPUTER
`
`[75]
`
`Inventors: Gary Lee Cole. Endicott; Scott Phillip
`Engieman.Vestal; Steven Michael
`Pritko. Endicott. all of N-Y.
`
`[73]
`
`Assignee:
`
`International Business Machines
`Corporation, Armonk, N.Y.
`
`[21]
`
`[22]
`
`(51]
`{52]
`
`[58]
`
`[56]
`
`Appl. No.: 659,841
`
`Filed:
`
`Jun. 7, 1996
`
`Tint, CLS once ceeccsscssesssetensceccerseeaeeenecenes GO6F 15/177
`
`U.S. Ch. we
`.. 395/712; 395/703; 395/200.49;
`395/200.51; 707/203
`Field of Search ........:csssscseseceee 395/712. 610.
`395/619, 200.01. 200.09. 703, 200.49, 200.51;
`707/203
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,558,413 12/1985 Schmidt et al.
`. 707/201
`.
`4,714,995 12/1987 Matemaetal.
`395/200.33
`....
`5,005,122
`4/1991 Griffin et al.
`707/201
`5,019,963
`5/1991 Andersonet al.
`. 707/201
`5,133,075
`7/1992 Risch...
`395/200.51
`5,155,847
`10/8992 Kirouac etal. ..
`395/201
`5,339,430
`8/1994 Lundin et al.
`...
`707/201
`5,452,448
`9/1995 Sakuraba etal.
`395/712
`5,473,772 12/1995 Halliwell et al.
`5,491,820
`2/1996 Belove et ab.
`...cccncscesserencetenes 1707/3
`5,495,610
`2/1996 Shingetal. .....
`395/200.51
`5,553,282
`9/1996 Parrish et al.
`....scsesseereverensees 707/10
`5,581,764 12/1996 Fitzgerald etal. ...
`395/703
`5.619.716
`4/1997 Nonaleaet al. snccccnonnee 395/712
`
`..ccescreeseereeee 707/203
`
`FOREIGN PATENT DOCUMENTS
`
`129407
`175641
`225724
`7295830
`
`5/1995
`7/1995
`8/1995
`11/1995
`
`Japan.
`Japan.
`Japan.
`Japan.
`
`OTHER PUBLICATIONS
`
`IBM Technical Disclosure Bulletin vol. 38, No. 12. 12-95,
`p. 479. “Disk Drive With Embedded Hyper-Text Markup
`Language Server”.
`Copies of “Surfin’ Service”transparencyfoils.
`
`Primary Examiner—Kenneth §. Kim
`Attorney, Agent, or Firm—Arthur J. Samodovitz
`
`[57]
`
`ABSTRACT
`
`A server computer selects code updates to download to a
`client computer. The server computer identifies code updates
`which are consistent with basic system characteristics of the
`client computer. Then. the server computer sends to the
`client computer one or more “recognizer” programs or one
`or more addresses outside of the client computer of the one
`or more recognizer programs which execute in the client
`computer to determine whether the client computer has a
`version other than a current version of the identified code
`updates. The client sends the results to the server computer
`which generates a list of code updates which are consistent
`with the basic system characteristics, representing programs
`that exist on the client computer for which an update would
`be appropriate. Next, the server computer sends thelist or
`information aboutthe list to the client computer. A userat the
`client computer selects from the list and sends the selections
`to the server computer. In response. the server computer
`sends addresses of the selected code updates to the client
`computer and the client computer downloads the selected
`code updates from a content server. At some later time, the
`recognizer programs corresponding to the selected code
`updates are executed again before the selected code updates
`are installed in the client computer.
`
`20280
`
`1/1993
`
`Japan .
`
`30 Claims, 6 Drawing Sheets
`
`CLIENT
`
`DOWNLOAD
`
`APPLE
`
`EXHIBIT 1002 - PAGE 0001
`
`
`
`SCOUT
`
`SERVICE
`
`CINCLUDE GUI}
`
`
` UPDATE
`
`SELECTION
`PROGRAM
`DATA BASE
`
`13
`
`33 APPLICATION|ROUTINE
`
`CONTENT SERVER
`UPDATE MANAGER
`32
`
`COCE UPDATES
`
`
`17
`
`RECOGNIZER PROGRAMS
`
`
`BASIC SYSTEM INFORMATION
`
`
`uPoATE
`[+0
`
`[roaTeE 2 [CepaTe]
`
`CODE UPDATES
`
`
`Co] Coo
`aa|
`
`
`
`U.S. Patent
`
`May 12, 1998
`
`Sheet 1 of 6
`
`5,752,042
`
`SELECTION
`SERVER
`
`UPDATE
`
`™1
`
`le
`
`woe
`
`
`
`14
`
`CLIENT cp {7
`
`TON
`
`ona
`
`4
`
`CLIENT co G
`
`YY
`
`|
`ST
`el
`
`CONTENT
`SERVER
`
`ATPn
`
`FIG. 1
`
`~
`
`.
`
`6
`
`APPLE
`
`EXHIBIT 1002 - PAGE 0002
`
`
`
`
`
`U.S. Patent
`
`May 12, 1998
`
`Sheet 2 of 6
`
`5,752,042
`
`Caafanasva@Vivd
`d3aAu3S_1LN
`NOI19314S
`Sees4d03
`SIGH)on[Svea
`
`SWVYD0NdYAZINDOISY
`WVdD0ud
`
`S3LVGdN3d023
`JLVddN
`NOTLI4145S
`ALNO3D
`enLalvaan|
`YAAYNAS
`
`Le
`
`— 9W
`
`W
`
`=z2a2qtuuer
`
`dilH
`
`dl
`
`Lh
`
`&Dis
`
`2|alLN3ITT3
`
`ANILNOY|NOILVITIddv
`
`
`QVOINMOOQSDTAYSS
`
`—(INDSQNTNTI)
`
`ceYSDVNVYWSiVvddn
`
`APPLE
`
`EXHIBIT 1002 - PAGE 0003
`
`
`
`
`
`
`
`US. Patent
`
`May12, 1998
`
`Sheet 3 of 6
`
`5,752,042
`
`CLIENT
`
`SELECTION SERVER
`
`CONNECT TO SERVER.
`SUPPLY CURRENT LEVEL
`INFORMATION.
`
`104
`
`106
`
`107
`
`GENERAL MANAGER DETERMINES CURRENCY OF
`UPDATE MANAGER, SCOUT, SERVICE APPLICATION
`AND DOWNLOAD ROUTINE.
`
`
`
`
`
`
`
`SEND FTP ADDRESSES FOR BASIC SYSTEM -
`
`INFORMATION RECOGNIZER PROGRAM
`
`(AND FTP ADDRESSES FOR UPDATE MANAGER,
`SCOUT, SERVICE APPLICATION AND
`DOWNLOAD ROUTINE,
`IF NEEDED).
`
`
`
`
` (DOWNLOAD AND INSTALL UPDATE
`
`MANAGER, SCOUT, SERVICE
`
`
`APPLICATION AND DOWNLOAD
`ROUTINE,
`IF FTP ADDRESSING
`
`
`PROVIDED).
`
`
`DOWNLOAD AND EXECUTE
`BASIC SYSTEM INFORMATION
`RECOGNIZER PROGRAM.
`
`SEND BASIC SYSTEM
`INFORMATION TO SERVER.
`
`108
`
`109
`
`©
`
`112°
`
`uy"
`
`11d
`
`TTNVOKE SELECTION UPDATE PROGRAM.
`
`IDENTIFY CODE UPDATES CONSISTENT WITH
`BASIC SYSTEM INFORMATION.
`
`SEND FTP ADDRESSES FOR CORRESPONDING
`RECOGNIZER PROGRAMS TO CLIENT.
`
`STEP
`
`FIG. 31a)
`
`APPLE
`
`EXHIBIT 1002 - PAGE 0004
`
`
`
`
`
`US. Patent
`
`May 12, 1998
`
`Sheet 4 of 6
`
`5,752,042
`
`STEP
`116
`
`OBTAIN AND EXECUTE RECOGNIZER
`PROGRAMS FOR UPDATES.
`
`SEND RESULTS OF RECOGNIZER
`
`PROGRAMS TO SERVER.:
`
`118
`
`120
`
`IDENTIFY CRITICALITY OF APPROPRIATE
`CODE UPDATES.
`
`122
`
`SEND SELECTION FORM
`
`124
`
`USER SELECTS UPDATES FROM
`SERVER CATEGORIES OR LIST.
`
`130
`
`SEND SELECTION TO SERVER.
`
`13]
`
`SERVER RETURNS FTP ADDRESSES FOR
`SELECTED UPDATES.
`
`132
`
`OBTAIN SELECTED UPDATES
`FROM CONTENT SERVER.
`
`RE-EXECUTE RECOGNIZER
`PROGRAMS. OBTAIN AND
`INSTALL SELECTED
`UPDATES,
`IF STILL NEEDED.
`
`
`
`
`
`FIG. 3 (b)
`
`
`
`133
`
`134
`
`APPLE
`
`EXHIBIT 1002 - PAGE 0005
`
`
`
`
`
`US. Patent
`
`May 12, 1998
`
`Sheet 5 of 6
`
`5,752,042
`
`40
`
`200
` DOES FILE
`ABCDE.DRV.
`EXIST IN
`CLIENT ?
`
`
`
`
`
`
`
`
`RECORD THAT CLIENT IS
`RECORD THAT CLIENT IS
`CANDIDATE FOR FILE
`NOT CANDIDATE FOR
`
`
`FILE ABCDE.DRV UPDATE.
`ABCDE.DRV UPDATE.
`
`
`
`
`
`GET SIZE OF FILE
`ABCDE .DRV.
`
`DOES FILE
`SIZE EQUAL
`META DATA ?
`
`FIG. 4
`
`APPLE
`
`EXHIBIT 1002 - PAGE 0006
`
`
`
`
`
`U.S. Patent
`
`May12, 1998
`
`Sheet 6 of 6
`
`5,752,042
`
`42
`
`300
` IS NETCOMBER
`
`APPLICATION IN
`REGISTRY
`
`
`GET RELEASE LEVEL
`FROM REGISTRY.
`
`
`
`IS RELEASE
`LEVEL LESS
`THAN 2.0 ?
`
`
`
`
`
`
`RECORD THAT CLIENT IS
`RECORD THAT CLIENT IS
`
`NOT CANDIDATE FOR
`CANDIDATE FOR NETCOMBER
`
`
`NETCOMBER UPDATE.
`UPDATE.
`
`
`
`FIG. 5
`
`APPLE
`
`EXHIBIT 1002 - PAGE 0007
`
`
`
`
`
`5.752.042
`
`2
`for each of the code updates that is consistent with the basic
`system characteristics of the client computer.
`According to another feature of the present invention, the
`information aboutthe list comprises a category designating
`all updates which are consistent with but not currently
`resident in said client. and another category designating only
`critical updates.
`Accordingto still another feature of the present invention,
`the recognizer programs correspondingto the selected code
`updates are executed again before the selected code updates
`are installed in the client computer.
`
`BRIEF DESCRIPTION OF THE FIGURES
`
`FIG. 1 illustrates a computer network which incorporates
`the present invention.
`FIG. 2 is a block diagram of a selection server. content
`server and a clientin the network of FIG. 1, which server and
`client are programmedaccording to the present invention.
`FIGS. 3a and 3b form a fiow chart illustrating operation
`of the client and server of FIG. 2.
`FIG. 4 is a flow chart illustrating a program sent from the
`server to the client of FIG. 2 to determine needs ofthe client
`for a particular code update.
`FIG. 5 is another fiow chart illustrating a program sent
`from the server to the client of FIG. 2 to determine needs of
`the client for another particular code update.
`
`10
`
`20
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENTS
`
`1
`SERVER COMPUTER FOR SELECTING
`PROGRAM UPDATES FOR A CLIENT
`COMPUTER BASED ON RESULTS OF
`RECOGNIZER PROGRAM(S) FURNISHED
`TO THE CLIENT COMPUTER
`
`BACKGROUND OF THE INVENTION
`
`The invention relates generally to computer networks and
`deals more particularly with a technique for selecting code
`updates stored in a server for installation in a client.
`A computer includes hardware and programs such as an
`operating system and applications. Often times, after a
`program is installed, there are subsequent code “fixes”, new
`versions and revisions (collectively called “updates”). The
`updates may comprise a replacement ofa single file of the
`program or replacementof the entire program. Typically the
`update also includes a short routine to actually install the
`updated code in the client. The installation routine typically
`replaces files in the existing program with new files from the
`update.
`The “Internet” is well known today and comprises user/
`client computers connected via modems and communication
`lines to one or more servers and respective data bases.
`Servers provide a wide variety of services to the clients such
`as routing of electronic mail. news service, management of
`web pages and web sites. management of code updates,etc.
`The data bases include actual data, code updates and meta
`data which describes the actual data and code updates.
`There are various known techniques for a server to
`provide a client with a code update. In one technique,clients
`register with the server for updates to a particular program.
`and whenever the server obtains a new update for that
`program, the server automatically sends the code update to
`every client on the list. Unfortunately. some clients may not
`wish to obtain the update because of cost, download time or
`other reason. Alternately, a client can periodically requestall
`updates and the server will respond accordingly. Unfortu-
`nately again. the client may not need every code update but
`nevertheless, endures the cost and download time.
`A general object of the present invention is to provide a
`method and system for selecting code updates for a client.
`SUMMARY OF THE INVENTION
`
`The invention resides in server and client computers for
`selecting code updates to download to the client computer.
`The server computer identifies code updates which are
`consistent with basic system characteristics of the client
`computer. Then, the server computer sends to the client
`computer one or more “recognizer” programs or one or more
`addresses outside of the client computer of the one or more
`recognizer programs which executein the client computer to
`determine whether the client computer has a version other
`than a current version of the identified code updates. The
`client sends the results to the server computer which gen-
`erates a list of code updates which are consistent with the
`basic system characteristics representing programsthat exist
`on the client computer for which an update would be
`appropriate. Next,
`the server computer sends the list or
`information aboutthelist to the client computer. A user at the
`client computer selects from the list and sends the selections
`to the server computer. In response, the server computer
`sends addresses of the selected code updates to the client
`computer and the client computer downloadsthe selected
`code updates from a server computer.
`According to one feature of the present invention, the
`server sends an address of oneof the “recognizer” programs
`
`50
`
`55
`
`65
`
`Referring now to the drawings in detail wherein like
`reference numbersindicate like elements throughout, FIG. 1
`illustrates a computer network generally designated 10
`according to the present invention. Network 10 comprises a
`selection server 12 with a data base 13, a content server 17.
`clients 14-16 and an Internet 20 to interconnect the servers
`and clients. By way of example, the selection server 12
`comprises a computer workstation. associated programming
`and a modem, the content server 17 comprises a computer
`workstation, associated programming and a modem and
`each of the clients 14-16 comprises a personal computer,
`associated programming and a modem. TheInternet com-
`prises a communication medium such as telephone wires
`between the clients 14-16. the selection server 12 and the
`content server 17 and programming to manage the commu-
`nications. Communications between the clients and the
`selection server 12 utilize hypertext
`transport protocol
`(HTTP) and communications between the clients and the
`content server 17 utilize file transport protocol (FTP).
`Although not shown, there are many other servers for the
`Internet. Selection server 12 is dedicated to automating
`selection of code updates. the content server 17 includesthe
`actual code updates (stored on disk 21). and data base 13
`includes meta data for the code updates and FTP addressing
`information to locate the code updates in content server 17.
`The meta data provides descriptive information about the
`respective code updates such as Bioslevel. pre-load level,
`motherboard ID, etc. The FTP addressing information indi-
`cates the address or identification of the content server
`which stores the respective code update (content server 17 in
`the illustrated example). a user ID and password to log-on to
`the content server, a name of the code update.a list offiles
`which comprise the code update and the size. checksum and
`directory of eachfile.
`The process for storing the updates in the contentserver
`17 and the metadata in the selection server 12 are notcritical
`
`APPLE
`
`EXHIBIT 1002 - PAGE 0008
`
`
`
`
`
`5,752,042
`
`4
`client 14. (In practice, the meta data can be arranged in a
`relational data base to facilitate the correlation). The first
`two columnsof the following table list code updates avail-
`able in content server 17 and the meta data for these code
`updates. The first two columnsof this table are used for the
`initial correlation of the basic system information obtained
`from client 14 to the meta data (column 2) stored in selection
`server 12.
`
`
`3
`to the present invention. However, according to one process,
`a person writes the code update and meta data and loads
`them into the content server 17. cither via the Internet or by
`manual
`loading. The code updates remain stored in the
`content server, but the meta data is written to the selection
`server. either via the Internet or by manual loading.
`Asillustrated in FIG. 2. the selection server 12 is an http
`server with an associated “CGI” program 31 and includes an
`update selection program 30. The client 14 includes an
`update manager program 32 (including a GUI), a scout
`routine 33. a service application routine 34 and a download
`routine 39. The functions of the server and client program-
`ming and a typical client/server session for selecting and
`downloading updates are illustrated in FIGS. 3(a,b). A user
`at client computer 14 selects an icon to invoke update
`manager 32. In response, the update manager contacts the
`general manager 31 in server 12 to begin a session and
`supplies the current level of update manager 32, scout 33.
`service application 34 and download routine 39 within client
`14 (step 104). In response. the general manager 31 deter-
`mines if the client’s update manager 32, scout 33, service
`application 12 and download routine 39are the latest version
`(step 106). This determination is performed by comparing
`the client level information supplied by the client 14 to the
`data in selection server 12 for the latest version of the
`client’s update manager 32, scout 33, service application 34
`and download routine 39 stored in the content server 17.
`If the client's update manager, scout. service application
`and download routine are not the latest version, the server
`sends the FTP addressing information to the client to allow
`the clientto retrieve the latest versions from a contentserver.
`Along with the FIP addressing for the client update
`manager, scout. service application and download routine.
`the server sends FTP addressing informationto the client for
`a basic system information recognizer program 41 storedin
`contentserver 17 (step 107). Next, the client downloads and
`installs the latest version of the client update manager. scout.
`service application and download routine from the content
`server if the FTP addressing was provided (step 108).
`The furnishing of the FTP addressing information for the
`basic system information recognizer program begins the
`selection process according to the present invention. The
`client next downloads the basic system information recog-
`nizer program 41 from the content server and executes it
`(step 109). The basic system information recognizer pro-
`gram then obtains basic system information using scout
`APIs, about client 14 (step 108). The basic system informa-
`tion comprises system model, pre-load software level, BIOS
`level, and information that is not likely to change often such
`as type of operating system. For example. the basic system
`information ofclient 14 is BIOS level 123, BIOS date Jan.
`1, 1996 and mother board ID XYZ. The update manager
`routine 32 then sends the basic system information, obtained
`by the recognizer program, to the selection server 12 (step
`110).
`This initiates the selection update program 30 (step 112).
`The selection update program 30 within server 12 then
`determines which code updates are consistent with the basic
`system information ofthe client and which code updatesare
`inconsistent thereby eliminating the vast majority of the
`code updates stored in content server 17 (and other content
`servers, if any) from further consideration (step 114). In the
`illustrated embodiment, this determination is made by cor-
`relating the meta data in data base 13 to the basic system
`information obtained from client 14. Matches between the
`meta data and the basic system information indicate that the
`corresponding code updates are potentially appropriate for
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`30
`
`55
`
`65
`
`Code Updates
`Device Driver
`ABCDE.DRV
`
`Netcomber 2.0
`
`Basis System
`Information’
`Meta Data
`BIOS Level 123
`BIOSdate 1/1/96
`Mother Board ID
`XYZ
`BIOS Level 123
`BIOS date 1/1/96
`Mother Board ID
`XYZ
`BIOS Level 456
`BIOS date 2/1/96
`Mother Board ID
`XYZ
`
`
`Device Driver
`FGHIL.DRV
`
`In this example. the BIOS level 123, BIOS date Jan. 1.
`1996 and mother board ID XYZ basic system information
`obtained from client 14 is consistent with a device driverfile
`named ABCDE.DRV. and Netcomber (trademark of Inter-
`national Business Machines Corporation) version 2.0.
`However, device driver file named FGHIJ.DRV requires
`BIOSlevel 456 so is inconsistent with the basic system
`information obtained from client 14 andis eliminated from
`further consideration.
`For each code update, such as device driver file named
`ABCDE.DRV. and Netcomber program version 2.0, which
`is consistent with the basic system information of client 14.
`the selection update program 30 sends to the client 14 the
`FTP addressing information of a corresponding recognizer
`program, such as recognizer programs 40 and 42, respec-
`tively (step 116). However, the FTP addressing information
`is not provided (and no recognizer program is fetched) to
`client 14 for the device driver file named FGHIJ.DRV.
`because file FGHI.DRV is not consistent with the basic
`system information of client 14. From the FTP addressing
`information, the client 14 downloads the actual recognizer
`programs from the content server 17 (step 118).
`Each recognizer program is executable and small. typi-
`cally 2,000-3,000 bytes. Consequently. each recognizer
`program can be downloaded from content server 17 to the
`client 14 in seconds (whereas the corresponding code update
`is much larger and may take hours to download).
`It should be noted that based on the basic system infor-
`mation alone, the selection update program 30 within server
`12 is not sure which of the code updates that are consistent
`with the basic system informationare actually needed by the
`client; for example, the client may already have the latest
`version.
`
`Next. the client 14 executes each recognizer program 40
`and 42 with assistance from the scout 33 (step 118). The
`scout 33 assists the recognizer programs by providing sub-
`routines callable by the recognizer programs. For files
`required by the recognizer programs.these callable subrou-
`tines locate the files, determine the version of the files,
`determine the length ofthe file. identify a directory which
`lists the files, obtain time stamps for the files, obtain data
`from inside the files and obtain data from a program registry.
`
`APPLE
`
`EXHIBIT 1002 - PAGE 0009
`
`
`
`
`
`5.752.042
`
`5
`This further reduces the requisite length of each recognizer
`program and therefore shortens the download time. When
`executed. each recognizer program further investigates the
`hardware, software and other componentsofthe client 14 for
`information to assist the server in determining whether the
`corresponding code update is appropriate for the client 14.
`For example.
`this investigation reveals if the client 14
`already has these code updates as follows. A recognizer
`program could also determine if the corresponding code
`update is consistent with aspects of the client other than the
`basic system information, such as other programs within the
`client.
`Recognizer program 40 determines from the scout routine
`33 in client 14 if the size of file ABCDE.DRV.stored by the
`client 14 is the sameas the size of file ABCDE. DRV. stored
`in the data base 13.If so, then client 14 hasthe latest update.
`If not, then client 14 likely has an old version which could
`be updated.
`FIG.4 illustrates recognizer program 40 in moredetail. In
`step 200, recognizer program 40 calls scout 33 to scan client
`14’s hard disk for file ABCDE.DRV to determine if file
`ABCDE.DRV exists in client 14. If not, the recognizer
`program provides an indication thatfile ABCDE.DRVis not
`appropriate for client 14 (step 202). However,if file ABCD-
`E.DRYexists in client 14, then recognizer program 40 calls
`scout 33 to retrieve the size of file ABCDE.DRVin client 14
`(step 204), and then comparesthefile size to the size of the
`latest version stored in the content server (decision 206).
`(The recognizer program includes an indication of the size
`of the corresponding update in the content server.) If the two
`sizes are the same. then there is no need to download file
`ABCDE.DRVfrom the content server 17; client 14 already
`has the latest version. However, if the two sizes are not the
`same, then recognizer program 40 makes a record that the
`file ABCDE.DRV stored in the content server 17 is appro-
`priate for client 14 (step 208).
`Recognizer program 42 compares a version number of the
`Netcomber program in the client to the version number of
`the Netcomber program of the code update, and if the
`version numberof the Netcomber program installed in client
`14 is less, then the client likely has an old version.
`FIG, 5 illustrates recognizer program 42 in more detail. In
`step 300, recognizer program 42calls scout 33 to read a data
`base in client 14 to determine if the Netcomber program
`exists in client 14. If it does. recognizer program 42 calls
`scout 33 to obtain the version number of the Netcomber
`program from the data base (step 302). If the version number
`stored in the data base is equal to or greater than the version
`number in the recognizer program. then client 14 does not
`need the version stored in the content server 17 (decision
`304 and step 306). However.if the version number stored in
`the data base is less than the version number in the recog-
`nizer program, then the recognizer program records that
`client 14 needs the copy of the Netcomber program stored in
`the content server 17 (decision 304 and step 308).
`The results of the recognizer programs include yes/no
`answers whether each respective code update is appropriate
`for the client, i.e. not currently resident in client 14 (and
`consistent with the client basic system information as deter-
`mined previously in step 114). The recognizer programs can
`also assign a “critical” level to each code update based on
`the need ofthe client for the update. For example, if another
`program in the client needs this code update to function, then
`this code update wouldbe assigned a high levelofcriticality.
`After the recognizer programs are executed in client 14,
`client 14 sends to selection server 12 a list of the code
`updates which are appropriate for the client (step 120).
`
`6
`Based on the information gathered by the recognizer
`programs. the server determinesthe level of criticality of the
`respective code updates and builds a selection form for
`display at the client (step 122). The selection form comprises
`a list of the code updates that are consistent with the basic
`system information and appropriate for the client 14, and a
`display of the following three selection choices 124 (step
`124):
`1. minimum number of code updates—code updates
`which are necessary for the client to ensure compat-
`ibility between programs within the client and fix a
`significant “bug” in a program within the client. and
`those other updates that the author of the code update
`deemed critical such as replacement of unsupported
`programs.
`2. maximum number of code updates—all code updates
`which are consistent with the basic system information
`and appropriate for the client.
`3. client selection of specific code updates—user selects
`particular code updates from thelist of all code updates
`which are consistent with the basic system information
`and appropriate for the client.
`Next, the client makes a selection. either selection of the
`first or second categories or an itemized list of code updates
`pursuant to the third category (step 130), and sends the
`selection to the server (step 131). In response, the server 12
`sends to the client 14 the PTP addressing information for the
`selected code updates(step 132). Using this FTP addressing
`information, the download routine 39 of the client down-
`loads the code updates from the content server 17 (step 133).
`(In the preferred embodimentof the present invention, the
`FTP addressing informationfor all code updates represented
`in the selection form are passed with the selection form to
`the client 14 in step 124.)
`Asthe code updates are being downloaded. the download
`routine also records status information (such as the FTP
`addresses) of the code updatesin case of interruption to the
`communication line. If there is such an interruption. the
`downloading can continue later where it left off. Since the
`interruption could be lengthy and the system characteristics
`could have been altered. immediately before the selected
`code updates are actually installed. the update manager 32
`invokes the corresponding recognizer programs again to
`ensure that the code updatesare still required; it is possible
`that changes could have occurred to the client since the
`recognizer programs were previously executed. If the code
`updates are still appropriate. the service application routine
`of client 14 installs the code updates in the client 14 as
`follows(step 134). For every code update file whose stale
`version is not currently in use by client 14, the service
`application routine replaces the stale file with the updated
`file. The update manager also lists each code update file
`whose stale version is currently in use. Then.the client is
`requested to re-boot, and the operating system installs the
`listed code updates during the re-boot.
`Based on the foregoing, a technique for selecting and
`transferring code updates to a client has been disclosed.
`However. numerous modifications and substitutions can be
`made without deviating from the scope of the present
`invention.
`Therefore. the present invention has been disclosed by
`way ofillustration and notlimitation and reference should
`be made to the following claims to determine the scope of
`the present invention.
`We claim:
`1. A server computer for selecting code updates to down-
`load to a client computer. said server computer comprising:
`
`20
`
`2s
`
`30
`
`45
`
`55
`
`65
`
`APPLE
`
`EXHIBIT 1002 - PAGE 0010
`
`
`
`
`
`5,752,042
`
`7
`means for identifying code updates which are consistent
`with basic system characteristics of the client com-
`puter;
`means for sending to said client computer one or more
`programs which execute in said client computer to
`determine whether said client computer has a version
`other than a current version of the identified code
`updates;
`means for receiving results of said programs. generating
`a list of code updates which are consistent with said
`basic system characteristics, represent current versions
`of code within said client computer and are not cur-
`rently resident in said client computer. and transmitting
`said list or information about said list to said client
`computer; and
`means for receiving selection from said client computer of
`one or more of thelisted code updates.
`2. A server computer as set forth in claim 1 further
`comprising means for sending address information for the
`selected code updates to said client computer so that said
`client computer can obtain said selected code updates from
`another server computer.
`3. A server computer as set forth in claim 1 wherein the
`identifying means comprises:
`program means, executable in said client computer. for
`obtaining said basic system characteristics of said client
`computer;
`means for sending to said client an address of said
`program means; and
`meansforreceiving said basic system characteristics from
`said client.
`4. A server computer as set forth in claim 1 wherein the
`sending means sends an address of one of said programs to
`said client for each of said code updates.
`5. A server computerasset forth in claim 1 wherein said
`information about said list comprises a category designating
`all updates which are consistent with but not currently
`residentin said client, and another category designating only
`critical updates.
`6. A server computer asset forth in claim 1 wherein said
`programs corresponding to the selected code updates are
`executed again before said selected code updates are
`installed in said client computer.
`7. A server computer for selecting code updates to down-
`load to a client computer, said server computer comprising:
`means for obtaining basic system information from a
`client computer;
`meansfor identifying code updates which are consistent
`with said basic system information;
`means for sending to said client computer a recognizer
`program for each of said identified code updates, each
`said recognizer program when executed in said client:
`computer determining whether said client computer has
`a version other than a current version of said code
`update;
`means for receiving results of said recognizer programs
`and sending to said client computer a list of code
`updates which are consistent with said client computer.
`represent current versions of code within said client
`computer and are not currently resident in said client
`computer; and
`meansfor receiving selection from said client computerof
`one or more of the listed code updates.
`8. A server computer as set forth in claim 7 further
`comprising means for sending address information of the
`selected code updates to said client computer.
`
`8
`9, A server computer as set forth in claim 7 wherein said
`recognizer programs corresponding to the selected code
`updatesare executed again before said selected code updates
`are installed in said client computer.
`10. A server computer for selecting code updates for a
`client computer, said server computer comprising:
`meansfor sendingto said client computer an address of a
`first program, said first program, executable in said
`client computer. for obtaining basic system information
`of said client computer;
`meansfor receiving said basic system information from
`said client computer;
`meansfor identifying code updates which are consistent
`with said basic system information of said client com-
`puter; and
`means for sending to said client computer one or more
`addresses outside of said client computer of one or
`more respective other programs which execute in said
`client computer to determine whether said client com-
`puter has a version other than a current version of the
`identified code updates.
`11. A server computer as set forth in claim 10 further
`comprising:
`meansfor receiving results of said other programs. gen-
`erating a list of code updates which are consistent with
`said basic system information. represent current
`version(s) of code within said client computer and are
`not currently resident in said client computer, and
`transmitting said list or information aboutsaid list to
`said client computer; and
`meansfor receiving selection from said client computer of
`one or more of the listed code updates.
`12. A server computer as set forth in