`US 7,062,765 B1
`(10) Patent No.:
`Pitzel et al.
`(45) Date of Patent:
`Jun. 13, 2006
`
`US007062765B1
`
`(54)
`
`(75)
`
`SYSTEM AND METHOD FOR UPDATING
`INFORMATION VIA A NETWORK
`
`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 HIS)
`
`( * )
`
`Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`(21)
`
`Appl. No.: 09/318,438
`
`(22)
`
`Filed:
`
`May 25, 1999
`
`Int. Cl.
`
`(51)
`
`(2006.01)
`G06F 9/445
`(2006.01)
`G06F 15/16
`(2006.01)
`G06F 9/44
`US. Cl.
`...................... 717/177; 709/201; 709/203;
`717/175; 717/176; 717/178; 717/168
`Field of Classification Search .................... 717/1,
`717/11, 1687178, 125, 103; 709/220, 223,
`709/201, 203; 713/1, 178; 711/133
`See application file for complete search history.
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`(52)
`
`(58)
`
`(56)
`
`4,558,413
`5,019,963
`5,155,847
`5,247,683
`5,339,432
`5,408,619
`5,421,009
`5,421,017
`5,457,778
`5,473,772
`5,493,728
`5,537,596
`5,557,798
`
`*
`
`A * 12/1985
`5/1991
`10/1992
`9/1993
`8/1994
`4/1995
`5/1995
`5/1995
`* 10/1995
`12/1995
`2/1996
`7/1996
`9/1996
`
`>>>>>>>>>>>>
`
`..
`
`........... 707/203
`Schmidt et a1.
`........... 364/200
`Alderson et a1.
`..... 395/600
`Kirouac et a1.
`..
`..... 395/700
`Holmes et a1.
`..
`
`........ 713/1
`Crick ..........
`
`Oran ...............
`........... 395/325
`Platl ................
`........... 395/600
`Scholz et a1.
`..... 395/700
`
`Sieffert
`............
`..... 345/501
`
`..... 395/650
`Halliwell et a1.
`
`........... 395/250
`Solton et a1.
`Yu et a1.
`..........
`........... 395/700
`Skeen et a1.
`.....
`........... 395/650
`
`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 a1.
`4/1997 Nonaka et a1.
`............. 395/800
`.....
`.. 395/200.5
`9/1997 Metz et a1.
`
`..
`......... 395/616
`10/1997 Siljestroemer
`
`........... 395/187.01
`12/1997 Baker et a1.
`1/1998 Barbara et a1.
`.
`395/200.09
`
`1/1998 Dedrick ..........
`395/200.47
`2/1998 Dedrick ............... 395/613
`
`.............. 395/712
`3/1998 Kullick et a1.
`
`(Continued)
`OTHER PUBLICATIONS
`
`TITLE: Client-Server Computing, author: Alok Sinha,
`ACM, Jul. 1992*
`TITLE: Managing Update Conflicts in Bayou, A Weakly
`Connected Replicated Storage System, author: Terry et al,
`ACM, 1995*
`
`(Continucd)
`
`Primary Examiner%hameli C. Das
`(74) Attorney, Agent,
`or Firmisteven C. Stewart,
`RealNetworks, Inc.
`
`(57)
`
`ABSTRACT
`
`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
`begin the upgrade, the client computer reads a configuration
`file that identifies the components for downloading. Upon
`receipt of the configuration file, the client computer deter-
`mines the hardware and software configuration of the client
`computer. The client computer automatically communicates
`with a component server via a network and requests one or
`more components for downloading to the client computer
`based upon the configuration file and the hardware and
`software conditions of the client computer.
`
`51 Claims, 7 Drawing Sheets
`
`502
`
`50H
`
`CLIENT REQUEST
`UPGRADE
`
`
`
`
`504
`
`VALID
`CONFIGURATIO
`FILE7
`YES
`
`”0
`
`
`IGNORE
`
`FILE
`
`
`
`
`.515
`5/2
`DETERMINE
`GENERATE
` UPGRADE
`NO
`WHETHER FILE IS
`HANDOFF
`TO BE ANALYZED
`
`
`BY CLIENT
`REQUEST
`
`9
`520
`
`DETERMINE
`GENERATE MISSING
`
`CLIENT
`COMPONENT
`
`CONDITIONS
`
`
`UPGRADE REQUEST
`
`
`
`
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0001
`
`
`
`
`
`US 7,062,765 B1
`
`Page 2
`
`US. PATENT DOCUMENTS
`
`OTHER PUBLICATIONS
`
`3/1998 He. ............................. 395/619
`5,734,898 A
`
`.
`av1s e a .
`33/57/1121
`1133: Emmy e: 3:
`2'322'333 g
`’
`’
`
`..
`. 395/172
`5/1998 Cole etal.
`5,752,042 A
`
`5/1998 Gregerson .....
`.. 707/10
`5,758,342 A
`6/1998 Kullick et al.
`395/712
`5,764,992 A
`
`.. 395/200.79
`6/1998 Metz et al.
`.
`5,768,539 A
`.. 395/200.51
`8/1998 Sadowsky
`5,790,796 A
`
`8/1998 LIIhCh """"""" 395/703
`5790356 A
`
`3133: $2311); ’51"""3953/331322
`2,3833% g
`
`9/1998 Stupek et 31.
`395/500
`5,809,287 A
`
`
`10/1998 Bredenberg
`707/2
`5,826,253 A
`11/ 1998 Olds .......................... 395/712
`5,832,275 A
`11/1998 OldS et al.
`.................... 707/10
`5,832,487 A
`
`'5'953/‘21393
`ii;133:
`lljeel 6331'
`g'gjg'gg g
`
`..
`awce
`.
`,
`,
`
`12/1998 Collins, III etal.
`395/200.51
`5,845,090 A
`12/1998 Marsh et a1.
`............. 705/14
`5,848,397 A
`
`12/1998 Northrup
`.. 395/20033
`5,850,518 A
`1/1999 Cuomo et al.
`...... 345/326
`5,861,883 A
`l/l999 Reed et al.
`.
`395/200.3l
`5,862,325 A
`
`................. 395/712
`2/1999 Todd et al.
`5,867,714 A
`2/1999 Beyda ........................ 395/712
`5,870,610 A
`
`7/1999 Ma et 31'
`' 717/171
`59205725 A
`18/1333 iu§t?ntetlal' ”””””””” 717/11
`2232i?! g
`5,978,911 A * “/1999 K506861211
`713/1
`6,009,274 A * 12/1999 Fletcher et a1.
`............. 395/712
`6,038,601 A 4
`3/2000 Lambert et 31.
`709/226
`
`6,058,445 A *
`5/2000 chm et a1.
`. 710/103
`...................... 711/133
`6,073,214 A *
`6/2000 Fawcett
`6,128,656 A * 10/2000 Matchefts et al.
`...... 709/223
`6,144,992 A *
`11/2000 Turpin et al.
`..
`. 709/208
`
`6,151,643 A :
`11/2000 Cheng et al.
`................. 710/36
`25133523261 3i *
`$5881 gllsrahet 31' ““““““““ 33%;;
`
`'
`'
`,,
`011° “e
`3/2001 Donohue .................... 717/173
`6,202,207 B1
`6 233 341 Bl *
`5/2001 Riggins ...................... 380/277
`
`6:246:770 B1 4
`6/2001 Stratton et 31.
`. 380/281
`.............. 709/223
`6,253,240 Bl *
`6/2001 Axberg et al.
`6,256,668 B1 *
`7/2001 Slivka et al.
`............... 709/220
`6263364 31*
`7/2001 Najork et 31.
`..
`. 709/217
`
`.............. 717/171
`6,314,565 B1 :
`11/2001 Kenner et a1.
`6'330'600 Bl * 12/2001 MatChefis et 31'
`""" 709/223
`
`6,34l,373 Bl *
`l/2002 Shaw ............
`717/173
`6/2002 Miron ........................ 707/203
`6,401,239 B1
`6 463 433 B1 * 10/2002 Baclawski
`7075
`
`6,463,473 Bl * 10/2002 Gubbi
`. 709/225
`6,496,875 B1* 12/2002 Cheng et al.
`.................. 710/1
`6,505,058 B1*
`1/2003 Willey ........................ 455/574
`
`6,512,954 B1 *
`1/2003 Fox et a1.
`607/31
`........................... 370/256
`6,535,490 B1 *
`3/2003 Jain.
`25:53:45? 3i : 13/388: 8:528:21
`703/22):
`
`6,871,221 B1 *
`3/2005 Styles
`........................ 709/221
`
`TITLE Efl’icient Transparent Application Recovery in C1i-
`ent-Server Information Systems, author: Lomet et al, ACM,
`1998*
`“
`,,
`Barry Nance: When Pugh comes to serVe BYTE: JUL
`1998,1311 98-102
`Pete Loshin, “Tune I11, Turn 011 the Web” BYTE, Feb. 1997,
`Pp 145-146.
`Michael Fisk, “Automating the Administration of Hetero-
`geneous LANs” USENIX AssociationiProceedings of the
`Tenth Systems Admlnlstratlon Conference Sep.-Oct. 1996,
`1311 181-186
`Gansheimer,
`and Wilfried
`Osel
`Peter
`W.
`“OpenDistilncremental Software Distribution” USENIX
`AssociationiProceedings of the Ninth Systems Adminis-
`-
`_
`tranonconferencefi‘sell 1995’ pp‘ 181 193‘.
`Atsushl Futakata, Patch Control Mechanism for Large
`Scale Software” USENIX AssociationiProceedings of the
`Nmth Systems Admlmstratlon Conference, SEll 1995, PB
`213-219.
`for Flexible Software
`Thomas Eirich, “Beam: A Tool
`Update” LISA, Sep. 1994, pp. 75-82.
`John Lockard and Jason Larke, “Synctree for Single Point
`Installation, Upgrades,
`and OS
`Patches” USENIX
`AssociationiProceedings of the Twelfth Systems Admin-
`Imam“ Conference, 1330' 1998: 1313' 2611270
`.
`Ram R. Vangata, Michale Cnpps and Raj .G. VaradaraJan,
`“Software Dlstrlbutlon and Management in a Networked
`Environment” USENIX AssociationiProceedings of the
`Sixth Systems Administration Conference, Oct. 1992, pp.
`163-170.
`Bobby Krupczak, Kenneth L. Calvert and Mostafa Ammar,
`“Implementing Protocols in Java: The Price of Portability”
`IEEE Infocom ’98, vol. 2, pp. 765-773.
`.
`.
`.
`“
`.
`.
`Vlnay Kamtkar and Alex Dells: Real'TIme Chem'serVer
`Push Strategies: Specification and Evaluation” IEEE Com-
`puter SOClety Techmcal Commmee 011 Real-Tlme Systemsa
`1998, pp. 179-188.
`Yun—Wu Huang and Philip S. Yu, “A Bandwidth-Sensitive
`Update Scheduling Method for Internet Push” IEEE Com-
`puter Society Technical Committee on Distributed Process-
`ing, May 1998, pp. 303-310.
`.
`“
`.
`,,
`Cliff Berg, How Do I Create a Slgned Castanet Channel?
`DP DOPb’S Journal, J31113199551311 1.21430
`.
`Llng L111: Canon Pu: W61 Tang, DaYId Buttlers John Blggss
`Tong Zhou, Paul Bennlnghoff, Wel Han and Fenghua Yu,
`“CQ: A Personalized Update Monitoring Toolkit” Sigmod’
`987Proceedings of ACM SIGMOD International Confer-
`ence on Management of Data, Jun. 1998, pp. 547-549.
`* cited by examiner
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0002
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 1 0f 7
`
`US 7,062,765 B1
`
`755
`
`COMPONENT
`
`DATABASE
`
`
`
`
`775
`
`COMPONENT SERVER
`
`7.34
`
`UPGRADE
`
`HANDLER
`
`CONHGURAWON
`
`
`
`
` MODULE
`SERVER
`
`
`CONNECUON
`
`
`
`
`MANAGER
`
`MODULE
`
`CONHGURAWON
`
`FlE
`
`
`
`COMPONENT i
`
`DOWNLOAD
`
`SERVER
`
`7/5
`
`
`
`
`COMPUTER
`
`CUENT
`
`PROHLE
`
`
`
`
`
` CUENT
`
`
`720
`
`
`
`
`
`
`SETUP
`UPGRADE
`USER
`MANAGER
`MANAGER
`INTERFACE
`
`
`
`MODULE
`MODULE
`MODULE
`
`
`
`
`
`
`
`247637
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0003
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 2 0f 7
`
`US 7,062,765 B1
`
`7/4\
`
`204
`
`206’
`
`202
`
`
`
`2/2
`
`
`
`
`
`
`
`
`
`
`
`
`< COMPONENT IDENTIFIER N >
`
`< EXPIRATION TIME >
`
`F/éi2
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0004
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 3 0f 7
`
`US 7,062,765 B1
`
`CLIENT PROFILE
`
`504
`
`PRODUCT
`
`INFORMATION
`
`LAST
`
`UPDATE
`
`324
`
`.328
`
`IDENTIFIER
`
`OPERATING SYSTEM
`
`INFORMATION
`
`LANGUAGE
`
`IDENTIFIER
`
`.332
`
`DISTRIBUTION
`
`CODES
`
`COUNTRY
`
`IDENTIFIER
`
`5.35
`
`USER
`
`STATE
`
`IDENTIFICATION
`
`W35
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0005
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 4 0f 7
`
`US 7,062,765 B1
`
`400
`
`START
`
`404
`
`USERINYHATES
`
`UPGRADE REQUEST
`
`405’
`
`CUENT GENERATES AN
`
`SENDSIT TO THE SERVER
`
`UPGRADE REQUEST AND
`
`4 72
`
`475
`
`SERVER ANALYZES THE REQUEST
`
`AND SENDS AN UPGRADE RESPONSE
`
`
`
`BACK TO THE CUENT
`
`CUENT PARSES THE RESPONSE
`AND DOWN LOADS/INSTALLS
`
`REQUESTED UPGRADE
`
`420
`
`END
`
`F/6i4’
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0006
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 5 0f 7
`
`US 7,062,765 B1
`
`500
`
`502
`
`CLIENT REQUEST
`
`UPGRADE
`
`
`
`
`
`
`
`
`
`?
`
`504’
`
`508
`
`CONFIGURATIO
`
`FILE
`
`IGNORE
`
`FILE
`
`GEN ERATE
`
`DETERMINE
`
`
`WHETHER FILE IS
`
`TO BE ANALYZED
`
`UPGRADE
`BY CLIENT
`REQUEST
`
`
`9
`
`
`HANDOFF
`
`
`
`5.20
`
`DETERMINE
`
`
`
`
`
`
`GENERATE MISSING
`
`CLIENT
`COMPONENT
`CONDITIONS
`UPGRADE REQUEST
`
`
`
`
`SEND UPGRADE
`REQUEST
`
`
`
`
`
`RETURN
`
`F7675
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0007
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 6 of 7
`
`US 7,062,765 B1
`
`
`
`START
`
`660
`
`
`
`DENY
`UPGRADE
`UPGRADE
`
`
`REQUEST
`REQUEST
`
`
`
`EXMRED
`
`
`
` SELECT
`
`COMPONENTS
`
`
`
`6U4
`
`
`
`5L?
`
`ACCORWNG TO
`
`CUENT PROHLE
`AND/OR
`OPERABLE
`
`DEPENDENOES
`
`6h?
`
`
`
`COMPONENTS
`IDENWHEDIN
`
`DATABASE
`
`
`
`
`
`
` 62%
`
`d2?
`
`
`
`SEND UPGRADE
`
`RESPONSE
`
`IDENWFflNG
`
`COMPONENTS
`
`#636”
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0008
`
`
`
`
`
`U.S. Patent
`
`Jun. 13, 2006
`
`Sheet 7 0f 7
`
`US 7,062,765 B1
`
`700
`
`UPGRADE
`
`
`
`REQUEST HAVE
`NOHFY USER ,
`
`AVAlABLE COMPONENT
`THAT UPGRADE
`
`
`
`INFORMAWON
`
`
`
`?
`
`DOWNLOAD
`
`COMPONENT
`
`AUTHENWCATE
`
`COMPONENT
`
`DECOMPRESS
`
`COMPONENT
`
` START
`
`
` 705’
`FAlED
`
`
`
`
`
`
`
`
`
`
`LAST
`COMPQNENT
`
`'
`INSTALL
`COMPONENTS
`
`
`/‘7Z2
`
`,77
`
`APPLE
`
`EXHIBIT 1005 - PAGE 0009
`
`
`
`
`
`US 7,062,765 B1
`
`1
`SYSTEM AND METHOD FOR UPDATING
`INFORMATION VIA A NETWORK
`
`
`
`BACKGROUND OF THE INVENTION
`
`1. Field of the Invention
`
`The field 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 method for
`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 programs are often customized toward a
`particular geographic speaking region. A computer user in
`France expects to see help menus and other infom1ation
`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 and install 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, uscrs arc oftcn confuscd and download thc incorrcct
`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.
`
`SUMMARY OF THE INVENTION
`
`The present invention has several aspects, no single one
`of which is solely responsible for its desirable attributes.
`Without limiting the scope of this invention as expressed by
`the claims which follow, its more prominent features will
`now be discussed briefly.
`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
`
`10
`
`15
`
`20
`
`5
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`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 comprising a first
`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 of the 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
`more installable 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
`
`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 component identifiers, 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 components that are to be installed
`in the client computer shown in FIG. 1.
`FIG. 3 is a block diagram illustrating a client profile that
`defines the client conditions of the client computer shown in
`FIG. 1.
`
`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 B1
`
`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 respect to 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 numbering in the tens of thousands and
`upwards.
`The client computer 104 is connected via a network 108
`to a configuration scrvcr 112. Furthcrmorc, thc clicnt com-
`puter 104 and the configuration server 112 are operably
`connected to a component server 116. The component server
`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 microproccssor such as a Pcntium® proccssor, 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 component server 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 intemet, a private
`internet, a secure intemet, 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
`embodiment of 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 may be arbitrarily 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 FORTRAN are 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
`user identification number. In one embodiment of the 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 handles the 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
`performs other 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 configuration file 114. For
`example, the configuration server 112 can be any traditional
`“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 B1
`
`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. Auser can
`traverse the Virtual pages and download data by “clicking”,
`with a mouse or other 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 embodiment of 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 configuration file 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 and install the software upon accessing
`the configuration file 114.
`In one embodiment of 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 may be 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
`component servers, 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
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`configuration file 114 may be stored as any type of file, such
`as, for example: a text file, an HTML file, 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 configuration file identifier 202 identifies
`the format of the remainder of the configuration file 114. In
`one embodiment of the invention, at least two types of
`configuration files exist: a client readable configuration file
`(CR file) and a server configuration file (SR file). The CR file
`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 SR file is not parsed by the client computer 104 (other
`than reading the configuration file identifier), but is instead
`forwarded unparsed to the component server 116. Advanta-
`geously, to be contrasted with the CR file, any changes in
`format of the SR file requires no corresponding change to the
`upgrade manager module 124 on each of the 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
`components field 204 and one or more component identifiers
`208. The number of components field 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 which the installation process must be completed,
`otherwise, the component server 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 used to 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 be selected.
`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 information field 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.
`It
`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 and that other
`data fields may optionally be added.
`A description of each of the data fields in the client profile
`128 is as follows. The produ