`
`[19]
`
`5,974,454
`[45]
`Date of Patent:
`Apfel et al.
`Oct. 26, 1999
`
`[11]
`
`Patent Number:
`
`USOOS974454A
`
`
`
`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; Lydia K.
`Williams, Bellevue, all of Wash.
`
`73] Assignee: Microsoft Corporation, Redmond,
`Wash.
`
`21] Appl. No.: 08/970,668
`
`22]
`
`Filed:
`
`Nov. 14, 1997
`
`Int. Cl.6 ...................................................... G06F 9/445
`51]
`52] US. Cl.
`........................... 709/221; 709/218; 395/712
`58] Field of Search ..................................... 709/221, 218;
`395/712
`
`56]
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`3/1998 Killlick et a1.
`.......................... 395/712
`5,732,275
`9/1998 Bizuneh et a1.
`395/704
`5,805,891
`
`5,845,077 12/1998 Fawcett .....
`709/221
`6/1999 Park ........................................ 395/712
`5,909,581
`
`Installing and updating a software program module compo-
`nent. Adetermination 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-
`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-
`nent.
`
`Primary Examiner—Robert B. Harrell
`Assistant Examiner—Kenneth R. Coulter
`
`17 Claims, 5 Drawing Sheets
`
`400
`
`400
`
`FROM STEP 427
`
`433
`
`
`
`SERVER RETURNS
`"UPDATE"
`MESSAGE
`
`
`
`439
`
`DISPLAY UPDATE
`DIALOG BOX
`
`
`TO USER
`
`445
`
`
`
`
`PROCEED
`7
`
`DISPLAY DIALOG BOX
`TO USER ASKING
`WHETHER USER
`
`WANTS TO PROCEED
`
`
`ADD 30 DAYS
`
`‘72 No
`TO CURRENT
`
`
`DATE AND
`
`
`WHERE
`IN K‘Ey
`STORE
`
`
`
`YES
`415
`EDETOEEIED
`
`REGISTRY
`SEND HTTP QUERY
`TO DATABASE SERVER
`KEY
`
`
`
`DISPLAY
`ERROR
`
`MESSAGE
`
`430
`
`
`RETURN
`DISPLAY
`
`
`"NOUPDATE"
`ALERT
`MESSAGE
`DIALOG
`
`
`
`
`TO STEP 433
`
`ADD 30 DAYS
`TO CURRENT DATE
`AND STORE RESULT
`
`KEY
`
`IN REGISTRY
`
`
`4
`
`4
`
`INITIATE HTTP
`DOWNLOAD QUERY
`
`
`SERVER RETURNS
`UPGRADE TO
`COMPUTER
`
`
`INSTALL UPGRADE
`PACKAGE AND
`
`UPDATE REGISTRY
`KEY
`
`
`EXHIBIT 1004
`
`MICROSOFT CORP.
` !"
`#$%& '(()
`
`Page 1 of13
`
`APPLE EXHIBIT 1004 - PAGE 0001
`
`
`
`
`
`
`
`US. Patent
`
`Oct. 26, 1999
`
`Sheet 1 0f 5
`
`5,974,454
`
`10:205.
`
`Nv
`
`000O
`
`
`
`<wm<.2004
`
`mesz
`
`meEmz
`
`wO/ummmFZ.
`m0<u_mmFZ_
`
`u_<_mwm
`
`Fan.
`
`mv
`
`“W
`
`Own=>
`
`mwha<o<
`
`Oz_wmwoomn_
`
`:23
`
`mamEmhw>w
`
`
`
`._<O_._.n_O9.52052
`
`
`
`0<..Em_.rz_wOfiEEZ.
`
`mew>_mn_v.90
`
`v5.0Dm<I
`
`w>ED
`
`mo<n_msz_
`
`E“.5005.
`529.001;
`
`
`
`DmO>> ImOmmmOOmmmm.
`
`
`
`MN.ImEEOOmn.
`
`I555
`mmozpéwmo
`
`cm20:55“?
`
`$51.281
`mmvmsaunas":I
`
`%wsZmOOmm
`
`x-\A...........e.359%mazes.I._..u.ll..|..:::u.....NV
`omzo:<o_._&<33002
`
`—.O_”_Em
`
`Page 2 of 13
` *
`APPLE EXHIBIT 1004 - PAGE 0002
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`SU
`
`”Eon.m21,mmmoo<%xmoEmzL
`
`x5252mzomxo<mmQR8m
`
`fizmfizESQ
`
`mm_>>
`
`mm>mmm...
`
`mm;
`
`mm>mmw
`
`ArcwmmZZDv
`
`mm<m<k<oe_.t\—a_2%8mmm“_Px"m5EzEE.
`Eimmmm>mmmmcm“nan"am0§o<m
`om..........................................
`
`”mama
`
`9
`
`eh”
`
`5f
`
`454’
`
`
`
`o5.8a$52xmoEmzm20mxo<mw$.02:sz
`
`:2ion.
`
`
`
`
`
`2mm.3mm.mmm
`
`5Emu2mm3%2%b8ham2mmmmmom
`
`
`
`
`0—H—D:.IIU:UmmmadzmEmadzm4<20mmmm4..20.25zoEfimmwSasooWN.
`
`
`
`
`
`mozmamE...6%memozmmeto5.8
`
`
`
`“5Eon.noEon.$530”:882#09
`
`Page 3 of 13
`
`APPLE EXHIBIT 1004 - PAGE 0003
`
`
`
`
`
`
`
`
`
`.xmoimzszmxoémmmoo<
`
`xmozfiz
`
`
`
`
`
`
`US. Patent
`
`Oct. 26, 1999
`
`Sheet 3 0f5
`
`5,974,454
`
`105
`
`
`COMPUTER
`
`g9
`
`
`
`
`
`{EB
`
`
`
`
`DATABASE
`SERVER
`
`
`
`
`
`
`PACKAGE
`SERVER
`
`gflg
`
`FIGJ
`
`Page 4 of 13
` -
`APPLE EXHIBIT 1004 - PAGE 0004
`
`
`
`
`
`
`
`US. Patent
`
`Oct. 26, 1999
`
`Sheet 4 0f5
`
`5,974,454
`
`403
`
`400
`
`’
`
`IS
`CURRENT
`DATE GREATER THAN
`
`DISPLAY DIALOG BOX
`TO USER ASKING
`WHETHER USER
`WANTS TO PROCEED
`
`PROSEEED
`
`SEND HTTP QUERY
`TO DATABASE SERVER
`
`ADD 30 DAYS
`92995ch
`STORE RESULT
`IN REGISTRY
`
`STORE
`ENCODED
`DATE IN
`
`DIALOG
`
`DISPLAY
`ERROR
`MESSAGE
`
`RETURN
`“NOUPDATE”
`MESSAGE
`
`DISPLAY
`ALERT
`
`TO STEP 433 (FIG 4B)
`
`FIG.4A
`
`Page 5 of 13
` .
`APPLE EXHIBIT 1004 - PAGE 0005
`
`
`
`
`
`
`
`US. Patent
`
`Oct. 26, 1999
`
`Sheet 5 0f5
`
`5,974,454
`
`400
`
`FROM STEP 427 (FIG.4A)
`
`433
`
`SERVER RETURNS
`“UPDATE"
`MESSAGE
`
`
`
`
`
`445
`
`NO
`To’éBRSEBé‘EiTE
`
`
`AND STORE RESULT
`IN REGISTRY
`KEY
`
`
`
`DISPLAY UPDATE
`DIALOG BOX
`TO USER
`
`UPGRADE
`
`439
`
`448
`
`INITIATE HTTP
`DOWNLOAD QUERY
`
`SERVER RETURNS
`UPGRADE TO
`COMPUTER
`
`
`
`
`INSTALL UPGRADE
`PACKAGE AND
`UPDATEKEEGISTRY
`
`
`
`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 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-
`uted computer network either 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 be to correct bugs or to add
`new features that were incomplete at the time of the debut
`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
`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 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-
`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.
`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 upgrade is 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
`
`u.)‘1‘
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`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-
`
`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.
`the present invention provides a
`Generally described,
`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-
`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-
`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 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.
`
`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 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 80”, 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
`“WORD 8.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 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-
`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
`
`u.)‘1‘
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`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-
`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-
`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. Abasic input/output system 26 (BIOS),
`containing the basic routines that help to transfer informa-
`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-
`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 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.
`Anumber 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-
`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
` 4
`APPLE EXHIBIT 1004 - PAGE 0008
`
`
`
`
`
`
`
`5,974,454
`
`5
`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-
`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-
`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-
`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-
`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-
`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 6511. 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 7011 through
`7011. 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 7511. 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 7511, may include a plurality of web servers 8011 through
`8011, such as database server 80a and package server 80b.
`Each of these web servers may provide “home pages” to be
`
`10
`
`15
`
`30
`
`u.)‘1‘
`
`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 8511 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
`shown in FIG. 2, the point of presence 8511 provides Internet
`access to the personal computer 20 (end-user station) and
`other end-user stations 8811 through 8811, the point of pres-
`ence 85b provides Internet access to end-user stations 8811'
`through 8811', 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-
`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 8011, and package server 80b.
`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 8011 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 8011 needs to determine if an upgrade is 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 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 8011 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 diiferent
`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 8051 may also send back the URL of an alterna-
`tive 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
`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 embodiment of 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 download target in the form of
`an URL if a new upgrade is available. Providing the URL
`may include load balancing between servers because if a
`primary server has a high volume, URLs of alternate servers
`with the same upgrade package may be utilized. 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 embodiment of the
`present invention. Those skilled in the art will appreciate
`that this exemplary embodiment is 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 begins at step 403
`and proceeds to decision step 406 after the word processor
`program module 37 is booted and the Web Authoring
`Components program module 370 is 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 upgrade to the
`Web Authoring Components program module is expected.
`The current date is the date that is maintained on the 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 ends at step 499. However, if, at decision step 406,
`it is determined that 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 upgaded 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 registry key when the Web
`Authoring Components program module is initially
`installed. Thus, whenever the Web Authoring Components
`
`10
`
`15
`
`30
`
`u.)‘1‘
`
`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 proceeds to step
`409.
`
`At step 409, a dialog box is displayed to the user on
`monitor 47 warning that a dial-up connection to the Internet
`is necessary to proceed with upgrading the Web Authoring
`Components program module and asking whether the user
`wants to proceed. The user may either select to proceed with
`attempting 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 whether the 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 ends at 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 ends at 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 a