throbber
United States Patent
`
`[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
`
`
`
  
` 
1
`
`

`

`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
`
`
`
  
` 
3
`
`

`

`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
`
`

`

`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
`
`
`
  
` 
7
`
`

`

`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

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