throbber

`
`United States Patent
`
`[19]
`
`[11]
`
`Patent Number:
`
`5,974,454
`Apfel et al.
`Oct. 26, 1999
`Date of Patent:
`[45]
`
`US005974454A
`
`54] METHOD AND SYSTEMFOR INSTALLING
`AND UPDATING PROGRAM MODULE
`COMPONENTS
`
`Attorney, Agent, or Firm—Jones & Askew, LLP
`
`[57]
`
`ABSTRACT
`
`75]
`
`Inventors: Darren A. Apfel, Redmond; Michael
`C. Mathieu,Seattle; Lydja K.
`Williams, Bellevue, all of Wash.
`
`73] Assignee: Microsoft Corporation, Redmond,
`Wash.
`
`21] Appl. No.: 08/970,668
`
`22]
`
`Filed:
`
`Nov. 14, 1997
`
`SL] Unt, C0 eeeccecscssssssesesscsssssseecseessneesees GO06F 9/445
`52] U.S. Che ees eeeeeseee 709/221; 709/218; 395/712
`58] Field of Search 1.000... 709/221, 218;
`395/712
`
`56]
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`3/1998 Kullick et al. oe 395/712
`5,732,278
`9/1998 Bizunehetal.
`we 395/704
`5,805,891
`
`we 709/221
`5,845,077 12/1998 Faweett .....
`6/1999 Park wecececssseessseesssseesseeeen 395/712
`5,909,581
`
`Installing and updating a software program module compo-
`nent. A determination is made whetherthe current date is on
`
`or after a date stored in a registry key on a computer.If the
`current date is on or after the date stored in the registry key,
`then a computer transmits a database query via the Internet
`to a database server. At the database server, a determination
`is made whether an upgrade package for the software
`program module componentis available, such as by per-
`forming a database lookup. If an upgrade package for the
`software program module component is available, then an
`upgrade package messageis sent from the database server to
`the computer. At the computer, a determination is made
`whether the user wants to downloadthe upgrade package. If
`so, then an upgrade package query is sent by the computer
`via the Internet to a package server. At the package server,
`in response to receiving the upgrade package query, the
`upgrade packageis retrieved and sentover the Internet to the
`computer. The upgrade package is then installed on the
`computer to update the software program module compo-
`nent.
`
`Primary Examiner—Robert B. Harrell
`Assistant Examiner—Kenneth R. Coulter
`
`400
`
`y
`
`17 Claims, 5 Drawing Sheets
`
`400
`
`
`
`DISPLAY DIALOG BOX
`TO USER ASKING
`WHETHER USER
`WANTS TO PROCEED
`
`ADD 30 DAYS
`
`
`TO CURRENT
`DATE AND
`STORE RESULT
`IN REGISTRY
`KEY
`
`
`
`SEND HTTP QUERY
`
`TO DATABASE SERVER
`
`
`
`
`
`
`RETURN
`“NOUPDATE”
`
`MESSAGE
`
`
`TO STEP 433
`
`DISPLAY
`ERROR
`MESSAGE
`
`430
`
`
`
`431
`
`DISPLAY
`ALERT.
`DIALOG
`
`432
`
`FROM STEP 427
`433
`
`Cc 5
`SERVER RETURNS
`MESSAGE
`
`439
`
`DISPLAY UPDATE
`Ccnma
`DIALOR BOX
`
`445
`
`ADD 30 DAYS
`TO CURRENT DATE
`AND STORE RESULT
`IN REGISTRY
`
`
`
`INITIATE HTTP
`DOWNLOAD QUERY
`
`cSoO:
`SERVER RETURNS
`COMPUTER
`
`
`
`
`INSTALL UPGRADE
`"ACKAGE AND
`UPDATE REGISTRY
`KEY
`
`EXHIBIT 1004
`
`MICROSOFT CORP.
` !"
`#$%& '(()
`
`Page 1 of 13
`  
`APPLE EXHIBIT 1004 - PAGE 0001
`
`
`
  
` 

`
`

`

`U.S. Patent
`
`Oct. 26, 1999
`
`Sheet 1 of 5
`
`5,974,454
`
`a7”
`-“en
`
`oFSIAWeDONd
`NOLWONddV¥
`
`
`
`|:apeo,OSGIAONISSSOONd;;(Wow)
`
`tst—~——STWgec
`
`
`YaldvavLINOsola
`WOLLdO[eze|TIGON,
`
`
`
`”
`
`opGUVOEATY
`
`YOLINOW
`
`LP
`
`O00oO
`
`VauvWOO]
`
`MYOMLSN
`
`SNWALSAS
`
`WINS
`
`LyOd
`
`FOVAYSLNI
`
`AAINCHSIG
`SAINO
`
`OLLANOVW
`SIOGYVH
`
`JOVIYALNI
`JOVIYALNI
`
`SEONIVesdO
`— WdILSAS
`
`
`
`==SWWYDOYd9NOLLWOIIdd
`
`7éNOSSIOONd
`
`NOM
`
`FINGOW
`
`Page 2 of 13
`  *
`APPLE EXHIBIT 1004 - PAGE 0002
`
`
`
  
` 
+
`
`
`
`
`
`
`
`
`

`

`U.S. Patent
`
`Oct. 26, 1999
`
`Sheet 2 of 5
`
`5,974,454
`
`SSS900V
`
`SSd00V
`
`LNIOd
`
`MYOMLAN\)
`
`
`eoCCIC]CrliCl[ae
`
`
`MYOMLANMYOMLANANOPHOVE
`QOL&G9
`w488|488|.°884881488|.888uge
`
`uGBqG8egg
`
`408qo8208A3SLSNYALNI
`yaAuas|:“GLSe[a|JOO3SVaVLVG||MSAMSS|CL.YSANAS
`
`SONASSYdAONSASSYd
`4OLNIOddOLNIOd
`eq’!
`
`
`YSCIAONdSSS0O0VWOO]
`
`qam
`
`YaAYdaS
`
`(ALISHSAINN)
`
`
`
`MYOMLANANOGMOVE
`
`
`
`MYOMLANANOSMOVE
`
`JON3SSud40LNIOd
`
`e0L
`
`MYOMLAN
`
`SSIOOV
`
`LINIOd
`
`Page 3 of 13
`  
`APPLE EXHIBIT 1004 - PAGE 0003
`
`
`
  
` 
,
`
`
`
`
`
`
`
`
`
`
`

`

`U.S. Patent
`
`Oct. 26, 1999
`
`Sheet 3 of 5
`
`5,974,454
`
`105
`
`
`
`COMPUTER
`
`
`
`20
`
`
`DATABASE
`SERVER
`80a
`
`
`
`
`
`
`PACKAGE
`SERVER
`80b
`
`FIG.3
`
`Page 4 of 13
`  -
`APPLE EXHIBIT 1004 - PAGE 0004
`
`
`
  
` 

`
`

`

`400 DISPLAY DIALOG BOX
`KEY
`
`
`
`
`
`ADD 30 DAYS
`TO CURRENT
`DATE AND
`STORE RESULT
`IN REGISTRY
`
`
`
`
`U.S. Patent
`
`Oct. 26, 1999
`
`Sheet 4 of 5
`
`5,974,454
`
`
`
`TO USER ASKING
`WHETHER USER
`WANTS TO PROCEED
`
`
`
`432
`
`
`
`DISPLAY
`RETURN
`
`
`ALERT
`“NOUPDATE”
`
`
`DIALOG
`MESSAGE
`
`
`
`TO STEP 433 (FIG. 4B)
`
`FIG.4A
`
`Page 5 of 13
`  .
`APPLE EXHIBIT 1004 - PAGE 0005
`
`
`
  
` 
/
`
`

`

`U.S. Patent
`
`Oct. 26, 1999
`
`Sheet 5 of 5
`
`5,974,454
`
`400
`
`FROM STEP 427 (FIG.4A)
`
`433
`
`439
`
`SERVER RETURNS
`“UPDATE”
`MESSAGE
`
`DISPLAY UPDATE
`DIALOG BOX
`TO USER
`
`
`
` 445
`
`
`UPGRADE
`
`
`ADD 30 DAYS
`
`TO CURRENT DATE
`
`
`AND STORE RESULT
`
`
`IN REGISTRY 448
`
`
`
`
`
`UPDATEREGISTRY
`
`INITIATE HTTP
`DOWNLOAD QUERY
`
`SERVER RETURNS
`UPGRADE TO
`COMPUTER
`
`INSTALL UPGRADE
`PACKAGE AND
`
`
`
`FIG.4B
`
`Page 6 of 13
`  0
`APPLE EXHIBIT 1004 - PAGE 0006
`
`
`
  
` 
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 componentsorinstalling new software program module
`components. More particularly,
`this invention relates to
`updating software program module componentsorinstalling
`new software program module components overa distrib-
`uted computer network cithcr automatically, or manually
`based upon user input.
`
`BACKGROUND OF THE INVENTION
`
`Computer software manufacturers are often releasing new
`or upgraded versions of their software program modules.
`Oftentimes, the release of a new or upgraded version of a
`software program module may beto correct bugs or to add
`new features thal were incomplete at the time of the debul
`of the software program module.
`Manyusers of a program module may be unaware that
`new releases or upgrades to a software program module
`have been released. For example, a user may not see the
`press releases related to a new version or upgrade to a
`program module. Moreover, the user may not have regis-
`tered their program module with the software manufacturer
`and, thus, the manufacturer may have no way to contact the
`user regarding the upgrade. Thus, there is a need in the art
`for a system for installing new or upgraded program module
`components that does not require the user to be aware of the
`release date of the new release or upgrade.
`Manufacturing costs of upgrades and new releases may
`also be costly to manufacturers and consumers alike. Manu-
`facturers must manufacture diskettes, CD-ROMs, or other
`data storage media to store the upgrade or new release. This
`manufacturing may be expensive for the manufacturers.
`Shipping costs are also expensive. The expense of manu-
`facturing and shipping will typically be absorbed by the
`consumer and is, thus, expensive to consumers also. Thus,
`there is a further need in the art for a system forinstalling
`new or upgraded software program modules that does not
`involve the added costs of manufacturing and shipping of
`diskettes, CD-ROMs,or other data storage media.
`Software manufacturers sometimes release program mod-
`ules with features that have not been completely developed
`due to time constraints caused by scheduled release dates.
`However, the software manufacturer may know ofa date in
`the future that these features will be completely developed.
`However, due to the inconvenience and expense of upgrad-
`ing to the user, these features may not be included in the
`release until they are fully completed despite their possible
`usefulness to the user. Thus, there is a need in the art for a
`system for installing upgraded software program modules
`that easily, conveniently, and automatically checks for an
`upgraded software program module on a predetermined
`date.
`
`Software manufacturers must sometimes delay, or “slip”,
`the release date of a software program module. Thus,there
`is a need in the art for a system for installing upgraded
`software program modules that allows a software manufac-
`turer to conveniently change, or “slip”, the date on which a
`planned upgradeis released.
`Thus, there is a need in the art for a system for installing
`new or upgraded program module components that does not
`require the user to be aware of the release date of the new
`
`10
`
`15
`
`30
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`release or upgrade. Thereis still a further need in the art for
`a system for installing new or upgraded software program
`modules that does not involve the added costs of manufac-
`
`turing and shipping of diskettes, CD-ROMs, or other data
`storage media. There is also a needin the art for a system for
`installing upgraded software program modules that easily,
`conveniently, and automatically checks for an upgraded
`software program module on a predetermined date.
`
`SUMMARYOF THE INVENTION
`
`The present inventionsatisfies the above-described needs
`by providing a system and method for updating software
`program module components or installing new software
`program module components over a distributed computer
`network, such as the Internet. The update and installation
`tasks may be completed either automatically, or manually
`based upon user input.
`the present invention provides a
`Generally described,
`computer-implemented method for automatically updating a
`software program module componentstored on a computer.
`At
`the computer, a determination is made whether the
`current date is on or after a date stored at the computer. The
`current date is typically the date on the internal clock of the
`computer. The date, which can be stored in a registry key, is
`typically the date that an upgrade for the software program
`module componentis expected to be released.If the current
`date is on or after the date stored in the registry key, then a
`database query is sent from the computer over the Internet
`to a database server. The database query typically is a
`HyperText Transfer Protocol (HTTP) query and caninclude
`information such as the version of the program module
`component to be upgraded, the platform that the program
`module component is running on, and the language of the
`program module component.
`In response to receiving the database query, the database
`server determines whether an upgrade package for the
`software program module componentis available. The data-
`base server can determine whether an upgrade package for
`the software program module component is available by
`performing a database lookup using the information
`includedin the database query. If an upgrade packagefor the
`software program module componentis available, then the
`database server sends over the Internet an upgrade package
`message to the computer. The upgrade package message
`typically includes the URL of a package server at which the
`upgrade package may be found. In response to receiving the
`upgrade package message, the computer may send overthe
`Internet an upgrade package query to the package server.
`The upgrade package query is typically the URL of the
`package server received in the upgrade package message.
`In response to receiving the upgrade package query, the
`package server may retrieve the upgrade package and send
`the upgrade package to the computer. The upgrade package
`typically includes the upgrade for the software program
`module component and a new date to be stored in the
`registry key. The new date is typically the date that the next
`upgrade to the software program module component
`is
`expected. After receiving the upgrade package, the computer
`can install the upgraded software program module compo-
`nent and store the new date in the registry key.
`In one aspect, the database query includes the version of
`the software program module component stored on the
`computer and the Internet address of the database server. In
`yet another aspect,
`the database server and the package
`server may be implemented as a single server connected to
`the Internet.
`
`Page 7 of 13
`  2
`APPLE EXHIBIT 1004 - PAGE 0007
`
`
`
  
` 
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 byreference to the
`appended drawings and claims.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG.1 is a block diagram of a computer that provides the
`operating environment for an exemplary embodimentof the
`present invention.
`FIG. 2 is a functional block diagram of the Internet
`representing a portion of the operating environment of an
`exemplary embodiment of the present invention.
`FIG.3 is a simplified block diagram illustrating the basic
`components of an exemplary embodiment of the present
`invention.
`
`10
`
`15
`
`FIGS. 4A and 4B are flowcharts illustrating a method for
`automatically updating software program module compo-
`nents or installing new software program module compo-
`nents in accordance with an exemplary embodimentof the
`present invention.
`
`DETAILED DESCRIPTION
`
`The present invention is directed to updating software
`program module components or installing new software
`program module components over the Internet either
`automatically, or manually based upon user input. In one
`embodiment,
`the invention is incorporated into a word
`processor application program entitled “WORD 8.0”, mar-
`keted by Microsoft Corporation of Redmond, Wash. Briefly
`described, the “WORD 8.0” application program allows a
`user to create and edit electronic documents by entering
`characters, symbols, graphical objects, and commands. The
`“WORD8.0” program module includes a Web Authoring
`Components program module. The Web Authoring Compo-
`nents are a set of tools which allows users to create Web
`
`pages. The Web Authoring Components mayalso include an
`auto-autoupdate feature. Auto-autoupdate is a cooperative
`scheduled client “pull” routine designed to automatically
`update the Web Authoring Components program module
`over the Internet when an upgrade becomesavailable. In
`other words,
`the auto-autoupdate feature automatically
`checks for upgrades to the Web Authoring Components
`program module at predetermined dates and downloadsthe
`upgrades when a new upgrade becomes available. The
`auto-autoupdate feature may also be manually selected by a
`user, such as by selecting a menu command,to check for an
`upgrade to the Web Authoring Components program mod-
`ule.
`
`Exemplary Operating Environment
`
`Referring now to the drawings, in which like numerals
`represent
`like elements throughout
`the several
`figures,
`aspects of the present invention and the exemplary operating
`environment will be described.
`
`FIG. 1 and the following discussion are intended to
`provide a brief, general description of a suitable computing
`environment in which the invention may be implemented.
`While the invention will be described in the general context
`of an application program that runs on an operating system
`in conjunction with a personal computer, those skilled in the
`art will recognize that the invention also may be imple-
`mented in combination with other program modules.
`Generally, program modules include routines, programs,
`components, data structures, etc.
`that perform particular
`
`30
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`tasks or implementparticular abstract data types. Moreover,
`those skilled in the art will appreciate that the invention may
`be practiced with other computer system configurations,
`including hand-held devices, multiprocessor systems,
`microprocessor-based or programmable consumer
`electronics, minicomputers, mainframe computers, and the
`like. The invention may also be practiced in distributed
`computing environments where tasks are performed by
`remote processing devices that are linked through a com-
`munications network.
`In a distributed computing
`environment, program modules may belocated in both local
`and remote memorystorage devices.
`With reference to FIG. 1, an exemplary system for imple-
`menting the invention includes a conventional personal
`computer 20,
`including a processing unit 21, a system
`memory 22, and a system bus 23 that couples the system
`memory to the processing unit 21. The system memory 22
`includes read only memory (ROM) 24 and random access
`memory (RAM)25. A basic input/output system 26 (BIOS),
`containing the basic routines that help to transfer informa-
`tion between elements within the personal computer 20,
`such as duringstart-up, is stored in ROM 24. The personal
`computer 20 further includes a hard disk drive 27, a mag-
`netic disk drive 28, e.g., to read from or write to a removable
`disk 29, and an optical disk drive 30, e.g., for reading a
`CD-ROM disk 31 or to read from or write to other optical
`media. The hard disk drive 27, magnetic disk drive 28, and
`optical disk drive 30 are connected to the system bus 23 by
`a hard disk drive interface 32, a magnetic disk drive inter-
`face 33, and an optical drive interface 34, respectively. The
`drives and their associated computer-readable media provide
`nonvolatile storage for the personal computer 20. Although
`the description of computer-readable media above refers to
`a hard disk, a removable magnetic disk and a CD-ROM disk,
`it should be appreciated bythose skilled in the art that other
`types of media which are readable by a computer, such as
`magnetic cassettes, flash memory cards, digital video disks,
`Bernoulli cartridges, and the like, may also be used in the
`exemplary operating environment.
`A numberof program modules maybe stored in the drives
`and RAM 25, including an operating system 35, one or more
`application programs 36, such as a word processor program
`module 37, program data 38, and othcr program modules
`(not shown). The word processor program module 37 may
`include a Web Authoring Components program module 37a
`with an auto-autoupdate feature.
`A user may enter commands and information into the
`personal computer 20 through a keyboard 40 and pointing
`device, such as a mouse 42. Otherinput devices (not shown)
`may include a microphone, joystick, game pad, satellite
`dish, scanner, or the like. These and other input devices are
`often connected to the processing unit 21 through a serial
`port interface 46 that is coupled to the system bus, but may
`be connected by other interfaces, such as a game port or a
`universal serial bus (USB). A monitor 47 or other type of
`display device is also connected to the system bus 23 via an
`interface, such as a video adapter 48. In addition to the
`monitor, personal computers typically include other periph-
`eral output devices (not shown), such as speakers or printers.
`The personal computer 20 may operate in a networked
`environment using logical connections to one or more
`remote computers, such as a remote computer 49. The
`remote computer 49 maybea server, a router, a peer device
`or other common networknode, and typically includes many
`or all of the elements described relative to the personal
`computer 20, although only a memorystorage device 50 has
`been illustrated in FIG. 1. The logical connections depicted
`
`Page 8 of 13
`  4
`APPLE EXHIBIT 1004 - PAGE 0008
`
`
`
  
` 
5
`
`

`

`5,974,454
`
`5
`in FIG.1 includea local area network (LAN) 51 and a wide
`area network (WAN)52. Such networking environmentsare
`commonplace in offices, enterprise-wide computer
`networks, intranets and the Internet 60, whichis illustrated
`in FIG. 2.
`
`When used in a LAN networking environment, the per-
`sonal computer 20 is connected to the LAN 51 through a
`network interface 53. When used in a WAN networking
`environment, the personal computer 20 typically includes a
`modem54 or other means for establishing communications
`over the WAN 82, such as the Internet 60 (FIG. 2). The
`modem 54, which maybe internal or external, is connected
`to the system bus 23 via the serial port interface 46. In a
`networked environment, program modules depictedrelative
`to the personal computer 20, or portions thereof, may be
`stored in the remote memory storage device. It will be
`appreciated that the network connections shown are exem-
`plary and other meansofestablishing a communications link
`between the computers may be used.
`Referring now to FIG. 2, an exemplary embodimentofthe
`present invention provides for the downloading of upgraded
`versions of the Web Authoring Components program mod-
`ule 37a to the user’s computer 20 from a package server 805
`via the Internet 60 which is described below in reference to
`
`FIG. 2. As will be discussed, new program module compo-
`nents mayalso be obtained from the package server 80b via
`the Internet 60.
`
`FIG.2 is a functional block diagram of the Internet 60, a
`distributed electronic computing network that provides a
`portion of the operating environment for an exemplary
`embodiment of the present invention. The Internet has in
`recent years become a mainstream commercial communi-
`cation resource. E-mail and remote access to computer
`servers are currently widely used tools for reaching custom-
`ers. The participants in the Internet are a wide variety of
`machines, organizations, and individuals, all able to com-
`municate and share information. Physically, the Internet is
`an interconnected collection of thousands of computer
`networks,
`tens of thousands of computers, and tens of
`millions of individual stations operated by end-users. The
`user of the present invention is preferably such an end-user.
`As is well-known to those skilled in the art, to access an
`Internet site, an end-user need only transmit
`the site’s
`universal resource locator (URL)created in accordance with
`the standardized Domain Name System (DNS).
`The Internet 60 includes a plurality of backbone networks
`65a through 651. These backbone networks form an inter-
`national grid of high-speed, high-capacity data communica-
`tion lines interconnecting a number of massive computers
`that serve as large-scale processing points or nodes. The
`backbone networks 65 are interconnected with each other
`
`through a plurality of network access points 70a through
`70n. These network access points are interfaces through
`which information is communicated from one backbone
`
`network to another. The configuration and operation of the
`Internet backbone is well-known to those skilled in the art
`and will not be further described herein.
`
`The Internet 60 includes a plurality of Internet sites 75a
`through 75n. These Internet sites are generally operated by
`corporations, universities, and governmental organizations.
`Each Internet site may include one or more repositories of
`information and resources that may be accessed over the
`Internet. Each Internet site, as represented by the Internet
`site 75a, mayincludea plurality of web servers 80a through
`807, such as database server 80a and package server 80b.
`Each of these web servers may provide “home pages”to be
`
`10
`
`15
`
`30
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`visited, files to be read or downloaded, applications to be
`shared, and the like.
`The Internet 60 also includes a plurality of points of
`presence 85a through 85x that are operated by local access
`providers. These local access providers are in the business of
`providing Internet access to end-user stations. In an exem-
`plary embodiment of the present invention,
`the personal
`computer 20, shown in FIG. 1, is an end-user station. As
`shownin FIG, 2, the point of presence 85a provides Internet
`access to the personal computer 20 (end-user station) and
`other end-user stations 88a through 88n, the point of pres-
`ence 85b provides Internet access to end-user stations 88a'
`through 887’, etc. All together, the points of presence 85 can
`provide Internet access to numerous end-userstations 88.
`Each point of presence 85, and each end-user station 88,
`may, but need not, provide home pages for access by others
`on the Internet 60.
`
`As stated above, the personal computer 20, illustrated in
`FIG. 1,is also illustrated as an end-user station connected to
`the Internet 60, illustrated in FIG. 2. As will be understood
`from the following discussion, an exemplary embodiment of
`the present invention provides for downloading program
`module components maintained on an Internet-based pack-
`age server 80b (FIG. 2) to the local computer 20 (FIGS. 1
`and 2).
`
`Installing and Updating Program Module
`Components
`
`Briefly described, the present invention can update soft-
`ware program module components or install new software
`program module components over the Internet either
`automatically, or manually based upon user input. FIG. 3 is
`a simplified block diagram illustrating the components of an
`exemplary embodiment of the present invention. FIG. 3
`includes elements from FIGS. 1 and 2 such as computer 20,
`database server 80a, and package server 80b.
`In an exemplary embodiment of the present invention,
`computer 20 sends a query 100 on orafter a predetermined
`date over the Internet to database server 80a. It should be
`
`understood that database server 80a may be a server at any
`URLspecified in an auto-autoupdate registry key. The URL
`in the auto-autoupdate registry key may be customized by a
`user, such as by an administratorat the time of deploying the
`“WORD 8.0” program module. The predetermined date is
`typically the date that an upgrade is expected for one or more
`program modules stored on computer 20. The predetermined
`date is typically stored in an auto-autoupdate registry key as
`will be further described below. The query 100 includesall
`of the information regarding computer 20 that the database
`server 80a needs to determine if an upgradeis available and,
`if an upgrade is available, to determine the location of the
`upgrade package.
`the database server 80a
`After
`reviewing query 100,
`returns a response 105 over the Internet to the computer 20.
`If an upgrade is not available, the database server 80a will
`return a response 105 that indicates that no upgrade is
`available and that includes the date that an upgrade is
`expected. If there will be no more upgradesin the future, or
`if an administrator has decided to turn off the update feature
`of this embodiment, then the database server 80a will return
`a response that will deactivate the auto-autoupdate feature.
`However, if an upgrade is available, then the database
`server 80a will send back a response 105 that includes the
`URLof the upgrade package. It should be understood that
`each configuration of computer 20 may require a different
`upgrade package and, therefore, a different URL. The data-
`
`Page 9 of 13
`  6
`APPLE EXHIBIT 1004 - PAGE 0009
`
`
`
  
` 
7
`
`

`

`5,974,454
`
`7
`base server 80a may also send back the URL ofan alterna-
`tive download site in case the primary downloadsite is
`overloaded.
`
`After the computer 20 receives the response 105 including
`the URLof the upgrade package, the computer 20 will send
`a query 110 to the package server 80b at the URL ofthe
`update package. The package server 80b will send the
`update package 115 to the computer 20 and the computer 20
`will then install the update package 115.
`It should be understood from the above description of an
`exemplary embodimentof the present invention that a server
`or servers capable of handling the traffic caused by this
`update feature must be maintained. The servers are respon-
`sible for assessing whether an upgrade is available and
`whether it should be downloaded based on the information
`
`sent by computer 20. For example, even if an upgrade is
`available, it should not be downloaded if the computer 20
`already has the upgrade or if the upgrade is somehow
`incompatible with computer 20. The servers are further
`responsible for providing the downloadtarget in the form of
`an URL if a new upgradeis available. Providing the URL
`may include load balancing between servers because if a
`primaryserver has a high volume, URLsofalternate servers
`with the same upgrade package maybeutilized. It should be
`further understood from the above description that
`the
`servers may also provide a “next check”date if there is not
`an upgrade currently available.
`Having generally described an exemplary embodiment
`above in reference to FIG. 3, a more detailed description of
`an exemplary embodiment of the present invention is pre-
`sented below in reference to FIGS. 4A and 4B.
`
`FIGS. 4A and 4B are flowcharts illustrating a method 400
`for automatically updating software program module com-
`ponents or installing new software program module com-
`ponents in accordance with an exemplary embodimentofthe
`present invention. Those skilled in the art will appreciate
`that this exemplary embodimentis a computer-implemented
`process that is carried out by the computer in response to
`input from the user and instructions provided by an appli-
`cation program module.
`Referring to FIG. 4A, the method 400 beginsat step 403
`and proceeds to decision step 406 after the word processor
`program module 37 is booted and the Web Authoring
`Components program module 37ais initialized. At decision
`step 406, it is determined whether or not the current date is
`greater than or equal to a date stored in a registry key by the
`Web Authoring Components program module 37a. In the
`exemplary embodiment, when the Web Authoring Compo-
`nents program module is initially installed, a registry key
`will typically be set equal to the date that an upgradeto the
`Web Authoring Components program module is expected.
`The current date is the date that is maintained onthe internal
`
`clock of computer 20.
`If, at decision step 406, it is determined that the current
`date is less than the date stored in the registry key, then the
`method endsat step 499. However,if, at decision step 406,
`it is determinedthat the current date is greater than or equal
`to the date stored in the registry key,
`then the method
`proceeds to step 409. For example, suppose the date that a
`software producer expects an upgraded version of the Web
`Authoring Components program module to be available is
`Sep. 1, 1998. Then, the software producer will design the
`Web Authoring Components program module so that the
`date Sep. 1, 1998 is stored in the regisiry key when the Web
`Authoring Components program module is initially
`installed. Thus, whenever the Web Authoring Components
`
`10
`
`15
`
`30
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`8
`program module is initialized before Sep. 1, 1998, no action
`is taken and the method ends at step 499. However, when-
`ever the Web Authoring Components program module is
`initialized on or after Sep. 1998, the method proceedsto step
`409.
`
`At step 409, a dialog box is displayed to the user on
`monitor 47 warning that a dial-up connectionto the Internet
`is necessary to proceed with upgrading the Web Authoring
`Components program module and asking whether the user
`wants to proceed. The user mayeither select to proceed with
`allempting to upgrade the Web Authoring Components pro-
`gram module or select to terminate the upgrade attempt,
`such as by selecting a checkbox or yes/no buttons in the
`dialog box with mouse 42. Step 409 is typically performed
`to warn the user that a dial-up connection to the Internet is
`necessary.
`
`After the user selects either to proceed or to terminate at
`step 409,
`the method proceeds to decision step 412. At
`decision step 412, it is determined whetherthe user selected
`to proceed with the dial-up connection. If so,
`then the
`method proceeds to step 415.
`If not,
`then the method
`proceeds to step 424. At step 424, 30 days is added to the
`current date to determine a next check date to be stored in
`
`the registry key. This next check date is then stored in the
`registry key. Thus, the next check date stored in the registry
`key will prevent the auto-autoupdate feature from being
`automatically initiated again until 30 days from the current
`date. After step 424, the method endsat step 499. It should
`also be understood that the user has the option of selecting
`a checkbox that reads “Don’t ask me again”. When this
`checkbox is selected, all future auto-autoupdate actions are
`disabled, preferably by setting the date in the registry key
`equal to “—1”. If not, then the method endsat step 499.
`
`Still referring to FIG. 4A, at step 415, a HyperText
`Transfer Protocol (HTTP) query is initiated and sent from
`computer 20 over the Internet to the database server 80a.
`The HTTP query may be sent asynchronously so that the
`user may perform other tasks while the query is being sent.
`To construct
`the query,
`information about
`the setup of
`computer 20 is appended to a H'Il'lP Internet address stored
`in the form of a standard HTTP query. The HTTP Internet
`address is typically stored when the Web Authoring Com-
`ponents program module is initially installed. However, it
`should be understood that
`this Internet address may be
`edited to direct the query to an internal server, such as if an
`administrator would like to control upgrades internally
`rather than over the Internet. The query is structured to
`identify the information needed to determine which upgrade
`package URLis required by comp

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