throbber
Hlllllllllllllll||||||||||||||||ll||Illlllllllllllllllllllllll||l|||||||||
`
`U8005752042A
`
`UIllted States Patent
`
`[19]
`
`[11] Patent Number:
`
`5,752,042
`
`
`Cole et a1.
`[45] Date of Patent:
`May 12, 1998
`
`[54] SERVER COMPUTER FOR SELECTING
`PROGRAM UPDATES FOR A CLIENT
`COMPUTER BASED ON RESULTS or
`RECOGNIZER PROGRAM(S) FURNISHED
`TO THE CLIENT COMPUTER
`
`[75]
`
`Inventors: Gary Lee Cole. Endicott: Scott Phillip
`Engleman. Vestal: Steven Michael
`Pritko. Endicott. all of NY.
`
`[73] Assignee:
`
`International Business Machines
`Corporation. Armonk. NY.
`
`.
`[21] APpl. NO" 659341
`[22] Filed.
`Jun. 7, 1996
`[51]
`Int. CL“ ................................................... G06F 15/177
`
`. ..
`.. 395/712; 395/703; 395/200.49;
`[52] us. Cl.
`395,200.51; 707/203
`[58] Field of Search ..................................... 395/112. 610.
`395/619. 200.01. 200.09. 703. 200.49. 200.51-
`707/203;
`
`[56]
`
`References Cited
`US. PATENT DOCUMENTS
`.
`zgzgg?
`13233.5, 3:33;: :i 3
`$333;
`395,200.33
`4/1991 Griflin el al.
`5905:122
`707/201
`5/1991 Anderson et al.
`5.019.963
`707/201
`7/1992 Risch ...............
`5,133,075
`395/20051
`[0/1992 Kirouac et a1.
`..
`5,155,847
`395/201
`3/1994 Lundin ct 81'
`5.339.430
`707/201
`9/1995 Sakuraba 6‘ 31-
`5452348
`3933771;
`223,33) 13233: Eighweflial'
`STE/20051
`5,495,610
`2/1996 suggest 31’
`_____ 707/10
`5:553:282
`9/1996 Parrish a a1.
`395/703
`5.531.764 12/1996 Fitzgerald etal.
`........................ 395/712
`5,619,716
`4/1997 Nonalca et a1.
`FOREIGN PATENT DOCUMENTS
`
`
`
`
`
`
`Japan ,
`5/1995
`129407
`Japan -
`7/1995
`175641
`Japan
`8/1995
`225724
`Japan-
`7295330 “/1995
`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” transparency foils.
`
`Primary Examiner—Kenneth S. Kim
`Attorney, Agent, or Firm—Arthur J. Samodovitz
`[57]
`ABSTRACT
`
`A server computer 5616”“ “Ode updates 1° dOWm‘Jad ‘0 a
`client computer. The server computer identifies code updates
`WW“ a“ WSW” With has“ Sys‘e’“ Chmmmfi“ °f the
`Chin“ compute" “‘61" the 56”“ 9mm“ sends ‘° 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 the list or
`information about the list to the client computer. Auser 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 downloads the selected
`code updates from a content server. At some later time. the
`recognizer Programs COHCSponding t0 the selected Code
`Updates are executed again before the sclected code Updates
`are installed in the client computer.
`
`20280
`
`l/1993
`
`Japan ‘
`
`30 Claims, 6 Drawing Sheets
`
`CLIENT
`
`
`
`
`
`
`SELECTION
`SERVER
`
`
`UPDATE
`SELECTION
`
`PROGRAM
`
`
`1177161)sz
`DATA BASE
`
`
`DOWNLOAD
`SCOUT
`SERVICE
`E
`ROUTINE
`APPLICATION
`2;
`
`CONTENT SERVER
`UPDATE MANAGER
`32
`
`CODE UPDATES
`(INCLUDE GUI)__—
`
`17
`
`
`RECOGNIZER PROGRAMS
`
`
`BASIC SYSTEM INFORMATION
`
`
`—~+°-
`III—“2
`CODE UPDATES
`
`
`
`
`
`:3:
`EC:
`
`APPLE
`

`EXHIBIT 1002 - PAGE 0001
`    
`

`
`

`

`US. Patent
`
`May 12, 1998
`
`Sheet 1 of 6
`
`5,752,042
`
`A 9“?
`
`SELECTION
`SERVER
`
`UPDATE
`
`1
`
`‘2
`
`17
`
`
`
`/
`
`15 -|?
`W
`
`
`
`£~K
`-I
`
`1
`m I
`—|/
`
`
`
`w»
`
`CONTENT
`SERVER
`
`[O
`
`2]
`
`\
`
`10
`
`FKi 1
`
`APPLE
`

`EXHIBIT 1002 - PAGE 0002
`    
`

`
`

`

`US. Patent
`
`May 12, 1998
`
`Sheet 2 of 6
`
`5,752,042
`
`onp<zmoquzmkm>muqum_¢
`
`zqmwoma
`
`a
`
`mmqm<F<o<
`
`
`
`mz<muomamMNszoumm
`
`nPaka
`
`onFUmem2QHFI
`53%aEmm>mmm
`mm>mmmFzmkzoummamoqzqzmp<oa2
`
`
`mmhqoaomooulluthuNQDJUZHV
`
`
`m.wo<042200muH>mmm
`
`onFumqmmm_j_HzmHJU
`
`mmszaoaonh<uHJaa<
`
`
`
`
`
`wh<oa3omk<oan
`
`wkqoa:m:mh<oa3
`
`mMF<oa3moou
`
`NAura
`
`APPLE
`

`EXHIBIT 1002 - PAGE 0003
`    
`

`
`
`

`

`US. Patent
`
`May 12, 1998
`
`Sheet 3 of 6
`
`5,752,042
`
`CLIENT
`
`SELECTION SERVER
`
`CONNECT T0 SERVER.
`SUPPLY CURRENT LEVEL
`INFORMATION.
`
`l04
`
`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.
`
`‘08
`
`10‘9
`
`110
`
`112
`
`114
`
`ll]
`
`INVOKE SELECTION UPDATE PROGRAM.
`
`IDENTIFY CODE UPDATES CONSISTENT WITH
`BASIC SYSTEM INFORMATION.
`
`SEND FTP ADDRESSES FOR CORRESPONDING
`RECOGNIZER PROGRAMS TO CLIENT.
`
`fl?
`
`FIG. 3(a)
`
`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.
`
`118
`
`SEND RESULTS OF RECOGNIZER
`PROGRAMS TO SERVER.
`
`120
`
`IDENTIFY CRITICALITY OF APPROPRIATE
`CODE UPDATES.
`
`122
`
`SEND SELECTION FORM
`
`124
`
`USER SELECTS UPDATES FROM
`SERVER CATEGORIES OR LIST.
`
`130
`
`SEND SELECTION T0 SERVER.
`
`131
`
`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
`
`I34
`
`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 ?
`
`GET SIZE OF FILE
`ABCDE.DRV.
`
`
`
`DOES FILE
`SIZE EQUAL
`META DATA ?
`
`
`
`
`
`
`RECORD THAT CLIENT IS
`RECORD THAT CLIENT IS
`NOT CANDIDATE FOR
`CANDIDATE FOR FILE
`
`
`FILE ABCDE.DRV UPDATE.
`ABCDE.DRV UPDATE.
`
`
`
`FIG.4
`
`APPLE
`

`EXHIBIT 1002 - PAGE 0006
`    
`

`
`

`

`US. Patent
`
`May 12, 1998
`
`Sheet 6 of 6
`
`5,752,042
`
`42
`
`300
`
` IS NETCOMBER
`APPLICATION IN
`
`REGISTRY
`
`
`GET RELEASE LEVEL
`FROM REGISTRY.
`
`
`
`
`
`
`RECORD THAT CLIENT IS
`RECORD THAT CLIENT IS
`
`NOT CANDIDATE FOR
`CANDIDATE FOR NETCOMBER
`
`
`NETCOMBER UPDATE.
`UPDATE.
`
`
`
`
`IS RELEASE
`
`LEVEL LESS
`
`THAN 2.0 ?
`
`FIG.5
`
`APPLE
`

`EXHIBIT 1002 - PAGE 0007
`    
`

`
`

`

`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 of a single file of the
`program or replacement of 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 “Intemet” 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 request all
`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 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 gen-
`erates 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 the list or
`information about the list 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 downloads the selected
`code updates from a server computer.
`According to one feature of the present invention. the
`server sends an address of one of the “recognizer” programs
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`SS
`
`65
`
`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 about the 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.
`According to still another feature of the present invention.
`the recognizer programs corresponding to 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 client in the network of FIG. 1. which server and
`client are programmed according to the present invention.
`FIGS. 3a and 3b form a flow 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 of the client
`for a particular code update.
`FIG. 5 is another flow 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.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENTS
`
`Referring now to the drawings in detail wherein like
`reference numbers indicate 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 modern. The Internet 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 includes the
`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 Bios level. 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 of files
`which comprise the code update and the size. checksum and
`directory of each file.
`The process for storing the updates in the content server
`17 andthe meta data in the selection server 12 are not critical
`
`APPLE
`

`EXHIBIT 1002 - PAGE 0008
`    
`

`
`

`

`5.752.042
`
`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. either 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.
`As illustrated 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 39 are 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 client to retrieve the latest versions from a content server.
`Along with the FTP addressing for the client update
`manager. scout. service application and download routine.
`the server sends FI'P addressing information to the client for
`a basic system information recognizer program 41 stored in
`content server 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 of cheat 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 of the client and which code updates are
`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
`
`50
`
`55
`
`65
`
`4
`client 14. (In practice. the meta data can be arranged in a
`relational data base to facilitate the correlation). The first
`two columns of the following table list code updates avail-
`able in content server 17 and the meta data for these code
`updates. The first two columns of 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.
`
`
`Basis System
`Information/
`
`Code Updates
`Meta Dam
`Device Driver
`BIOS Level 123
`ABCDEDRV
`BIOS date 1/1/96
`Mother Board ID
`XYZ
`BIOS Level 123
`BIOS date 1/1/96
`Mother Board 113
`XYZ
`BIOS Level 456
`BIOS date 2/1f96
`Mother Board 11)
`XYZ
`
`
`Device Driver
`FGHHJJRV
`
`Netcomber 2.0
`
`In this example. the BIOS level 123. BIOS date Jan. 1.
`1996 and mother board lD XYZ basic system information
`obtained from client 14 is consistent with a device driver file
`named ABCDEDRV. and Netcomber (trademark of Inter-
`national Business Machines Corporation) version 2.0.
`However. device driver file named FGHIJDRV requires
`BIOS level 456 so is inconsistent with the basic system
`information obtained from client 14 and is 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 FGHIJDRV.
`because file FGHIJDRV 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 LOGO—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 information are 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 of the file. identify a directory which
`lists the files. obtain fime 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 components of the 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 ABCDEDRV. stored by the
`client 14 is the same as the size of file ABCDEDRV. stored
`in the data base 13. If so. then client 14 has the latest update.
`If not. then client 14 likely has an old version which could
`be updated.
`FIG. 4 illustrates recognizer program 40 in more detail. In
`step 200. recognizer program 40 calls scout 33 to scan client
`14’s hard disk for file ABCDEDRV to determine if file
`ABCDEDRV exists in client 14. If not. the recognizer
`program provides an indication that file ABCDEDRV is not
`appropriate for client 14 (step 202). However. if file ABCD—
`E.DRV exists in client 14. then recognizer program 40 calls
`scout 33 to retrieve the size of file ABCDEDRV in client 14
`(step 204). and then compares the file 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.) Ifthe two
`sizes are the same. then there is no need to download file
`ABCDEDRV from 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 ABCDEDRV 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 number of 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 42 calls 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). Ifthe 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 of the client for the update. For example. if another
`program in the client needs this code update to function. then
`this code update would be assigned a high level of criticality.
`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 determines the 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 the list 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 FTP 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 embodiment of the present invention. the
`FTP addressing information for all code updates represented
`in the selection form are passed with the selection form to
`the client 14 in step 124.)
`As the code updates are being downloaded. the download
`routine also records status information (such as the FTP
`addresses) of the code updates in case of intmpfion 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 updates are 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 of illustration and not limitation 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:
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`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 the listed 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
`means for receiving 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 computer as set forth in claim 1 wherein said
`information about said 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.
`6. A server computer as set 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 serva computer comprising:
`means for obtaining basic system information from a
`client computer;
`means for 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
`means for receiving selection from said client computer of
`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
`updates are 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:
`means for sending to 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;
`means for receiving said basic system information from
`said client computer;
`means for 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:
`means for 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 about said list to
`said client computer; and
`means for receiving selection from said client computer of
`one or more of the listed code up

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