`
`United States Patent
`
`[19]
`
`[11]
`
`Patent Number:
`
`5,974,454
`Apfel et al.
`Oct. 26, 1999
`Date of Patent:
`[45]
`
`US005974454A
`
`54] METHOD AND SYSTEMFOR INSTALLING
`AND UPDATING PROGRAM MODULE
`COMPONENTS
`
`Attorney, Agent, or Firm—Jones & Askew, LLP
`
`[57]
`
`ABSTRACT
`
`75]
`
`Inventors: Darren A. Apfel, Redmond; Michael
`C. Mathieu,Seattle; Lydja K.
`Williams, Bellevue, all of Wash.
`
`73] Assignee: Microsoft Corporation, Redmond,
`Wash.
`
`21] Appl. No.: 08/970,668
`
`22]
`
`Filed:
`
`Nov. 14, 1997
`
`SL] Unt, C0 eeeccecscssssssesesscsssssseecseessneesees GO06F 9/445
`52] U.S. Che ees eeeeeseee 709/221; 709/218; 395/712
`58] Field of Search 1.000... 709/221, 218;
`395/712
`
`56]
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`3/1998 Kullick et al. oe 395/712
`5,732,278
`9/1998 Bizunehetal.
`we 395/704
`5,805,891
`
`we 709/221
`5,845,077 12/1998 Faweett .....
`6/1999 Park wecececssseessseesssseesseeeen 395/712
`5,909,581
`
`Installing and updating a software program module compo-
`nent. A determination is made whetherthe current date is on
`
`or after a date stored in a registry key on a computer.If the
`current date is on or after the date stored in the registry key,
`then a computer transmits a database query via the Internet
`to a database server. At the database server, a determination
`is made whether an upgrade package for the software
`program module componentis available, such as by per-
`forming a database lookup. If an upgrade package for the
`software program module component is available, then an
`upgrade package messageis sent from the database server to
`the computer. At the computer, a determination is made
`whether the user wants to downloadthe upgrade package. If
`so, then an upgrade package query is sent by the computer
`via the Internet to a package server. At the package server,
`in response to receiving the upgrade package query, the
`upgrade packageis retrieved and sentover the Internet to the
`computer. The upgrade package is then installed on the
`computer to update the software program module compo-
`nent.
`
`Primary Examiner—Robert B. Harrell
`Assistant Examiner—Kenneth R. Coulter
`
`400
`
`y
`
`17 Claims, 5 Drawing Sheets
`
`400
`
`
`
`DISPLAY DIALOG BOX
`TO USER ASKING
`WHETHER USER
`WANTS TO PROCEED
`
`ADD 30 DAYS
`
`
`TO CURRENT
`DATE AND
`STORE RESULT
`IN REGISTRY
`KEY
`
`
`
`SEND HTTP QUERY
`
`TO DATABASE SERVER
`
`
`
`
`
`
`RETURN
`“NOUPDATE”
`
`MESSAGE
`
`
`TO STEP 433
`
`DISPLAY
`ERROR
`MESSAGE
`
`430
`
`
`
`431
`
`DISPLAY
`ALERT.
`DIALOG
`
`432
`
`FROM STEP 427
`433
`
`Cc 5
`SERVER RETURNS
`MESSAGE
`
`439
`
`DISPLAY UPDATE
`Ccnma
`DIALOR BOX
`
`445
`
`ADD 30 DAYS
`TO CURRENT DATE
`AND STORE RESULT
`IN REGISTRY
`
`
`
`INITIATE HTTP
`DOWNLOAD QUERY
`
`cSoO:
`SERVER RETURNS
`COMPUTER
`
`
`
`
`INSTALL UPGRADE
`"ACKAGE AND
`UPDATE REGISTRY
`KEY
`
`EXHIBIT 1004
`
`MICROSOFT CORP.
` !"
`#$%& '(()
`
`Page 1 of 13
`
`APPLE EXHIBIT 1004 - PAGE 0001
`
`
`
`
`
`
`
`U.S. Patent
`
`Oct. 26, 1999
`
`Sheet 1 of 5
`
`5,974,454
`
`a7”
`-“en
`
`oFSIAWeDONd
`NOLWONddV¥
`
`
`
`|:apeo,OSGIAONISSSOONd;;(Wow)
`
`tst—~——STWgec
`
`
`YaldvavLINOsola
`WOLLdO[eze|TIGON,
`
`
`
`”
`
`opGUVOEATY
`
`YOLINOW
`
`LP
`
`O00oO
`
`VauvWOO]
`
`MYOMLSN
`
`SNWALSAS
`
`WINS
`
`LyOd
`
`FOVAYSLNI
`
`AAINCHSIG
`SAINO
`
`OLLANOVW
`SIOGYVH
`
`JOVIYALNI
`JOVIYALNI
`
`SEONIVesdO
`— WdILSAS
`
`
`
`==SWWYDOYd9NOLLWOIIdd
`
`7éNOSSIOONd
`
`NOM
`
`FINGOW
`
`Page 2 of 13
` *
`APPLE EXHIBIT 1004 - PAGE 0002
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Oct. 26, 1999
`
`Sheet 2 of 5
`
`5,974,454
`
`SSS900V
`
`SSd00V
`
`LNIOd
`
`MYOMLAN\)
`
`
`eoCCIC]CrliCl[ae
`
`
`MYOMLANMYOMLANANOPHOVE
`QOL&G9
`w488|488|.°884881488|.888uge
`
`uGBqG8egg
`
`408qo8208A3SLSNYALNI
`yaAuas|:“GLSe[a|JOO3SVaVLVG||MSAMSS|CL.YSANAS
`
`SONASSYdAONSASSYd
`4OLNIOddOLNIOd
`eq’!
`
`
`YSCIAONdSSS0O0VWOO]
`
`qam
`
`YaAYdaS
`
`(ALISHSAINN)
`
`
`
`MYOMLANANOGMOVE
`
`
`
`MYOMLANANOSMOVE
`
`JON3SSud40LNIOd
`
`e0L
`
`MYOMLAN
`
`SSIOOV
`
`LINIOd
`
`Page 3 of 13
`
`APPLE EXHIBIT 1004 - PAGE 0003
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Oct. 26, 1999
`
`Sheet 3 of 5
`
`5,974,454
`
`105
`
`
`
`COMPUTER
`
`
`
`20
`
`
`DATABASE
`SERVER
`80a
`
`
`
`
`
`
`PACKAGE
`SERVER
`80b
`
`FIG.3
`
`Page 4 of 13
` -
`APPLE EXHIBIT 1004 - PAGE 0004
`
`
`
`
`
`
`
`400 DISPLAY DIALOG BOX
`KEY
`
`
`
`
`
`ADD 30 DAYS
`TO CURRENT
`DATE AND
`STORE RESULT
`IN REGISTRY
`
`
`
`
`U.S. Patent
`
`Oct. 26, 1999
`
`Sheet 4 of 5
`
`5,974,454
`
`
`
`TO USER ASKING
`WHETHER USER
`WANTS TO PROCEED
`
`
`
`432
`
`
`
`DISPLAY
`RETURN
`
`
`ALERT
`“NOUPDATE”
`
`
`DIALOG
`MESSAGE
`
`
`
`TO STEP 433 (FIG. 4B)
`
`FIG.4A
`
`Page 5 of 13
` .
`APPLE EXHIBIT 1004 - PAGE 0005
`
`
`
`
`
`
`
`U.S. Patent
`
`Oct. 26, 1999
`
`Sheet 5 of 5
`
`5,974,454
`
`400
`
`FROM STEP 427 (FIG.4A)
`
`433
`
`439
`
`SERVER RETURNS
`“UPDATE”
`MESSAGE
`
`DISPLAY UPDATE
`DIALOG BOX
`TO USER
`
`
`
` 445
`
`
`UPGRADE
`
`
`ADD 30 DAYS
`
`TO CURRENT DATE
`
`
`AND STORE RESULT
`
`
`IN REGISTRY 448
`
`
`
`
`
`UPDATEREGISTRY
`
`INITIATE HTTP
`DOWNLOAD QUERY
`
`SERVER RETURNS
`UPGRADE TO
`COMPUTER
`
`INSTALL UPGRADE
`PACKAGE AND
`
`
`
`FIG.4B
`
`Page 6 of 13
` 0
`APPLE EXHIBIT 1004 - PAGE 0006
`
`
`
`
`
`
`
`5,974,454
`
`1
`METHOD AND SYSTEM FOR INSTALLING
`AND UPDATING PROGRAM MODULE
`COMPONENTS
`
`TECHNICAL FIELD
`
`This invention relates to updating software program mod-
`ule componentsorinstalling new software program module
`components. More particularly,
`this invention relates to
`updating software program module componentsorinstalling
`new software program module components overa distrib-
`uted computer network cithcr automatically, or manually
`based upon user input.
`
`BACKGROUND OF THE INVENTION
`
`Computer software manufacturers are often releasing new
`or upgraded versions of their software program modules.
`Oftentimes, the release of a new or upgraded version of a
`software program module may beto correct bugs or to add
`new features thal were incomplete at the time of the debul
`of the software program module.
`Manyusers of a program module may be unaware that
`new releases or upgrades to a software program module
`have been released. For example, a user may not see the
`press releases related to a new version or upgrade to a
`program module. Moreover, the user may not have regis-
`tered their program module with the software manufacturer
`and, thus, the manufacturer may have no way to contact the
`user regarding the upgrade. Thus, there is a need in the art
`for a system for installing new or upgraded program module
`components that does not require the user to be aware of the
`release date of the new release or upgrade.
`Manufacturing costs of upgrades and new releases may
`also be costly to manufacturers and consumers alike. Manu-
`facturers must manufacture diskettes, CD-ROMs, or other
`data storage media to store the upgrade or new release. This
`manufacturing may be expensive for the manufacturers.
`Shipping costs are also expensive. The expense of manu-
`facturing and shipping will typically be absorbed by the
`consumer and is, thus, expensive to consumers also. Thus,
`there is a further need in the art for a system forinstalling
`new or upgraded software program modules that does not
`involve the added costs of manufacturing and shipping of
`diskettes, CD-ROMs,or other data storage media.
`Software manufacturers sometimes release program mod-
`ules with features that have not been completely developed
`due to time constraints caused by scheduled release dates.
`However, the software manufacturer may know ofa date in
`the future that these features will be completely developed.
`However, due to the inconvenience and expense of upgrad-
`ing to the user, these features may not be included in the
`release until they are fully completed despite their possible
`usefulness to the user. Thus, there is a need in the art for a
`system for installing upgraded software program modules
`that easily, conveniently, and automatically checks for an
`upgraded software program module on a predetermined
`date.
`
`Software manufacturers must sometimes delay, or “slip”,
`the release date of a software program module. Thus,there
`is a need in the art for a system for installing upgraded
`software program modules that allows a software manufac-
`turer to conveniently change, or “slip”, the date on which a
`planned upgradeis released.
`Thus, there is a need in the art for a system for installing
`new or upgraded program module components that does not
`require the user to be aware of the release date of the new
`
`10
`
`15
`
`30
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`release or upgrade. Thereis still a further need in the art for
`a system for installing new or upgraded software program
`modules that does not involve the added costs of manufac-
`
`turing and shipping of diskettes, CD-ROMs, or other data
`storage media. There is also a needin the art for a system for
`installing upgraded software program modules that easily,
`conveniently, and automatically checks for an upgraded
`software program module on a predetermined date.
`
`SUMMARYOF THE INVENTION
`
`The present inventionsatisfies the above-described needs
`by providing a system and method for updating software
`program module components or installing new software
`program module components over a distributed computer
`network, such as the Internet. The update and installation
`tasks may be completed either automatically, or manually
`based upon user input.
`the present invention provides a
`Generally described,
`computer-implemented method for automatically updating a
`software program module componentstored on a computer.
`At
`the computer, a determination is made whether the
`current date is on or after a date stored at the computer. The
`current date is typically the date on the internal clock of the
`computer. The date, which can be stored in a registry key, is
`typically the date that an upgrade for the software program
`module componentis expected to be released.If the current
`date is on or after the date stored in the registry key, then a
`database query is sent from the computer over the Internet
`to a database server. The database query typically is a
`HyperText Transfer Protocol (HTTP) query and caninclude
`information such as the version of the program module
`component to be upgraded, the platform that the program
`module component is running on, and the language of the
`program module component.
`In response to receiving the database query, the database
`server determines whether an upgrade package for the
`software program module componentis available. The data-
`base server can determine whether an upgrade package for
`the software program module component is available by
`performing a database lookup using the information
`includedin the database query. If an upgrade packagefor the
`software program module componentis available, then the
`database server sends over the Internet an upgrade package
`message to the computer. The upgrade package message
`typically includes the URL of a package server at which the
`upgrade package may be found. In response to receiving the
`upgrade package message, the computer may send overthe
`Internet an upgrade package query to the package server.
`The upgrade package query is typically the URL of the
`package server received in the upgrade package message.
`In response to receiving the upgrade package query, the
`package server may retrieve the upgrade package and send
`the upgrade package to the computer. The upgrade package
`typically includes the upgrade for the software program
`module component and a new date to be stored in the
`registry key. The new date is typically the date that the next
`upgrade to the software program module component
`is
`expected. After receiving the upgrade package, the computer
`can install the upgraded software program module compo-
`nent and store the new date in the registry key.
`In one aspect, the database query includes the version of
`the software program module component stored on the
`computer and the Internet address of the database server. In
`yet another aspect,
`the database server and the package
`server may be implemented as a single server connected to
`the Internet.
`
`Page 7 of 13
` 2
`APPLE EXHIBIT 1004 - PAGE 0007
`
`
`
`
`
`
`
`5,974,454
`
`3
`These and other features, advantages, and aspects of the
`present
`invention may be more clearly understood and
`appreciated from a review of the following detailed descrip-
`tion of the disclosed embodiments and byreference to the
`appended drawings and claims.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG.1 is a block diagram of a computer that provides the
`operating environment for an exemplary embodimentof the
`present invention.
`FIG. 2 is a functional block diagram of the Internet
`representing a portion of the operating environment of an
`exemplary embodiment of the present invention.
`FIG.3 is a simplified block diagram illustrating the basic
`components of an exemplary embodiment of the present
`invention.
`
`10
`
`15
`
`FIGS. 4A and 4B are flowcharts illustrating a method for
`automatically updating software program module compo-
`nents or installing new software program module compo-
`nents in accordance with an exemplary embodimentof the
`present invention.
`
`DETAILED DESCRIPTION
`
`The present invention is directed to updating software
`program module components or installing new software
`program module components over the Internet either
`automatically, or manually based upon user input. In one
`embodiment,
`the invention is incorporated into a word
`processor application program entitled “WORD 8.0”, mar-
`keted by Microsoft Corporation of Redmond, Wash. Briefly
`described, the “WORD 8.0” application program allows a
`user to create and edit electronic documents by entering
`characters, symbols, graphical objects, and commands. The
`“WORD8.0” program module includes a Web Authoring
`Components program module. The Web Authoring Compo-
`nents are a set of tools which allows users to create Web
`
`pages. The Web Authoring Components mayalso include an
`auto-autoupdate feature. Auto-autoupdate is a cooperative
`scheduled client “pull” routine designed to automatically
`update the Web Authoring Components program module
`over the Internet when an upgrade becomesavailable. In
`other words,
`the auto-autoupdate feature automatically
`checks for upgrades to the Web Authoring Components
`program module at predetermined dates and downloadsthe
`upgrades when a new upgrade becomes available. The
`auto-autoupdate feature may also be manually selected by a
`user, such as by selecting a menu command,to check for an
`upgrade to the Web Authoring Components program mod-
`ule.
`
`Exemplary Operating Environment
`
`Referring now to the drawings, in which like numerals
`represent
`like elements throughout
`the several
`figures,
`aspects of the present invention and the exemplary operating
`environment will be described.
`
`FIG. 1 and the following discussion are intended to
`provide a brief, general description of a suitable computing
`environment in which the invention may be implemented.
`While the invention will be described in the general context
`of an application program that runs on an operating system
`in conjunction with a personal computer, those skilled in the
`art will recognize that the invention also may be imple-
`mented in combination with other program modules.
`Generally, program modules include routines, programs,
`components, data structures, etc.
`that perform particular
`
`30
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`tasks or implementparticular abstract data types. Moreover,
`those skilled in the art will appreciate that the invention may
`be practiced with other computer system configurations,
`including hand-held devices, multiprocessor systems,
`microprocessor-based or programmable consumer
`electronics, minicomputers, mainframe computers, and the
`like. The invention may also be practiced in distributed
`computing environments where tasks are performed by
`remote processing devices that are linked through a com-
`munications network.
`In a distributed computing
`environment, program modules may belocated in both local
`and remote memorystorage devices.
`With reference to FIG. 1, an exemplary system for imple-
`menting the invention includes a conventional personal
`computer 20,
`including a processing unit 21, a system
`memory 22, and a system bus 23 that couples the system
`memory to the processing unit 21. The system memory 22
`includes read only memory (ROM) 24 and random access
`memory (RAM)25. A basic input/output system 26 (BIOS),
`containing the basic routines that help to transfer informa-
`tion between elements within the personal computer 20,
`such as duringstart-up, is stored in ROM 24. The personal
`computer 20 further includes a hard disk drive 27, a mag-
`netic disk drive 28, e.g., to read from or write to a removable
`disk 29, and an optical disk drive 30, e.g., for reading a
`CD-ROM disk 31 or to read from or write to other optical
`media. The hard disk drive 27, magnetic disk drive 28, and
`optical disk drive 30 are connected to the system bus 23 by
`a hard disk drive interface 32, a magnetic disk drive inter-
`face 33, and an optical drive interface 34, respectively. The
`drives and their associated computer-readable media provide
`nonvolatile storage for the personal computer 20. Although
`the description of computer-readable media above refers to
`a hard disk, a removable magnetic disk and a CD-ROM disk,
`it should be appreciated bythose skilled in the art that other
`types of media which are readable by a computer, such as
`magnetic cassettes, flash memory cards, digital video disks,
`Bernoulli cartridges, and the like, may also be used in the
`exemplary operating environment.
`A numberof program modules maybe stored in the drives
`and RAM 25, including an operating system 35, one or more
`application programs 36, such as a word processor program
`module 37, program data 38, and othcr program modules
`(not shown). The word processor program module 37 may
`include a Web Authoring Components program module 37a
`with an auto-autoupdate feature.
`A user may enter commands and information into the
`personal computer 20 through a keyboard 40 and pointing
`device, such as a mouse 42. Otherinput devices (not shown)
`may include a microphone, joystick, game pad, satellite
`dish, scanner, or the like. These and other input devices are
`often connected to the processing unit 21 through a serial
`port interface 46 that is coupled to the system bus, but may
`be connected by other interfaces, such as a game port or a
`universal serial bus (USB). A monitor 47 or other type of
`display device is also connected to the system bus 23 via an
`interface, such as a video adapter 48. In addition to the
`monitor, personal computers typically include other periph-
`eral output devices (not shown), such as speakers or printers.
`The personal computer 20 may operate in a networked
`environment using logical connections to one or more
`remote computers, such as a remote computer 49. The
`remote computer 49 maybea server, a router, a peer device
`or other common networknode, and typically includes many
`or all of the elements described relative to the personal
`computer 20, although only a memorystorage device 50 has
`been illustrated in FIG. 1. The logical connections depicted
`
`Page 8 of 13
` 4
`APPLE EXHIBIT 1004 - PAGE 0008
`
`
`
`
`
`
`
`5,974,454
`
`5
`in FIG.1 includea local area network (LAN) 51 and a wide
`area network (WAN)52. Such networking environmentsare
`commonplace in offices, enterprise-wide computer
`networks, intranets and the Internet 60, whichis illustrated
`in FIG. 2.
`
`When used in a LAN networking environment, the per-
`sonal computer 20 is connected to the LAN 51 through a
`network interface 53. When used in a WAN networking
`environment, the personal computer 20 typically includes a
`modem54 or other means for establishing communications
`over the WAN 82, such as the Internet 60 (FIG. 2). The
`modem 54, which maybe internal or external, is connected
`to the system bus 23 via the serial port interface 46. In a
`networked environment, program modules depictedrelative
`to the personal computer 20, or portions thereof, may be
`stored in the remote memory storage device. It will be
`appreciated that the network connections shown are exem-
`plary and other meansofestablishing a communications link
`between the computers may be used.
`Referring now to FIG. 2, an exemplary embodimentofthe
`present invention provides for the downloading of upgraded
`versions of the Web Authoring Components program mod-
`ule 37a to the user’s computer 20 from a package server 805
`via the Internet 60 which is described below in reference to
`
`FIG. 2. As will be discussed, new program module compo-
`nents mayalso be obtained from the package server 80b via
`the Internet 60.
`
`FIG.2 is a functional block diagram of the Internet 60, a
`distributed electronic computing network that provides a
`portion of the operating environment for an exemplary
`embodiment of the present invention. The Internet has in
`recent years become a mainstream commercial communi-
`cation resource. E-mail and remote access to computer
`servers are currently widely used tools for reaching custom-
`ers. The participants in the Internet are a wide variety of
`machines, organizations, and individuals, all able to com-
`municate and share information. Physically, the Internet is
`an interconnected collection of thousands of computer
`networks,
`tens of thousands of computers, and tens of
`millions of individual stations operated by end-users. The
`user of the present invention is preferably such an end-user.
`As is well-known to those skilled in the art, to access an
`Internet site, an end-user need only transmit
`the site’s
`universal resource locator (URL)created in accordance with
`the standardized Domain Name System (DNS).
`The Internet 60 includes a plurality of backbone networks
`65a through 651. These backbone networks form an inter-
`national grid of high-speed, high-capacity data communica-
`tion lines interconnecting a number of massive computers
`that serve as large-scale processing points or nodes. The
`backbone networks 65 are interconnected with each other
`
`through a plurality of network access points 70a through
`70n. These network access points are interfaces through
`which information is communicated from one backbone
`
`network to another. The configuration and operation of the
`Internet backbone is well-known to those skilled in the art
`and will not be further described herein.
`
`The Internet 60 includes a plurality of Internet sites 75a
`through 75n. These Internet sites are generally operated by
`corporations, universities, and governmental organizations.
`Each Internet site may include one or more repositories of
`information and resources that may be accessed over the
`Internet. Each Internet site, as represented by the Internet
`site 75a, mayincludea plurality of web servers 80a through
`807, such as database server 80a and package server 80b.
`Each of these web servers may provide “home pages”to be
`
`10
`
`15
`
`30
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`visited, files to be read or downloaded, applications to be
`shared, and the like.
`The Internet 60 also includes a plurality of points of
`presence 85a through 85x that are operated by local access
`providers. These local access providers are in the business of
`providing Internet access to end-user stations. In an exem-
`plary embodiment of the present invention,
`the personal
`computer 20, shown in FIG. 1, is an end-user station. As
`shownin FIG, 2, the point of presence 85a provides Internet
`access to the personal computer 20 (end-user station) and
`other end-user stations 88a through 88n, the point of pres-
`ence 85b provides Internet access to end-user stations 88a'
`through 887’, etc. All together, the points of presence 85 can
`provide Internet access to numerous end-userstations 88.
`Each point of presence 85, and each end-user station 88,
`may, but need not, provide home pages for access by others
`on the Internet 60.
`
`As stated above, the personal computer 20, illustrated in
`FIG. 1,is also illustrated as an end-user station connected to
`the Internet 60, illustrated in FIG. 2. As will be understood
`from the following discussion, an exemplary embodiment of
`the present invention provides for downloading program
`module components maintained on an Internet-based pack-
`age server 80b (FIG. 2) to the local computer 20 (FIGS. 1
`and 2).
`
`Installing and Updating Program Module
`Components
`
`Briefly described, the present invention can update soft-
`ware program module components or install new software
`program module components over the Internet either
`automatically, or manually based upon user input. FIG. 3 is
`a simplified block diagram illustrating the components of an
`exemplary embodiment of the present invention. FIG. 3
`includes elements from FIGS. 1 and 2 such as computer 20,
`database server 80a, and package server 80b.
`In an exemplary embodiment of the present invention,
`computer 20 sends a query 100 on orafter a predetermined
`date over the Internet to database server 80a. It should be
`
`understood that database server 80a may be a server at any
`URLspecified in an auto-autoupdate registry key. The URL
`in the auto-autoupdate registry key may be customized by a
`user, such as by an administratorat the time of deploying the
`“WORD 8.0” program module. The predetermined date is
`typically the date that an upgrade is expected for one or more
`program modules stored on computer 20. The predetermined
`date is typically stored in an auto-autoupdate registry key as
`will be further described below. The query 100 includesall
`of the information regarding computer 20 that the database
`server 80a needs to determine if an upgradeis available and,
`if an upgrade is available, to determine the location of the
`upgrade package.
`the database server 80a
`After
`reviewing query 100,
`returns a response 105 over the Internet to the computer 20.
`If an upgrade is not available, the database server 80a will
`return a response 105 that indicates that no upgrade is
`available and that includes the date that an upgrade is
`expected. If there will be no more upgradesin the future, or
`if an administrator has decided to turn off the update feature
`of this embodiment, then the database server 80a will return
`a response that will deactivate the auto-autoupdate feature.
`However, if an upgrade is available, then the database
`server 80a will send back a response 105 that includes the
`URLof the upgrade package. It should be understood that
`each configuration of computer 20 may require a different
`upgrade package and, therefore, a different URL. The data-
`
`Page 9 of 13
` 6
`APPLE EXHIBIT 1004 - PAGE 0009
`
`
`
`
`
`
`
`5,974,454
`
`7
`base server 80a may also send back the URL ofan alterna-
`tive download site in case the primary downloadsite is
`overloaded.
`
`After the computer 20 receives the response 105 including
`the URLof the upgrade package, the computer 20 will send
`a query 110 to the package server 80b at the URL ofthe
`update package. The package server 80b will send the
`update package 115 to the computer 20 and the computer 20
`will then install the update package 115.
`It should be understood from the above description of an
`exemplary embodimentof the present invention that a server
`or servers capable of handling the traffic caused by this
`update feature must be maintained. The servers are respon-
`sible for assessing whether an upgrade is available and
`whether it should be downloaded based on the information
`
`sent by computer 20. For example, even if an upgrade is
`available, it should not be downloaded if the computer 20
`already has the upgrade or if the upgrade is somehow
`incompatible with computer 20. The servers are further
`responsible for providing the downloadtarget in the form of
`an URL if a new upgradeis available. Providing the URL
`may include load balancing between servers because if a
`primaryserver has a high volume, URLsofalternate servers
`with the same upgrade package maybeutilized. It should be
`further understood from the above description that
`the
`servers may also provide a “next check”date if there is not
`an upgrade currently available.
`Having generally described an exemplary embodiment
`above in reference to FIG. 3, a more detailed description of
`an exemplary embodiment of the present invention is pre-
`sented below in reference to FIGS. 4A and 4B.
`
`FIGS. 4A and 4B are flowcharts illustrating a method 400
`for automatically updating software program module com-
`ponents or installing new software program module com-
`ponents in accordance with an exemplary embodimentofthe
`present invention. Those skilled in the art will appreciate
`that this exemplary embodimentis a computer-implemented
`process that is carried out by the computer in response to
`input from the user and instructions provided by an appli-
`cation program module.
`Referring to FIG. 4A, the method 400 beginsat step 403
`and proceeds to decision step 406 after the word processor
`program module 37 is booted and the Web Authoring
`Components program module 37ais initialized. At decision
`step 406, it is determined whether or not the current date is
`greater than or equal to a date stored in a registry key by the
`Web Authoring Components program module 37a. In the
`exemplary embodiment, when the Web Authoring Compo-
`nents program module is initially installed, a registry key
`will typically be set equal to the date that an upgradeto the
`Web Authoring Components program module is expected.
`The current date is the date that is maintained onthe internal
`
`clock of computer 20.
`If, at decision step 406, it is determined that the current
`date is less than the date stored in the registry key, then the
`method endsat step 499. However,if, at decision step 406,
`it is determinedthat the current date is greater than or equal
`to the date stored in the registry key,
`then the method
`proceeds to step 409. For example, suppose the date that a
`software producer expects an upgraded version of the Web
`Authoring Components program module to be available is
`Sep. 1, 1998. Then, the software producer will design the
`Web Authoring Components program module so that the
`date Sep. 1, 1998 is stored in the regisiry key when the Web
`Authoring Components program module is initially
`installed. Thus, whenever the Web Authoring Components
`
`10
`
`15
`
`30
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`8
`program module is initialized before Sep. 1, 1998, no action
`is taken and the method ends at step 499. However, when-
`ever the Web Authoring Components program module is
`initialized on or after Sep. 1998, the method proceedsto step
`409.
`
`At step 409, a dialog box is displayed to the user on
`monitor 47 warning that a dial-up connectionto the Internet
`is necessary to proceed with upgrading the Web Authoring
`Components program module and asking whether the user
`wants to proceed. The user mayeither select to proceed with
`allempting to upgrade the Web Authoring Components pro-
`gram module or select to terminate the upgrade attempt,
`such as by selecting a checkbox or yes/no buttons in the
`dialog box with mouse 42. Step 409 is typically performed
`to warn the user that a dial-up connection to the Internet is
`necessary.
`
`After the user selects either to proceed or to terminate at
`step 409,
`the method proceeds to decision step 412. At
`decision step 412, it is determined whetherthe user selected
`to proceed with the dial-up connection. If so,
`then the
`method proceeds to step 415.
`If not,
`then the method
`proceeds to step 424. At step 424, 30 days is added to the
`current date to determine a next check date to be stored in
`
`the registry key. This next check date is then stored in the
`registry key. Thus, the next check date stored in the registry
`key will prevent the auto-autoupdate feature from being
`automatically initiated again until 30 days from the current
`date. After step 424, the method endsat step 499. It should
`also be understood that the user has the option of selecting
`a checkbox that reads “Don’t ask me again”. When this
`checkbox is selected, all future auto-autoupdate actions are
`disabled, preferably by setting the date in the registry key
`equal to “—1”. If not, then the method endsat step 499.
`
`Still referring to FIG. 4A, at step 415, a HyperText
`Transfer Protocol (HTTP) query is initiated and sent from
`computer 20 over the Internet to the database server 80a.
`The HTTP query may be sent asynchronously so that the
`user may perform other tasks while the query is being sent.
`To construct
`the query,
`information about
`the setup of
`computer 20 is appended to a H'Il'lP Internet address stored
`in the form of a standard HTTP query. The HTTP Internet
`address is typically stored when the Web Authoring Com-
`ponents program module is initially installed. However, it
`should be understood that
`this Internet address may be
`edited to direct the query to an internal server, such as if an
`administrator would like to control upgrades internally
`rather than over the Internet. The query is structured to
`identify the information needed to determine which upgrade
`package URLis required by comp