`US 7,062,765 B1
`(10) Patent No.:
`(12)
`Pitzel et al.
`(45) Date of Patent:
`Jun. 13, 2006
`
`
`US007062765B1
`
`(54) SYSTEM AND METHOD FOR UPDATING
`INFORMATION VIA A NETWORK
`
`(75)
`
`Inventors: Bradley John Pitzel, Seattle, WA (US);
`Stanislav Bobrovskiy, Lake Forest
`Park, WA (US); William A. Roberts
`>
`.
`Seattle, WA (US)
`
`,
`
`.
`(73) Assignee: RealNetworks, Inc., Seattle, WA (US)
`.
`.
`.
`a
`(*) Notice:
`Subject to any disclaimer, the term ofthis
`patent is extended or adjusted under 35
`U.S.C, 154(b) by 0 days.
`(21) Appl. No.: 09/318,438
`(22)
`Filed:
`May25, 1999
`
`(51)
`
`Int. Cl.
`(2006.01)
`GOOF 9/445
`(2006.01)
`GO6F 15/16
`(2006.01)
`GO6F 9/44
`(52) US. Cheeee 717/177; 709/201; 709/203;
`717/175; 717/176; 717/178; 717/168
`(58) Field of Classification Search ........0....0... 171,
`TIT/AL, 168-178, 125, 103; 709/220, 223,
`oo,
`709/201, 203; 713/1, 178; 711/133
`See application file for complete search history.
`References Cited
`
`(56)
`
`U.S. PATENT DOCUMENTS
`
`5,602,582 A
`5,619,716 A
`5,666,293 A
`5,682,533 A
`5,696,898 A
`5,706,435 A
`5,710,884 A
`5,717,923 A
`5,732,275 A
`
`...... 348/12
`2/1997 Wanderscheid et al.
`4/1997 Nonakaet al... 395/800
`
`.....
`.. 395/200.5
`9/1997 Metz et al.
`
`.............. 395/616
`10/1997 Siljestroemer
`12/1997 Baker et al. w..... 395/187.01
`1/1998 Barbara etal.
`......... 395/200.09
`
`1/1998 Dedrick ..........
`... 395/200.47
`2/1998 Dedric ccesessssseseees 395/613
`
`3/1998 Kullick et al. oo. 395/712
`
`(Continued)
`
`OTHER PUBLICATIONS
`TITLE: Client-Server Computing, author: Alok Sinha,
`ACM,Jul. 1992.*
`TITLE: Managing Update Conflicts in Bayou, A Weakly
`eamesgPlcated Storage System, author: Terry et al,
`
`(Continued)
`Primary Examiner—Chameli C. Das
`(74) Attorney, Agent,
`or Firm—Steven C. Stewart,
`RealNetworks, Inc.
`
` ©7)
`
`ABSTRACT
`
`51 Claims, 7 Drawing Sheets
`
`The present invention includes a system and a method for
`updating components in a client computer. The invention
`includes a method for upgrading software for various users,
`each of the users having diverse hardware and software
`configurations. The invention includes a method for auto-
`matically determining the hardware and software configu-
`ration of the client computer without user intervention. To
`4,558,413 A * 12/1985 Schmidt et al... 707/203
`begin the upgrade, the client computer reads a configuration
`5,019,963 A
`5/1991 Alderson et al.
`.......... 364/200
`file that identifies the components for downloading. Upon
`10/1992 Kirouac et al. 0... 395/600
`5,155,847 A
`
`receipt of the configuration file, the client computer deter-
`9/1993 Holmeset al. «0.0.0.0... 395/700
`5,247,683 A
`5,339,432 A * 8/1994 Crick woe. cececeeeeeeeee TA3/1
`
`mines the hardware and software configuration ofthe client
`
`A995 Oran coe. ceeeec ees cece 395/325
`5,408,619 A
`computer. The client computer automatically communicates
`5,421,009 A
`5/1995 Plalleee 395/600
`with a componentserver via a network and requests one or
`
` 5/1995 Scholz et al... 395/700
`5,421,017 A
`more components for downloading to the client computer
`5,457,778 A * 10/1995 Sieffert 0... eee 345/501
`
`based upon the configuration file and the hardware and
`12/1995 Halliwell et al... 395/650
`5,473,772 A
`
`software conditions of the client computer.
`2/1996 Solton et al... 395/250
`5,493,728 A
`5,537,596 A
`TN996 Yu et al. wee 395/700
`5,557,798 A
`9/1996 Skeen et al... 395/650
`
`
`
`
`GENERATE
`HANDOFF
`UPGRACE
`REQUEST
`
`
`
`TO BE ANALYZED
`BY CLIENT
`
`?
`
`
`
`
`
`520.
`DETERMINE
`CLIENT
`CONDITIONS,
`
`
`
`
`
`
`GENERATE MISSING
`COMPONE!
`NT
`UPGRADE REQUEST
`
`BIO
`
`
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0001
`
`
`
`
`
`US 7,062,765 B1
`
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`OTHER PUBLICATIONS
`
`
`
`TITLE: Efficient Transparent Application Recovery in Cli-
`3/1998 He debe cee sec eeeseveneseneenens 395/619
`5,734,898 A
`
`ent-Server Information Systems, author: Lometet al, ACM,
`“yor5
`4hoon Reilly . “
`2ieno A
`.
`avis et al.
`
`1998.*
`eS
`
`«
`.
`..
`. 395/172
`5/1998. Cole et al.
`5,752,042 A
`Barry Nance,
`“When Push Comes to Serve” BYTE, Jul.
`5/1998. Gregerson.....
`.. 707/10
`5,758,342 A
`
`6/1998 Kullick etal.
`.. 395/712-1998, pp. 98-102.
`5,764,992 A
`.. 395/200.79
`6/1998 Metz etal.
`.
`Pete Loshin, “Tune In, Turn on the Web” BYTE, Feb. 1997,
`5,768,539 A
`
`8/1998 Sadowsky ...
`. 395/200.51
`pp. 145-146.
`5,790,796 A
`
`8/1998 Lillich .....sssesseseseeees 395/703
`Michael Fisk, “Automating the Administration of Hetero-
`5,790,856 A
`
`9Looe Mase ae30eoooes
`geneous LANs” USENIX Association—Proceedings of the
`nen ‘
`_.. 395/500
`9/1998 Stupek et al.
`Tenth Systems Administration Conference Sep.-Oct. 1996,
`5,809,287 A
`
`10/1998 Bredenberg ....
`wa 707/2,——s
`pp. 181-186.
`5,826,253 A
`
`Gansheimer,
`and Wilfried
`Osel
`T1/1998 Olds wee eee 395/712
`Peter
`W.
`5,832,275 A
`11/1998 Oldset al. oe 707/10
`“OpenDist—Incremental Software Distribution’? USENIX
`5,832,487 A
`Iyhoon nee ral
`“e004,
`Association—Proceedings of the Ninth Systems Adminis-
`ree A
`
`
`.
`aweett
`...
`.
`:
`.
`5845,
`
`12/1998 Collins, Il etal,
`... 395/200.51
`‘ation Conference, Sep. 1995, pp. 181-193.
`5,845,090 A
`................. 705/14
`12/1998 Marsh etal.
`Atsushi Futakata,
`“Patch Control Mechanism for Large
`5.848.397 A
`12/1998 Northrup ....
`.. 395/200.33
`Scale Software” USENIX Association—Proceedings of the
`5,850,518 A
`1/1999 Cuomo et al.
`veesccececee 345/326
`Ninth Systems Administration Conference, Sep. 1995, pp.
`5,861,883 A
`1/1999 Reed et al.
`.
`395/200.31
`213-219.
`5,862,325 A
`for Flexible Software
`2/1999 Todd etal.
`....... eee 395/712
`Thomas Eirich, “Beam: A Tool
`5,867,714 A
`2/1999 Beyda oo. eee 395/712
`Update” LISA, Sep. 1994, pp. 75-82.
`5,870,610 A
`
`7/1999 Maet al.
`....
`- TTA
`John Lockard and Jason Larke, “Synctree for Single Point
`5,920,725 A :
`IoL999 Buxtonefal serteeeeceeecees TTL
`Installation, Upgrades,
`and OS
`Patches” USENIX
`eenaed A
`11/1999 Knox at aL
`13/1
`Association—Proceedings of the Twelfth Systems Admin-
`5,978.9 tl A *
`
`6,009,274 A * 12/1999 Fletcheret al. veces. 395/712_istration Conference, Dec. 1998, pp. 261-270. ;
`6,038,601 A *
`3/2000 Lambert et al.
`709/226
`Ram R. Vangata, Michale Cripps and Raj G. Varadarajan,
`
`. 710/103
`6,058,445 A *
`5/2000 Chari etal.
`....
`“Software Distribution and Management in a Networked
`....... cece 711/133
`6,073,214 A *
`6/2000 Faweett
`Environment” USENIX Association—Proceedings of the
`6,128,656 A * 10/2000 Matchefts et al.
`.......... 709/223
`Sixth Systems Administration Conference, Oct. 1992, pp.
`6,144,992 A *
`11/2000 Turpin etal. ..
`. 709/208
`163-170.
`
`6,151,643 A *
`11/2000 Cheng et al. vnennen 710/36
`Robby Krupezak, Kenneth L. Calvert and Mostafa Ammar,
`oreooo BI x
`Seoot vistaet AL.
`sesseesseeeeeee eee
`“Implementing Protocols in Java: The Price of Portability”
`
`6,202,207 BL*
`3/2001 Donohue717173
`IBBEInfocom *98, vol. 2, pp. 765-773.
`
`6,233,341 BL* 5/2001 Riggins se... 380/277_Vinay Kanitkar and Alex Delis, “Real-Time Client-Server
`6,246,770 B1*
`6/2001 Stratton et al.
`_ 380/281
`Push Strategies: Specification and Evaluation” IEEE Com-
`
`6/2001 Axberg et al. veces 709/223
`6,253,240 B1*
`puter Society Technical Committee on Real-Time Systems,
`6,256,668 BIL*
`7/2001 Slivka et al.
`.....000.. 709/220
`1998, pp. 179-188.
`6,263,364 B1*
`7/2001 Najorket al.
`..
`- 709/217
`Yun-Wu Huang and Philip S. Yu, “A Bandwidth-Sensitive
`
`11/2001 Kenneret al. ow... TAVAT1
`6,314,565 Bl .
`Update Scheduling Method for Internet Push’ IEEE Com-
`12/2001 Matchefts et al.
`.......... 709/223
`6,330,600 Bl
`puter Society Technical Committee on Distributed Process-
`
`6,341,373 Bl .
`1/2002 Shaw seeeeeeeeeee
`wee TLT/LT3
`ing, May 1998, pp. 303-310.
`1p
`b:
`d
`.
`6/2002 Miron .....cceeceeceeeeeeeeee 707/203
`6,401,239 Bl
`litt
`«
`6,463,433 BL* 10/2002 Baclawski0... 7o7/5
`Clift Berg,
`“How DoI Create a Signed Castanet Channel?
`6,463,473 Bl* 10/2002 Gubbi
`~ 709/225
`-Dr. Dobb’s Journal, Jan. 1998, pp. 121-130.
`
`6,496,875 BL* 12/2002 Chenget al. oo... 710/1
`Ling Liu, Calton Pu, Wei Tang, David Buttler, John Biggs,
`6,505,058 BL*
`1/2003 Willey vv. 455/574
`Tong Zhou, Paul Benninghoff, Wei Han and Fenghua Yu,
`... 607/31
`6,512,954 BL*
`1/2003 Fox etal.
`“CQ: A Personalized Update Monitoring Toolkit” Sigmod’
`
`3/2003 Jain deseecenceeeeceeceeaeeaeeas 370/256
`6,535,490 BI*
`98—Proceedings of ACM SIGMODInternational Confer-
`Oeeee RI : oonea natinetal
`ees
`ence on Managementof Data, Jun. 1998, pp. 547-549.
`
`3/2005 Styles oc eeeee 709/221
`6,871,221 BL*
`* cited by examiner
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0002
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 1 of 7
`
`US 7,062,765 B1
`
`COMPONENT
`DATABASE
`
`IGS
`
`176
`
`COMPONENT SERVER
`
`734
`
`UPGRADE
`HANDLER
`
`
`
`
`
`
` MODULE
`CONFIGURATION
`
`SERVER
`
`
`
`CONNECTION
`
`
`CONFIGURATION
`
`MANAGER
`
`
`FILE
`
`
`COMPONENT r
`
`
`
`MODULE
`
`
`
`TIE
`
`
`
`
`
`COMPUTER
`
`CUIENT
`PROFILE
`
`DOWNLOAD
`
`SERVER
`
` CLIENT
`
`
`
`
`120.
`
`
`
`
`
`
`SETUP
`UPGRADE
`USER
`
`
`
`MANAGER
`MANAGER
`INTERFACE
`MODULE
`MODULE
`MODULE
`
`
`
`
`
`f/G,
`
`7
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0003
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 2 of 7
`
`US 7,062,765 B1
`
`(a
`
`LOF
`
`£08
`
`LOL
`
`
`
`22
`
`
`
`
`
`
`
`
`
`
`
`
`< COMPONENT IDENTIFIER N >
`
`< EXPIRATION TIME >
`
`-/CL 2
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0004
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 3 of 7
`
`US 7,062,765 B1
`
`CUENT PROFILE
`
`PRODUCT
`INFORMATION
`
`LAST
`UPDATE
`
`ILA
`
`ILE
`
`IDENTIFIER
`
`OPERATING SYSTEM
`INFORMATION
`
`LANGUAGE
`IDENTIFIER
`
`DISTRIBUTION
`
`IDENTIFICATION
`
`COUNTRY
`IDENTIFIER
`
`IIS
`
`STATE
`
`FIG, F
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0005
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 4 of 7
`
`US 7,062,765 B1
`
`400
`
`START
`
`404
`
`USER INITIATES
`UPGRADE REQUEST
`
`4OE
`
`CLIENT GENERATES AN
`UPGRADE REQUEST AND
`
`SENDS IT TO THE SERVER
`
`$I2
`
`SERVER ANALYZES THE REQUEST
`AND SENDS AN UPGRADE RESPONSE
`BACK TO THE CLIENT
`
`REQUESTED UPGRADE
`
`CLIENT PARSES THE RESPONSE
`AND DOWNLOADS/INSTALLS
`
`#20
`
`END
`
`f/G. F
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0006
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 5 of 7
`
`US 7,062,765 B1
`
`START
`
`
`
`CONFIGURATIO
`FILE
`
`SOF
`
`IGNORE
`FILE
`
`300
`?
`
`
`DETERMINE
`GENERATE
`
`WHETHER FILE IS
`HANDOFF
`
`TO BE ANALYZED
`UPGRADE
`BY CLIENT
`
`
`REQUEST
`?
`
`
`
`320
`
`
`
`
`DETERMINE
`GENERATE MISSING
`CLIENT
`COMPONENT
`CONDITIONS
`
`
`
`UPGRADE REQUEST
`
`
`
`
`SEND UPGRADE
`REQUEST
`
`
`
`RETURN
`
`-/G, 3
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0007
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 6 of 7
`
`US 7,062,765 B1
`
`600
`
`START
`
`
`
`
`DENY
`UPGRADE
`REQUEST
`
`
`
`
`604
`
`
`
`
`677
`
` SELECT
`
`
`
`COMPONENTS
`ACCORDING TO
`CLIENT PROFILE
`AND /OR
`OPERABLE
`DEPENDENCIES
`
`
`
`
`
`
` O24
`
`676
`
`
`
`COMPONENTS
`IDENTIFIED IN
`DATABASE
`
`
`
`620
`
`
`
`SEND UPGRADE
`RESPONSE
`IDENTIFYING
`COMPONENTS
`
`FIG. 6
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0008
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 7 of 7
`
`US 7,062,765 B1
`
`START
`
`“00
`
`SOS
`
`
`UPGRADE
`REQUEST HAVE
`
`
`NOTIFY USER _
`FAILED
`THAT UPGRADE
`
`
` INFORMATION
`
`?
`
`
`
`
`DOWNLOAD
`
`
`
`COMPONENT
` AUTHENTICATE
`COMPONENT
`
`
` DECOMPRESS
`
`COMPONENT
`
`
`
`
`LAST
`
`
`INSTALL
`
`
`
`
`
`
`FIC. 7
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0009
`
`
`
`
`
`US 7,062,765 Bl
`
`1
`SYSTEM AND METHOD FOR UPDATING
`INFORMATION VIA A NETWORK
`
`
`
`BACKGROUNDOF THE INVENTION
`
`2
`more components for installation on the computer based
`upon the request and the system conditions.
`Another embodiment of the invention includes a com-
`
`puter system having a hardware and software configuration
`subject to change over time, the system comprisingafirst
`1. Field of the Invention
`computer having one or more system resources, a second
`computer operably connected to the first computer,
`the
`second computer associated with one or more installable
`components, a configuration file that is readable by first
`computer, the configuration file identifying at least one of
`said one or more installable components, an upgrade man-
`ager executing on the first computer, the upgrade manager
`configured to transmit
`information about
`the system
`resources ofthe first computer to the second computer, and
`an upgrade handler executing on the second computer, the
`upgrade handler configured to transmit the location of one or
`moreinstallable components from the second computer to
`the first computer based upon the contents of the configu-
`ration file and the system resources of the first computer.
`Yet another embodiment of the invention includes a
`
`Thefield of the invention relates to transmitting computer
`programs and data to a computer via a network. More
`particularly, the invention relates to a system and methodfor
`updating computer programs and data over a computer
`network, the updating based upon client-specific informa-
`tion.
`
`2. Description of the Related Art
`In designing software, developers often need to customize
`computer programs to many varied hardware and software
`configurations, as well to other specific considerations. For
`example, computer programsare often customized toward a
`particular geographic speaking region. A computer user in
`France expects to see help menus and other information
`displayed in French instead of English. Further, for example,
`computer programs are often designed to operate under a
`particular operating system, or even a particular version of
`an operating system.
`As improvements are made in a computer program, many
`of the users are interested in receiving and upgrading to the
`latest version of the computer program. With the advent of
`the Internet, it is now possible for users to almost instanta-
`neously download andinstall such improvements on their
`computers.
`Typically, the user visits an “update”server that hosts the
`improved computer programs. The update server presents to
`the user a list of the different versions of the computer
`programs that are available for installation. Due to the
`number of possible versions that are available for down-
`loading, users are often confused and downloadthe incorrect
`version of the requested software. Although the user may be
`able to readily identify that he is interested in a “French”
`version, the user may not know the version of an operating
`system. Another problem that is encountered is that even if
`the user knows which version is required for operation, the
`user may not know what other computer programs are
`required for proper operation of the upgrade. Disadvanta-
`geously, if the user chooses a version of computer program
`that is incompatible with his particular hardware and/or
`software configuration, possible damage can occur to the
`user’s hardware and/or other software components.
`Therefore, there is a need for a system and a method for
`automatically downloading an appropriate version of an
`computer program without user intervention. Further, the
`system and method should automatically determine the
`hardware and/or the software configuration of the client
`computer and select the appropriate version of the computer
`program.
`
`SUMMARYOF THE INVENTION
`
`The present invention has several aspects, no single one
`of which is solely responsible for its desirable attributes.
`Without limiting the scope ofthis invention as expressed by
`the claims which follow, its more prominent features will
`now bediscussedbriefly.
`One embodiment of the invention includes a method of
`
`the
`selecting components for installation on a computer,
`method comprising receiving a request for the upgrade of
`one or more components, determining one or more system
`conditions regarding the computer, and identifying one or
`
`system for installing one or more components on a client
`computer, the system including a network, a client computer
`operably connected to the network, a configuration file
`identifying at least one of the components, a client computer
`for identifying or more client conditions, and a component
`server for receiving the client conditions and the configu-
`ration file from the client computer, the component server
`identifying the location of one or more components based
`upon the components identified by the configuration file and
`the client conditions.
`Yet another embodiment of the invention includes a
`system for selecting components for installation on a com-
`puter, the system comprising means for receiving a request
`for the upgrade of one or more components, means for
`determining one or more system conditions regarding the
`computer, and means for identifying one or more compo-
`nents based upon the request and the system conditions.
`Yet another embodiment of the invention includes a
`configuration file identifying one or more components for
`installation on a client computer,
`the configuration file
`comprising a plurality of componentidentifiers, each of the
`component identifiers identifying at least one of said one or
`more components, and an expiration time identifying a time
`by which the components must be installed in the client
`computer.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is a high-level block diagram illustrating an
`architectural overview of one embodiment of the present
`invention for updating a client computer.
`FIG.2 is a block diagram illustrating a configuration file
`that is used to specify the componentsthatare to be installed
`in the client computer shown in FIG.1.
`FIG. 3 is a block diagramillustrating a client profile that
`defines the client conditions of the client computer shown in
`FIG.1.
`
`30
`
`35
`
`40
`
`45
`
`55
`
`FIG.4 is a high level flowchart illustrating a process for
`updating the client computer of FIG. 1, the process including
`receiving a user request, transmitting an upgrade request
`from the client computer to the server computer, analyzing
`the upgrade request, and installing one or more components
`identified in the upgrade request.
`FIG.5 is a flowchart illustrating in further detail the steps
`that occur in FIG. 4 with respect to transmitting the upgrade
`request.
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0010
`
`
`
`
`
`US 7,062,765 Bl
`
`3
`FIG.6 is a flowchart illustrating in further detail the steps
`that occur in FIG. 4 with respect to analyzing the upgrade
`request.
`FIG.7 is a flowchart illustrating in further detail the steps
`that occur in FIG. 4 with respectto installing the one or more
`components.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENTS
`
`FIG. 1 is a high-level block diagram illustrating an
`architectural overview of one embodiment of the present
`invention. The system is configured to install one or more
`components 102 on a client computer 104. As used herein,
`the term “components” can include any item of executable
`code or data, or group of such items, that is capable of being
`processed by a computer. As a non-limiting example, the
`components 102 can include: a computer program, a DLL,
`an object code module, a data file, a text file, a Hyper Text
`Markup Language (HTML)file, a graphic or multimedia
`file, a streaming media file, or other such program and/or
`data. The components 102 may optionally be stored in
`compressed form. Further, although only one client com-
`puter 104 is shown in FIG. 1,
`the present
`invention is
`capable for installing the components 102 on a plurality of
`client computers 104 numberingin the tens of thousands and
`upwards.
`The client computer 104 is connected via a network 108
`to a configuration server 112. Furthermore, the client com-
`puter 104 and the configuration server 112 are operably
`connected to a componentserver 116. The componentserver
`116 identifies the location of each the components 102 may
`be installed on a client computer 104. The client computer
`104 is also connected via a network 108 to a download
`server 118. The download server 118 maintains the compo-
`nents 102.
`
`Optionally, the configuration server 112, the component
`server 116, the download server 118, or some combination
`thereof, may be integrated on a single computer platform.
`Further, it is noted the configuration server 112, the com-
`ponent server 116, and the download server 118 may not
`necessarily be located in the same room, building or com-
`plex. In fact, the configuration server 112, the component
`server 116, and the download server 118 could be located in
`different states or countries.
`
`The client computer 104, the configuration server 112, the
`component server 116, and the download server 118 may
`each have any conventional general purpose single- or
`multi-chip microprocessor such as a Pentium® processor, a
`Pentium® Pro processor, a 8051 processor, a MPS® pro-
`cessor, a Power PC® processor, or an ALPHA® processor.
`In addition, the microprocessor may be any conventional
`special purpose microprocessor such as a digital signal
`processor or a graphics processor. Furthermore, the client
`computer 104, the configuration server 112, the component
`server 116, and the download server 118 may be desktop,
`server, portable, hand-held,set-top, or any other desired type
`of configuration. Furthermore, the client computer 104, the
`configuration server 112, and the componentserver 116, and
`the download server 118 each may be used in connection
`with various operating systems such as: UNIX, LINUX,
`Disk Operating System (DOS), OS/2, Windows 3.X, Win-
`dows 95, Windows 98, and Windows NT.
`The network 108 may include any type of electronically
`connected group of computers including, for instance, the
`following networks: Internet, Intranet, Local Area Networks
`(LAN) or Wide Area Networks (WAN). In addition,
`the
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`connectivity to the network may be, for example, remote
`modem, Ethernet (IEEE 802.3), Token Ring (IEEE 802.5),
`Fiber Distributed Datalink Interface (FDDI) or Asynchro-
`nous Transfer Mode (ATM). As used herein, the Internet
`includes network variations such as public internet, a private
`internet, a secure internet, a private network, a public
`network, a value-added network, an intranet, and the like.
`The client computer 104 comprises a user interface mod-
`ule 120, an upgrade manager module 124, and a setup
`manager module 126. As can be appreciated by one of
`ordinary skill in the art, each of the modules 120, 124, and
`126 comprise various sub-routines, procedures, definitional
`statements, and macros. In one embodiment of the inven-
`tion, each of the modules 120, 124, and 126 are made
`available in a shareable dynamic link library. In another
`embodimentof the invention, each of the modules 120, 124,
`and 126 are separately compiled and linked into a single
`executable program. Therefore, the following description of
`each of the modules 120, 124, and 126 is used for conve-
`nience to describe the functionality of the client computer
`104. However, the processes that are undergone by each of
`the modules 120, 124, and 126 maybearbitrarily redistrib-
`uted to one of the other modules or combined together in a
`single module. Furthermore, the user interface module 120,
`the upgrade manager module 124, and the setup manager
`module 126 may be written in any programming language
`such as C, C++, BASIC, Pascal, Java, and FORTRAN.C,
`C++, BASIC, Pascal, Java, and FORTRANare industry
`standard programming languages for which many commer-
`cial compilers can be used to create executable code.
`The function of the modules in the client computer 104 is
`as follows. The user interface module 120 contains routines
`that for handling dialog boxes, message boxes, and other
`routines for presenting information to the user via a com-
`puter display (not shown). The upgrade manager module
`124 handles the communication between the configuration
`server 112 and the component server 116. The upgrade
`manager module 124 also handles communication protocol,
`such as TCP/IP, between program servers, component down-
`loading, and component authentication.
`Furthermore,
`the upgrade manager module 124 deter-
`mines the client conditions of the client computer 104 prior
`to downloading selected ones of the components 102. As
`used herein, the term “client conditions” includes, among
`other things: a preferred operating language, e.g., French,
`English, German,etc., the name of the operating system of
`the client computer 104, any version number that may be
`associated with the operating system, the existence of one or
`more other components of the client computer 104, and/or a
`useridentification number. In one embodiment ofthe inven-
`
`tion, the client conditions are permanently stored in a client
`profile 128. In another embodiment of the invention, the
`client profile 128 is dynamically generated upon each
`upgrade request by the user.
`The setup manager module 126 handlesthe installation of
`the components 102 after the components are transmitted to
`the client computer 104. Furthermore, if necessary, the setup
`manager module 126 registers the downloaded components
`with the operating system on the client computer 104 and
`performsother installation housekeeping.
`The configuration server 112 includes at least one con-
`figuration file 114. It is noted that the term “configuration
`server” is used for convenience to describe any computer
`that can maintain and transmit the configurationfile 114. For
`example, the configuration server 112 can be anytraditional
`“web server” that hosts media content for viewing by users.
`In one embodiment, the configuration server 112 includes a
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0011
`
`
`
`
`
`US 7,062,765 Bl
`
`5
`plurality of web pages that are viewable by a user at the
`client computer 104. The web pages are virtual documents
`that each have embedded links which link portions of the
`virtual pages to other virtual pages and other data. A user can
`traverse the virtual pages and downloaddata by “clicking”,
`with a mouseorother input device a predetermined portion
`of the virtual page.
`According to this embodiment, at least one of the web
`pages includes a “download” hyperlink or icon that
`is
`associated with a configuration file 114. The configuration
`file 114 (FIG. 1) contains the configuration information for
`the installation of one or more components 102 on the client
`computer 104. For example, to advertise a word processing
`component, named “FOOBAR,” a download hyperlink is
`displayed to the user “RECEIVE OUR LATEST PROD-
`UCT, FOOBAR.”If the user is interested in the FOOBAR
`component, the user can simply “click” on the phrase to
`download the configuration file 114 and initiate the down-
`load process.
`In one embodimentof the invention, each of the configu-
`ration files 114 is associated with one of the components
`102. The format of the configuration file 114 can be arbi-
`trary, so long as it is readable by the client computer 104.
`One embodiment of the configuration file 114 is set forth
`below with reference to FIG. 2. The configurationfile 114 is
`adapted such that it may be copied and stored on other
`computers. Advantageously, if one of the components 102 is
`freely distributed or is considered “shareware”, the configu-
`ration file 114 that is associated with such component may
`be copied and distributed to others, and thereby enable
`others to download andinstall the software upon accessing
`the configuration file 114.
`In one embodimentof the invention, before the configu-
`ration file 114 is transmitted from the configuration server
`112 to the client computer 104, the configuration server 112
`requests various items of information from the user for
`registration and demographic tracking purposes.
`The component server 116 manages information about
`each of the components 102 that are installable on the client
`computer 104. To facilitate management and access to the
`information, the component information maybe stored in a
`component database 135. In one embodiment of the inven-
`tion, the components 102 are maintained on the component
`server 116. In another embodiment of the invention, the
`components 102 are maintained on one or more other
`componentservers, such as the download server 118.
`The component server 116 includes at least two modules:
`a connection manager module 130 and an upgrade handler
`module 134. Similar to the modules describes above with
`
`reference to the client computer 104, the processes that are
`undergone by each of the modules 130 and 134 may be
`arbitrarily redistributed to one of the other modules, com-
`bined together in a single module, or made available in a
`shareable dynamic link library. In summary, the function of
`the modules is as follows. The connection manager 130
`handles communication with multiple client computers 104.
`The connection manager 130 packages requested informa-
`tion for transmission across the network 108. The upgrade
`handler 134 is in operable communication with the connec-
`tion manager module 130. The upgrade handler 134 iden-
`tifies components to be downloaded to the client computer
`104 based upon the contents of the client profile 128 and the
`contents of the configuration file 114.
`FIG.2 is a block diagram illustrating the elements of one
`embodiment of the configuration file 114 (FIG. 1). The
`configuration file 114 identifies one or more components for
`downloading to the client computer 104 (FIG. 1). The
`
`35
`
`40
`
`45
`
`50
`
`55
`
`6
`configurationfile 114 maybestored as any type offile, such
`as, for example: a text file, an HTMLfile, or a Java Archive
`(JAR)file. It will be appreciated by one of ordinary skill in
`the art that the configuration file 114 may contain other
`information or have a different format.
`
`The configuration file 114 includes a configuration file
`identifier 202. The configurationfile identifier 202 identifies
`the format of the remainderof the configuration file 114. In
`one embodiment of the invention, at least two types of
`configuration files exist: a client readable configurationfile
`(CRfile) and a server configuration file (SR file). The CRfile
`is configured to be read by the upgrade manager module 124
`(FIG. 1), which parses its contents, and subsequently
`requests the components from the component server 116.
`The SRfile is not parsed by the client computer 104 (other
`than reading the configuration file identifier), but is instead
`forwarded unparsed to the componentserver 116. Advanta-
`geously, to be contrasted with the CR file, any changes in
`formatofthe SRfile requires no corresponding changeto the
`upgrade manager module 124 on each ofthe client comput-
`ers 104. This feature is especially advantageous when used
`in a system having thousands of client computers and
`wherein the upgrade manager module 124 of each of the
`client computers would otherwise have to be upgraded.
`The configuration file 114 also contains a number of
`componentsfield 204 and one or more component identifiers
`208. The number of componentsfield 204 identifies the total
`number of component
`identifiers 208 that are contained
`within the configuration file 114. Each of the component
`identifiers 208 identifies one or more of the components 102
`(FIG. 1). The configuration file 114 also includes an expi-
`ration time field 212. The expiration time field 212 contains
`a time by whichtheinstallation process must be completed,
`otherwise, the componentserver 116 refuses to complete the
`transaction. Since the configuration file 114 may be copied
`to other computers,
`the use of the expiration time can
`advantageously be usedto limit the lifespan of the configu-
`ration file 114, and prevent others from hosting the configu-
`ration file 114.
`FIG.3 is a block diagram illustrating the contents of the
`client profile 128. The client profile 128 identifies client
`conditions, such that when one of the components 102 (FIG.
`1) is designated for installation, a version of the component
`that is compatible with the client conditions may beselected.
`The client profile 128 includes a number of data field
`elements. The data field elements include: a product infor-
`mation field 304, an operating system informationfield 312,
`a distribution codes field 316, a user identification field 320,
`a last update field 324, a language identifier field 328, a
`country identifier field 332, and a state identifier field 336.
`Tt
`is noted that the data fields of the client profile are
`presented for exemplary purposes, and that selected data
`fields of the client profile 128 can be removed andthat other
`data fields may optionally be added.
`A description of each ofthe datafields in theclient profile
`128 is as follows. The production information field 304
`contains product information about one or more components
`that are currently installed in the client computer 104 (FIG.
`1). The product information may include a version number
`and a componentserial number for each installed compo-
`nent. The operating system information field 312 identifies
`the type of operating system that is executing on the client
`computer 104 as well as any version information that is
`associated with the operating system. The distribution codes
`field 316 identifies the distributor of the currently installed
`components. The user identification field 320 contains a
`unique identifier that uniquely identifies the client computer
`
`APPLE
`
`EXHIBI