throbber
United States Patent [w]
`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
`, ,

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket