`Apfel et al.
`
`US005974454A
`[ii] Patent Number:
`[45] Date of Patent:
`
`5,974,454
`Oct. 26,1999
`
`[54] METHOD AND SYSTEM FOR 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
`
`Nov. 14, 1997
`
`[22] Filed:
`[51] Int. CI.6
`[52] U.S. CI
`[58] Field of Search
`
`G06F 9/445
`709/221; 709/218; 395/712
`709/221, 218;
`395/712
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`5,732,275 3/1998 Kullick et al
`5,805,891 9/1998 Bizuneh et al
`5,845,077 12/1998 Fawcett
`5,909,581 6/1999 Park
`
`Primary Examiner—Robert B. Harrell
`Assistant Examiner—Kenneth R. Coulter
`
`403
`
`395/712
`395/704
`709/221
`395/712
`
`.400
`
`f
`
`499
`
`DISPLAY DIALOG BOX
`TO USER ASKING
`WHETHER USER
`WANTS TO PROCEED
`
`SEND HTTP QUERY
`TO DATABASE SERVER
`
`YES
`
`TO STEP 433
`
`,424
`
`ADD 30 DAYS
`TO CURRENT
`DATE AND
`STORE RESULT
`IN REGISTRY
`KEY
`
`, 4 32
`
`STORE
`ENCODED
`DATE IN
`REGISTRY
`KEY
`
`430
`
`,437
`
`DISPLAY
`ALERT
`DIALOG
`
`Installing and updating a software program module compo(cid:173)
`nent. A determination is made whether the 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 component is available, such as by per(cid:173)
`forming a database lookup. If an upgrade package for the
`software program module component is available, then an
`upgrade package message is sent from the database server to
`the computer. At the computer, a determination is made
`whether the user wants to download the 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 package is retrieved and sent over the Internet to the
`computer. The upgrade package is then installed on the
`computer to update the software program module compo(cid:173)
`nent.
`
`17 Claims, 5 Drawing Sheets
`
`400
`
`FROM STEP 427
`
`433
`
`SERVER RETURNS
`"UPDATE"
`MESSAGE
`
`.439
`
`DISPLAY UPDATE
`DIALOG BOX
`TO USER
`
`INITIATE HTTP
`DOWNLOAD QUERY
`
`451
`
`SERVER RETURNS
`UPGRADE TO
`COMPUTER
`
`,454
`
`INSTALL UPGRADE
`PACKAGE AND
`UPDATE REGISTRY
`KEY
`
`,445
`_L
`ADD 30 DAYS
`TO CURRENT DATE
`AND STORE RESULT
`IN REGISTRY
`KEY
`
`Page 1 of 13
`
`
`
`U.S. Patent
`
`Oct. 26,1999
`
`Sheet 1 of 5
`
`5,974,454
`
`hii
`C")
`
`<*3
`
`CO] Ml
`
`101 nl
`
`h oS
`
`Q.
`a:^
`Q ^ LU
`n^S-i
`gcoirr)
`O W ^Q
`
`Q_
`Zm
`
`j -5 yS
`
`PRO
`APPL
`
`0
`z^
`
`YSTE
`ERAT
`
`Q.W
`1 O
`
`Page 2 of 13
`
`
`
`U.S. Patent
`
`Oct. 26,1999
`
`Sheet 2 of 5
`
`5,974,454
`
`^
`
`I
`
`i
`
`_ j
`
`a:
`
`CO
`
`•
`•
`•
`
`oft
`Offi
`gco
`
`em
`gco
`
`55
`>_
`c
`<3
`
`i
`
`80b
`
`ERNETSITE
`
`i1
`
`• 1
`
`Page 3 of 13
`
`
`
`U.S. Patent
`
`Oct. 26,1999
`
`Sheet 3 of 5
`
`5,974,454
`
`705
`
`100
`
`DATABASE
`SERVER
`80a
`
`COMPUTER
`20
`
`FIC.5
`
`Page 4 of 13
`
`
`
`U.S. Patent
`
`Oct. 26,1999
`
`Sheet 4 of 5
`
`5,974,454
`
`403
`
`START
`
`NO
`
`.406
`
`.
`IS
`CURRENT
`DATE GREATER THAN
`OR EQUAL TO
`.REGISTRY KEY,
`DATE
`9
`
`YES 409
`
`DISPLAY DIALOG BOX
`TO USER ASKING
`WHETHER USER
`WANTS TO PROCEED
`
`YES 475
`
`SEND HTTP QUERY
`TO DATABASE SERVER
`
`YES
`
`TO STEP 433 (FIG 4B)
`
`400
`
`<
`
`.424
`
`ADD 30 DAYS
`TO CURRENT
`DATE AND
`STORE RESULT
`IN REGISTRY
`KEY
`
`432
`J.
`STORE
`ENCODED
`DATE IN
`REGISTRY
`KEY
`
`431
`1
`DISPLAY
`ALERT
`DIALOG
`
`421
`1
`DISPLAY
`ERROR
`MESSAGE
`
`,430
`
`RETURN
`'NOUPDATE"
`MESSAGE
`
`FIG.4A
`
`Page 5 of 13
`
`
`
`U.S. Patent
`
`Oct. 26,1999
`
`Sheet 5 of 5
`
`5,974,454
`
`r 400
`
`445
`1.
`ADD 30 DAYS
`TO CURRENT DATE
`AND STORE RESULT
`IN REGISTRY
`KEY
`
`FROM STEP 427 (FIG.4A)
`
`433
`JL
`SERVER RETURNS
`"UPDATE"
`MESSAGE
`
`439
`JL
`DISPLAY UPDATE
`DIALOG BOX
`TO USER
`
`YES
`
`X. 448
`
`INITIATE HTTP
`DOWNLOAD QUERY
`
`.451
`
`SERVER RETURNS
`UPGRADETO
`COMPUTER
`
`454
`I.
`INSTALL UPGRADE
`PACKAGE AND
`UPDATE REGISTRY
`KEY
`
`499
`
`FIC.4B
`
`Page 6 of 13
`
`
`
`5,974,454
`
`METHOD AND SYSTEM FOR INSTALLING
`AND UPDATING PROGRAM MODULE
`COMPONENTS
`
`TECHNICAL FIELD
`
`5
`
`This invention relates to updating software program mod(cid:173)
`ule components or installing new software program module
`components. More particularly, this invention relates to
`updating software program module components or installing
`new software program module components over a distrib(cid:173)
`uted computer network either automatically, or manually
`based upon user input.
`
`BACKGROUND OF THE INVENTION
`
`15
`
`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 be to correct bugs or to add
`new features that were incomplete at the time of the debut 20
`of the software program module.
`Many users 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 25
`program module. Moreover, the user may not have regis(cid:173)
`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 30
`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(cid:173)
`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(cid:173)
`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 for installing
`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(cid:173)
`ules with features that have not been completely developed
`due to time constraints caused by scheduled release dates.
`However, the software manufacturer may know of a date in
`the future that these features will be completely developed. 50
`However, due to the inconvenience and expense of upgrad(cid:173)
`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 55
`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 go
`is a need in the art for a system for installing upgraded
`software program modules that allows a software manufac(cid:173)
`turer to conveniently change, or "slip", the date on which a
`planned upgrade is released.
`Thus, there is a need in the art for a system for installing 65
`new or upgraded program module components that does not
`require the user to be aware of the release date of the new
`
`40
`
`45
`
`release or upgrade. There is 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(cid:173)
`turing and shipping of diskettes, CD-ROMs, or other data
`storage media. There is also 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.
`
`SUMMARY OF THE INVENTION
`
`The present invention satisfies 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.
`Generally described, the present invention provides a
`computer-implemented method for automatically updating a
`software program module component stored 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 component is 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 can include
`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 component is available. The data(cid:173)
`base server can determine whether an upgrade package for
`the software program module component is available by
`performing a database lookup using the
`information
`included in the database query. If an upgrade package for the
`software program module component is 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 over the
`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(cid:173)
`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
`
`
`
`5,974,454
`
`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(cid:173)
`tion of the disclosed embodiments and by reference 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 embodiment of 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.
`FIGS. 4A and 4B are flowcharts illustrating a method for
`automatically updating software program module compo(cid:173)
`nents or installing new software program module compo(cid:173)
`nents in accordance with an exemplary embodiment of 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(cid:173)
`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
`"WORD 8.0" program module includes a Web Authoring
`Components program module. The Web Authoring Compo(cid:173)
`nents are a set of tools which allows users to create Web
`pages. The Web Authoring Components may also 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 becomes available. In
`other words, the auto-autoupdate feature automatically
`checks for upgrades to the Web Authoring Components
`program module at predetermined dates and downloads the
`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(cid:173)
`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(cid:173)
`mented in combination with other program modules.
`Generally, program modules include routines, programs,
`components, data structures, etc. that perform particular
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`tasks or implement particular 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(cid:173)
`munications network. In a distributed computing
`environment, program modules may be located in both local
`and remote memory storage devices.
`With reference to FIG. 1, an exemplary system for imple(cid:173)
`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(cid:173)
`tion between elements within the personal computer 20,
`such as during start-up, is stored in ROM 24. The personal
`computer 20 further includes a hard disk drive 27, a mag(cid:173)
`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(cid:173)
`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 by those 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 number of program modules may be 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 other 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. Other input 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(cid:173)
`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 may be a server, a router, a peer device
`or other common network node, and typically includes many
`or all of the elements described relative to the personal
`computer 20, although only a memory storage device 50 has
`been illustrated in FIG. 1. The logical connections depicted
`
`Page 8 of 13
`
`
`
`5,974,454
`
`in FIG. 1 include a local area network (LAN) 51 and a wide
`area network (WAN) 52. Such networking environments are
`commonplace
`in offices, enterprise-wide computer
`networks, intranets and the Internet 60, which is illustrated
`in FIG. 2.
`When used in a LAN networking environment, the per(cid:173)
`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
`modem 54 or other means for establishing communications
`over the WAN 52, such as the Internet 60 (FIG. 2). The
`modem 54, which may be internal or external, is connected
`to the system bus 23 via the serial port interface 46. In a
`networked environment, program modules depicted relative
`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(cid:173)
`plary and other means of establishing a communications link
`between the computers may be used.
`Referring now to FIG. 2, an exemplary embodiment of the
`present invention provides for the downloading of upgraded
`versions of the Web Authoring Components program mod(cid:173)
`ule 37a to the user's computer 20 from a package server 80b
`via the Internet 60 which is described below in reference to
`FIG. 2. As will be discussed, new program module compo(cid:173)
`nents may also 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(cid:173)
`cation resource. E-mail and remote access to computer
`servers are currently widely used tools for reaching custom(cid:173)
`ers. The participants in the Internet are a wide variety of
`machines, organizations, and individuals, all able to com(cid:173)
`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 65M. These backbone networks form an inter(cid:173)
`national grid of high-speed, high-capacity data communica(cid:173)
`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
`70M. 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 75M. 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, may include a plurality of web servers 80a through
`80M, such as database server 80a and package server 80fc.
`Each of these web servers may provide "home pages" to be
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`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 85M 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(cid:173)
`plary embodiment of the present invention, the personal
`computer 20, shown in FIG. 1, is an end-user station. As
`shown in 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 88M, the point of pres(cid:173)
`ence 85fc provides Internet access to end-user stations 88a'
`through 88M', etc. All together, the points of presence 85 can
`provide Internet access to numerous end-user stations 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(cid:173)
`age server 80fc (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(cid:173)
`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 80fc.
`In an exemplary embodiment of the present invention,
`computer 20 sends a query 100 on or after a predetermined
`date over the Internet to database server 80a. It should be
`understood that database server 80a may be a server at any
`URL specified in an auto-autoupdate registry key. The URL
`in the auto-autoupdate registry key may be customized by a
`user, such as by an administrator at 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 includes all
`of the information regarding computer 20 that the database
`server 80a needs to determine if an upgrade is available and,
`if an upgrade is available, to determine the location of the
`upgrade package.
`After reviewing query 100, the database server 80a
`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 upgrades in 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
`URL of 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
`
`
`
`5,974,454
`
`8
`program module is initialized before Sep. 1, 1998, no action
`is taken and the method ends at step 499. However, when-
`e v er the Web Authoring Components program module is
`initialized on or after Sep. 1998, the method proceeds to step
`5 409
`
`7
`base server 80a may also send back the URL of an alterna-
`live download site in case the primary download site is
`overloaded.
`After the computer 20 receives the response 105 including
`the URL of the upgrade package, the computer 20 will send
`a query 110 to the package server 80b at the URL of the
`At step 409, a dialog box is displayed to the user on
`update package. The package server 80b will send the
`monitor 47 warning that a dial-up connection to the Internet
`update package 115 to the computer 20 and the computer 20
`is necessary to proceed with upgrading the Web Authoring
`will then install the update package 115.
`It should be understood from the above description of an 10 Components program module and asking whether the user
`exemplary embodiment of the present invention that a server
`wants to proceed. The user may either select to proceed with
`or servers capable of handling the traffic caused by this
`attempting to upgrade the Web Authoring Components pro-
`update feature must be maintained. The servers are respon-
`g r am module or select to terminate the upgrade attempt,
`sible for assessing whether an upgrade is available and
`s u ch as by s e l e c t i ng a c h e ck b ox or yes/no buttons in the
`whether it should be downloaded based on the information
`b ox ^
`4 09 ^
`^
`^
`m o u se 42
`s
`f o r m ed
`^ ^
`sent by computer 20. For example, even if an upgrade is
`^
`^
`i1 ^
`,. ,
`T ^
`^ .
`,
`,,
`^ ,
`,
`1 % 1 -r ^i
`*
`in
`., , ,
`v
`to warn the user that a dial-up connection to the Internet is
`available, it should not be downloaded it the computer 20
`necessary.
`already has the upgrade or if the upgrade is somehow
`After the user selects either to proceed or to terminate at
`incompatible with computer 20. The servers are further
`the method proceeds to decision step 412. At
`s t ep m,
`responsible for providing the download target in the form of
`an URL if a new upgrade is available. Providing the URL
`d e c i s i on
`^
`^ ^ d e t e r m i n ed w h e t h er t he u s er s e l e c t ed
`..
`...
`,
`.
`..
`..
`,. ,
`Tr
`may include load balancing between servers because if a
`to proceed with the dial-up connection. It so, then the
`.
`,
`.
`.
`.I
`TTTIT
`r ,.
`,
`f
`primary server has a high volume, URLs of alternate servers
`to
`t h en
`t he m e t h od
`If n o t'
`m e t h od Pr o c e e ds
`s t eP 4 1 5-
`with the same upgrade package may be utilized. It should be
`the above description that the 25 proceeds to step 424. At step 424, 30 days is added to the
`further understood from
`servers may also provide a "next check" date if there is not
`current date to determine a next check date to be stored in
`an upgrade currently available.
`the registry key. This next check date is then stored in the
`Having generally described an exemplary embodiment
`registry key. Thus, the next check date stored in the registry
`above in reference to FIG. 3, a more detailed description of
`key will prevent the auto-autoupdate feature from being
`an exemplary embodiment of the present invention is pre-
`automatically initiated again until 30 days from the current
`sented below in reference to FIGS. 4A and 4B.
`date. After step 424, the method ends at step 499. It should
`FIGS. 4Aand 4B are flowcharts illustrating a method 400
`also be understood that the user has the option of selecting
`for automatically updating software program module com-
`a checkbox that reads "Don't ask me again". When this
`ponents or installing new software program module com- 35
`c h e c k b ox is s eie ct e d, all future auto-autoupdate actions are
`ponents in accordance with an exemplary embodiment of the
`d i s a b l e d)
`f e r a bl
`b
`s e t ti
`t he d a te
`in
`t he r
`i st
`k
`i1
`present invention. Those skilled in the art will appreciate
`, ^ „
`.„ „
`^ i1
`^
`,
`,
`^ ^
`.„„
`f, ^ ^ .
`,
`,
`,.
`, •
`f
`,
`equal to
`-1 . It not, then the method ends at step 499.
`that this exemplary embodiment is a computer-implemented
`to FIG. 4A, at step 415, a HyperText
`Still referring
`process that is carried out by the computer in response to
`input from the user and instructions provided by an appli- 40 Transfer Protocol (HTTP) query is initiated and sent from
`cation program module.
`computer 20 over the Internet to the database server 80a.
`Referring to FIG. 4A, the method 400 begins at step 403
`T he H T Tp q u e ry m ay be s e nt a Syn chronously so that the
`and proceeds to decision step 406 after the word processor
`u s er m ay p e r f o rm o t h er t a s ks w h i le t he q u e ry is b e i ng s e nt
`,
`program module 37 is booted and the Web Authoring
`r,,
`, ,,
`. c
`..
`,
`, ,,
`c
`K, b
`,
`, „ _ .
`.
`.
`.
`,
`.
`,
`.
`,
`..
`lo construct the query, information about the setup of
`Components program module 37a is initialized. At decision 45
`„„ .
`T , ™ , , ,,
`,,
`,
`,
`,
`» Ant
`J
`t tu
`»J » •
`computer 20 is appended to a H 1 1P Internet address stored
`•» • j 7
`•
`u tu
`step 406, it is determined whether or not the current date is
`r
`rr
`I n t e m et
`greater than or equal to a date stored in a registry key by the
`t he f o rm of a s t a n d a rd H T rP l1^^ T he H T TP
`Web Authoring Components program module 37a. In the
`a d d r e ss
`ls typically stored when the Web Authoring Corn-
`exemplary embodiment, when the Web Authoring Compo-
`ponents program module is initially installed. However, it
`nents program module is initially installed, a registry key 50 should be understood that this Internet address may be
`will typically be set equal to the date that an upgrade to the
`edited to direct the query to an internal server, such as if an
`Web Authoring Components program module is expected.
`administrator would
`like to control upgrades
`internally
`The current date is the date that is maintained on the internal
`I n t e r n e t. The query is structured to
`r a t h er
`t h an o v er
`t he
`clock of computer 20.
`identify the information needed to determine which upgrade
`If, at decision step 406, it is determined that the current 55 p a c k a ge U RL is r e q uir ed by computer 20. This information
`date is less than the date stored in the registry key, then the
`i n c l u de ^
`o_
`v e r s i o ns of ±e
`m o d u le
`, ,,
`,,
`method ends at step 499. However, if, at decision step 406,
`^ ^ ,
`, ,
`,
`,
`i1
`, ir
`, ,