USOO6353926B1 (12) United States Patent (10) Patent No.: US 6,353,926 B1 Parthesarathy et al. (45) Date of Patent: *Mar. 5, 2002

(54) SOFTWARE UPDATE NOTIFICATION 5,694,546 A 12/1997 Reisman ...... 705/26 5,732.275 A * 3/1998 Kulick et al...... 717/11 (75) Inventors: Srivatsan Parthesarathy, Issaquah; 5,821,937 A * 10/1998 Tonelli et al...... 345/853 Reiner Fink, Mercer Island; Sean L. 5,831,610 A * 11/1998 Tonelli et al...... 345/735 Flynn, North Bend; Ray Sun, 5,896.566 A * 4/1999 Averbuch et al...... 455/419 Redmond, all of WA (US) 5,919.247 A * 7/1999 Van Hoff et al...... 709/217 5,983,369 A * 7/1999 Bakoglu et al...... 714/46 (73) Assignee: Corporation, Redmond, WA 6,021,433 A * 2/2000 Payne et al...... 709/219 (US) * cited by examiner (*) Notice: This patent issued on a continued pros ecution application filed under 37 CFR 1.53(d), and is subject to the twenty year Primary Examiner Tuan Q. Dam patent term provisions of 35 U.S.C. Assistant Examiner Hoang-Vu Antony Nguyen-Ba 154(a)(2). (74) Attorney, Agent, or Firm-Banner & Witcoff, Ltd. Subject to any disclaimer, the term of this (57) ABSTRACT patent is extended or adjusted under 35 U.S.C. 154(b) by 0 days. A method for allowing a software vendor to notify a user of a Software update is disclosed. At the time of installing an application, the user is prompted to Subscribe to a Software (21)21) Appl. No.: 09/115,09/115,645 update channel. A shortcut (link file) that the application (22) Filed: Jul. 15, 1998 installs is created with Special information that identifies the 7 application by a unique name. The channel is updated 3. ------717s:of its periodically based on the Schedule Suggested by the channel. (58) Field of search .395712,345,335 When a new update is detected, the software channel deliv ers the Software update to the user's computer and sends 34.5/356, 650, 661, 676, 700, 748, 749, notifications Such as email or gleaming the icon to indicate 752, 763; 455/419; 709/217, 219; 714/46; that a new Software update is now available. Also, the next 717/11, 3; 707/203; 713/100 time the user launches the application through the shortcut (56) References Cited (link file), the shell automatically displays the update noti fication information to the user. U.S. PATENT DOCUMENTS 5,586,304. A 12/1996 Stupek, Jr. et al...... 717/11 26 Claims, 4 Drawing Sheets

- - - - - goa Setting up a Software update citate

02

update is available

- - - - . . . 6

Charge version number in registry

8

N U.S. Patent Mar. 5, 2002 Sheet 1 of 4 US 6,353,926 B1

Z? XHOMIENWENW"WOOTI

| | | | | |

947 I9Iná

|Z

SET000W U.S. Patent Mar. 5, 2002 Sheet 2 of 4 US 6,353,926 B1

NFORMATION

60 N.

COMPUTER NEWORK 62

REMOTE COMPUTER

MODEM LOCAL COMPUTER Figure 2 U.S. Patent Mar. 5, 2002 Sheet 3 of 4 US 6,353,926 B1

Setting up a Software update channel

102

SubscribingSoftware Update to the Figuree 3 Channel

Periodically checking to see if update is available

1 O6 16 No -1s new update Change version available number in registry -

No. Yes

14

Load update Load update OW eve?

Yes 118 U.S. Patent Mar. 5, 2002 Sheet 4 of 4 US 6,353,926 B1

FaVOrites Help Add to Favoritesite t Organize Favorites Favorites History Channels

Manage SubScriptions... Update All Subscriptions

date your > Channels > Client Capabilities d le >

e originally downloaded this control OSD Demo > SD) channel to automatically is Personal oned version 2.0 of CoolControl er i? Software Updates >13 Circle Control Channel OTools > s ShockWave Channel

An updated versioin of this program has been downloaded. To view this program's Webpage for installation instructions, click Show Update Remind me untill update the current version

Fig. 5 US 6,353,926 B1 1 2 SOFTWARE UPDATE NOTIFICATION SUMMARY OF THE INVENTION FIELD OF THE INVENTION The above-described Shortcomings, disadvantages and problems are addressed by the invention by providing meth This invention relates generally to Software distribution, ods for allowing Software vendors to automatically notify and more particularly to a method of notifying a user of 5 Software updates using a Software update notification chan users of updates preferably when the application is being nel. used by the user. The invention described herein leverages channel archi BACKGROUND OF THE INVENTION tecture and Open Software Description (OSD) vocabulary to Historically, the primary medium for software distribution provide a way for the application vendor to Subscribe the has been either the traditional floppy disk or the more recent user to a Software update channel that the Vendor can use to compact disc (CD-ROM). However, more and more indi notify users of Software updates as they become available. viduals are acquiring Software by downloading it from At the time of installing the application, the user is prompted remote Server computers connected to the client computers to Subscribe to the Software update channel. A shortcut (link through the Internet. Additionally, companies and organiza file) that the application installs is created with special tions are distributing Software to their users across their local 15 information that identifies the application by a unique name. area networks. The physical medium is a network cable and The channel is updated periodically based on the Schedule the Supporting communication hardware are the fixed cost Suggested by the channel. When a new update is detected, associated with the establishment of the network. Therefore, the software channel delivers the software update to the distributing and installing Software over an existing network user's computer and Sends notifications by, for example, bypasses the costly overhead of producing CDS or floppy email or gleaming the icon to indicate that a new Software diskS. update is now available. Also, the next time the user In addition, using the network as the distribution medium launches the application through the shortcut (link file), the profoundly reduces the Software's total cost of ownership to shell automatically displays the update notification informa tion to the user. an extent that cannot be achieved by CDs or floppies even 25 when the media cost almost nothing to manufacture. Soft ware distribution via CDs and floppies obeys the “pull” BRIEF DESCRIPTION OF THE DRAWINGS paradigm, where every action is user-initiated. Distribution The invention will now be described with reference to the over the network has the ability to apply a “push’ paradigm following drawings in which like reference numerals refer to which provides three main benefits. like elements and wherein: First, the installation is “hands-free” in that the user does FIG. 1 is a block diagram showing the hardware and not have to manually install the Software. Second, the operating environment in conjunction with which embodi Software can easily and timely be upgraded from a desig ments of the invention may be practiced; nated location because the burden of upgrading is borne by FIG. 2 illustrates a browsing environment; the software itself Third, because different types of computer 35 FIG. 3 is a chart illustrating a method for notifying hardware and operating Systems can connect to a common a user of a Software application update according to one network, Software distributed over the network can be made embodiment of the invention; to work acroSS platforms or intelligent So that only the FIG. 4 is a window screen illustrating the notification of correct version of platform-specific Software is pushed down the user according to one embodiment of the present inven to the user. 40 tion; and However, current methods of Software distribution over a FIG. 5 is a window screen illustrating the notification of network do not fully exploit the benefits. Existing distribu the user according to one embodiment of the present inven tion of platform-specific, or “native code,” Software relies on tion. installation file formats that are hard to create, not DETAILED DESCRIPTION extensible, and Specific to a particular operating System. 45 Although most current Software is written in modules, there FIG. 1 and the following discussion are intended to is no current mechanism that handles the Situation where one provide a brief, general description of a Suitable computing component in a Software program requires the presence of environment in which the invention may be implemented. another to operate. If a user downloads software from a Web Although not required, the invention will be described in the page, the user may discover that the program requires an 50 general context of computer-executable instructions, Such as external library which necessitates another network Session program modules, being executed by a personal computer. to download, assuming the user can find the right location, Generally, program modules include routines, programs, and then the user must manually install the library before objects, components, data structures, etc. that perform par installing the Software. ticular tasks or implement particular abstract data types. Furthermore, Software vendors today do not have a good 55 Moreover, those skilled in the art will appreciate that the infrastructure to notify users of their application about invention may be practiced with other computer System updates to their Software, critical bugfixes, etc. If at the time configurations, including hand-held devices, multiprocessor of registering the Software, the user can provide the vendor Systems, microprocessor-based or programmable consumer with an email address which the vendor can use to commu electronics, network PCs, minicomputers, mainframe nicate information about upgrades to the user. However, few 60 computers, and the like. The invention may also be practiced people actually register partially out of a concern that their in distributed computing environments where tasks are anonymity will not be preserved and the fear of being performed by remote processing devices that are linked “spammed” with junk email. Even if the Software vendor has through a communications network. In a distributed com a web page that describes the updates, there is no compelling puting environment, program modules may be located in infrastructure that will make the user aware that the web 65 both local and remote memory Storage devices. page has changed or let the user know automatically at the With reference to FIG. 1, an exemplary system for imple time the application is used that an update is available. menting the invention includes a general purpose computing US 6,353,926 B1 3 4 device in the form of a conventional personal computer 20, through a network interface or adapter 53. When used in a including a processing unit 21, a System memory 22, and a WAN networking environment, the personal computer 20 System buS 23 that couples various System components typically includes a modem 54 or other means for establish including the System memory to the processing unit 21. The ing communications over the wide area network 52, Such as System buS 23 may be any of Several types of bus Structures the Internet. The modem 54, which may be internal or including a memory bus or a memory controller, a peripheral external, is connected to the System buS 23 via the Serial port bus, and a local bus using any of a variety of bus architec interface 46. In a networked environment, program modules tures. The System memory includes read only memory depicted relative to the personal computer 20, or portions (ROM) 24 and a random access memory (RAM) 25. Abasic thereof may be Stored in the remote memory Storage device. input/output System 26 (BIOS), containing the basic routines It will be appreciated that the network connections shown that helps to transfer information between elements within are exemplary and other means of establishing a communi the personal computer 20, Such as during Start-up, is Stored cations link between the computers may be used. in ROM 24. The personal computer 20 further includes a AS is familiar to those skilled in the art, the computer hard disk drive 27 for reading from and writing to a hard System 20 further includes an operating System and at least disk, not shown, a magnetic disk drive 28 for reading from one application program. The operating System is a Set of and writing to a removable magnetic disk 29, and an optical 15 Software which controls the computer System's operation disk drive 30 for reading from and writing to a removable optical disk 31 such as a CD ROM or other optical media. and the allocation of resources. The application program is The hard disk drive 27, magnetic disk drive 28, and optical a set of Software that performs a task desired by the user, disk drive 30 are connected to the system bus 23 by a hard making use of computer resources made available through disk drive interface 32, a magnetic disk drive interface 33, the operating System. Both are resident in the illustrated and an optical disk drive interface 34, respectively. The memory 22. drives and their associated computer-readable media provide In accordance with the practices of perSons skilled in the nonvolatile Storage of computer readable instructions, data art of computer programming, the invention is described Structures, program modules and other data for the personal below with reference to acts and Symbolic representations of computer 20. Although the exemplary environment 25 operations that are performed by the computer System 20, described herein employs a hard disk, a removable magnetic unless indicated otherwise. Such acts and operations are disk 29 and a removable optical disk 31, it should be Sometimes referred to as being computer-executed. It will be appreciated by those skilled in the art that other types of appreciated that the acts and Symbolically represented computer readable media which can Store data that is operations include the manipulation by the CPU 21 of accessible by a computer, Such as magnetic cassettes, flash electrical Signals representing data bits which causes a memory cards, digital Video disks, Bernoulli cartridges, resulting transformation or reduction of the electrical Signal random access memories (RAMs), read only memories representation, and the maintenance of data bits at memory (ROMs), and the like, may also be used in the exemplary locations in the memory System 22 to thereby reconfigure or operating environment. otherwise alter the computer System's operation, as well as A number of program modules may be Stored on the hard 35 other processing of Signals. The memory locations where disk, magnetic disk 29, optical disk 31, ROM 24 or RAM 25, data bits are maintained are physical locations that have including an operating System 35, one or more application particular electrical, magnetic, optical, or organic properties programs 36, other program modules 37, and program data corresponding to the data bits. 38. A user may enter commands and information into the In an illustrative embodiment of the invention, the com personal computer 20 through input devices Such as a 40 puter system 20 preferably uses the Windows 95 or Win keyboard 40 and a pointing device 42. Other input devices dows 98 client server operating system. However, other (not Shown) may include a microphone, joystick, game pad, client/server operating systems (e.g. Windows NT, O/S2 by Satellite dish, Scanner, or the like. These and other input IBM, Mac OS, UNIX Windows CE, etc.) can also be used. devices are often connected to the processing unit 21 A client/server operating System is an operating System through a Serial port interface 46 that is coupled to the 45 which is divided into multiple processes of two different System bus, but may be connected by other interfaces, Such types: Server processes, each of which typically implements as a parallel port, game port or a universal Serial bus (USB). a single Set of Services, and client processes, which request A monitor 47 or other type of display device is also a variety of Services from the Service processes. Object connected to the System buS 23 via an interface, Such as a oriented programming is used to design the client/server video adapter 48. In addition to the monitor, personal 50 operating System, and applications which run under the computers typically include other peripheral output devices client/operating System, where objects represent System (not shown), Such as speakers and printers. CSOUCCS. The personal computer 20 may operate in a networked For example, the Windows 95 client/server operating environment using logical connections to one or more System provides shareable resources, Such as files, memory, remote computers, Such as a remote computer 49. The 55 processes and threads, which are implemented as “objects' remote computer 49 may be another personal computer, a and are accessed by using “object Services.” AS is well Server, a router, a network PC, a peer device or other known in the art, an “object' is a data Structure whose common network node, and typically includes many or all of physical format is hidden behind a type definition. Data the elements described above relative to the personal com Structures, also referred to as records or formats, are orga puter 20, although only a memory storage device 50 has 60 nization Schemes applied to data So that it can be interpreted, been illustrated in FIG.1. The logical connections depicted and So that specific operations can be performed on that data. in FIG. 1 include a local area network (LAN) 51 and a Such data Structures impose a physical organization on the network (WAN) 52. Such networking environments are collection of data Stored within the computer memory 22 commonplace in offices, enterprise-wide computer and represent Specific electrical, magnetic or organic ele networks, intranets and the Internet. 65 mentS. When used in a LAN networking environment, the per An “object type, also called an “object class,” comprises sonal computer 20 is connected to the local network 51 a data-type, Services that operate in instances of the data US 6,353,926 B1 S 6 type, and a set of object attributes. An “object attribute” is can Subscribe to the Software update channel when the user a field of data in an object that partially defines that object's initially loads the Software on the user's computer or at a State. An "object Service' implements and manipulates later time, in step 102. Once the user subscribes to the objects, usually by reading or changing the object attributes. Software update channel, the user's computer will periodi “Object oriented design” is a software development tech cally check via the Software update channel whether a new nique in which a System or component is expressed using update is available in step 104. If a new update is not objects. available, in step 106, the user's computer will continue to An object typically has two components: a function table, periodically check the Software update channel for a new containing a pointer to each object member function (i.e., update on a Schedule prescribed by the Software update Sometimes known as an object method) defined in the channel. object's class, and a data block, containing the current If a new update is detected, in step 106, the software values for each object variable (i.e., data members, Some update channel downloads the update information to the times known as an object property). An application has some user's computer in step 108. When the user next uses the reference to an object through the object pointer. An appli computer or the Specific application, the user is notified that cation obtains this object reference by using Some type of 15 a new update is available in step 110. The computer then function call (direct or implied) in which that function queries the user to determine if the user wants to load the allocates an object block in computer memory, initializes the new update now in Step 112. If the user does not want to load function table, and reruns the reference to the computer the new update, the computer can then inquire if the user memory to an application. The computer memory may be may want to load the update in the future in step 114. If the local or distributed on a remote computer. user does not want to ever load the new update, the computer The Windows 95 operating system allows users to execute notes that the update has been received in a registry, in Step more than one program at a time by organizing the many 116, and returns to step 104 to check periodically for the next tasks that it must perform into “processes.” The operating Software update. However, if it is determined in step 112 that System allocates a portion of the computer's resources to the user wants to load the new update, the new update is each proceSS and ensures that each process's program is 25 loaded in Step 118 and the registry is updated to note the dispatched for execution at the appropriate time and in the version of the software that was loaded in step 116. The appropriate order. computer then returns to step 104 to periodically check for In an illustrative embodiment of the invention, processes the next Software update. It will be appreciated by one are implemented as objects. A proceSS object comprises the skilled in the art that steps 110, 112, 114, and 118 could be following elements: an executable program; a private skipped by automatically updating the user's computer address space; System resources (e.g., communication ports every time a new update is detected. and files) that the operating System allocates to the process The following description will now more fully describe as the program executes, and at least one “thread of execu the individual steps of FIG. 3. As noted above, the invention tion.” A “thread” is the entity within a process that the uses Open Software Description (OSD) vocabulary. OSD operating System kernel Schedules for execution. AS is well 35 Specifies a vocabulary used for describing Software packages known in the art, each thread has an associated “context' and their dependencies for client computers which is a which is the volatile data associated with the execution of Subset of the Extensible Markup Language (XML). Using the thread. A thread's context includes the contents of the XML model, markup tags in the OSD vocabulary are System registers and the virtual address belonging to the represented as elements of a tree. The three basic relation threads process. Thus, the actual data comprising a threads 40 ships between the elements are “parent of “child of,” and context varies as it executes. “sibling of.” Distant relationships can be formed from In a browsing environment 60 of FIG. 2, a local computer recursive applications of the three basic ones. Additional information on the OSD vocabulary can be found in the 61 runs Software referred to herein as a “browser' for unified Specification for the Open Software Description (OSD) browsing of electronic documents and other data from local 45 Sources and from a computer network (e.g., the Internet, an Format published on Aug. 11, 1997, and available for intranet). The browser can be integrated with an operating download from either Microsoft Corporation or Marimba, System Software, or can be a separate application Software. Inc. The browser is typically an object oriented application. The The OSD vocabulary can be used in a stand-alone XML illustrated remote computer network 62 is the Internet. In the 50 manifest file to declare the dependencies between different illustrated browsing environment 60, the local computer 61 Software components for different operating Systems and connects to the computer network 62 over a telephone line languages. The OSD file provides instructions that can be 63 via a modem, a Satellite link, an optical fiber, an Ethernet used to locate and install only the required Software com or other local area network technology wire and adapter ponents depending on the configuration of the target card, radio or optical transmission devices, etc. The inven 55 machine and what software is already present. The OSD tion can alternately be embodied in a browsing environment formatted manifest file can also be embedded in an archive for other public and private computer networks, Such as a file, Such as a Java Archive (JAR) file, or a composite, computer network of a commercial on-line Service or an compressed file Such as a cabinet (CAB) file, that contains internal corporate local area network (LAN), an intranet, or the distribution unit to form a distribution unit file. like computer network. 60 The creation of the Software update notification channel One embodiment of the invention will now be described will now be described but the invention is not limited thereto with reference to FIG. 3. First, the software vendor sets up and this example is being given as only one illustration of a software update channel, in step 100. As noted above, the how a software update channel can be created. The follow Software update channel provides a link between the Soft ing is a CDF (Channel Definition Format) file illustrating ware vendors web page and at least one user's computer So 65 the creation of a Software update channel: as to allow the Software vendor to Send Software updates to <'XML version='10'> the users. As will be described in more detail below, the user US 6,353,926 B1 7 8 user is typically prompted to Subscribe to the application's described. The modification can be performed in several TITLEGreens/TITLE ways. First, the operating System may have a mechanism for program: Ishe 11 Link: SetPath(::{(9 db 1186f-40df-11d 1-aa8c 00cc)4fb67863}:AppName:Path); Internet Explorer's Favorites/ WMicrosoft\Windows\CurrentVersion\Uninstall Software Updates, as illustrated in FIG. 4. The LOGO is Path Path to the program (the normal target of shown next to the TITLE in the Microsoft Internet Explor the shortcut) er's Software Updates folder. The vendor can choose a custom icon or delete this tag (from ) to use the Alternatively, the shortcut can be made OSD-aware after default satellite dish logo from Microsoft Internet Explorer. it is created using the freely distributed blesslink tool pro The SOFTPKG HREF is replaced to point to a URL that 35 vided by Microsoft in the \bin directory of the Internet Client the vendor wants to Send the user when an update is SDK 4.01 refresh package. After placing the shortcut on the available. Initially before there is a new version and the user's machine, the following command is executed: vendor doesn't know where the new information will be Blesslink-1 AppName FullPath posted, the vendor can point to the same location as used for where: the CHANNEL HREF. The NAME is then changed to either 40 a GUID (Globally Unique Identifier) (as shown) represent ing the Software or to the applications name in the Uninstall branch of the Registry. The Version number is then changed AppName The name of your application in the to the version number of the Software. The vendor can then HKEY LOCAL MACHINE\SOFTWAREMicrosofty change the PRECACHE to no if the vendor doesn’t want 45 Windows\CurrentVersion\Uninstall branch of the registry Internet Explorer to automatically receive the Software FPath The full directory path to the shortcut update bits at the subscription update time. The TITLE is then changed to reflect the vendor's Software name which This can run at the end of the Setup program or on the initial will be shown in the update dialog box when the user is launch of the program. If the link is not made OSD-aware, notified of an update. The ABSTRACT is also changed to 50 the user can Still be notified of updates by the gleam give the user a description of the Software which will also be mechanism described below, but the user will not get the shown in the update dialog box. Finally, the CODEBASE is notification dialog box upon launching the shortcut. changed to point to the URL of the vendor's Software. This A Security enhancement can also be incorporated wherein can point to a CAB or an .EXE. the Software decides which Site is authorized to update the When a new version of the Software becomes available, 55 Software. An AuthorizedCDFPrefix key can be included the vendor changes the CDF file on the vendor's web server. under the HKEY LOCAL First, the version number is changed to the new larger MACHINE\Software\Microsoft\Windows\Current number. The old CAB, .EXE, etc., file pointed to by the Version\Uninstall\\Available Version. presenting information from the Software update channel When the user launches the application by clicking on the about the new version. This message box also gives the user LNK file for the application, the shell inspects the LNK file the option of launching a browser to a Web page that 1O for appname information and if present compares the contains information on how to obtain or install the new installed version versus the available version as recorded at version of Software. It also has a checkbox through which channel update time to see if the user should be notified. If the user can indicate that the user is uninterested in the new necessary the shell brings up a dialog about the Software version. update. The user has an option to inspect the update infor An alternative method for determining whether there is a 15 mation in which case the user is taken to a Setup web page new advertisement available will now be described. A dis for the application update, or can choose to ignore the update tinction first needs to be made among three different version and proceed to use the non-updated application. The user numbers associated with a product and product ID. The first also will be reminded of the update until the user installs the version is the installed version. The installed version is that update or chooses to permanently ignore this version of the version that is actually present on the user's machine. The update. advertised version is the most recent version that the user has Although the present embodiments of the invention have been informed of via the shell notification mechanism. The been described in detail, it should be understood that various update version is the version that is currently available via changes, alterations and Substitutions can be made therein the Software update channel. without departing from the Spirit and Scope of the invention When a Software update is available, the vendor changes 25 as defined by the appended claims. the CDF file on the server to reflect the new version of the We claim: Software that is available. For a given update version, the 1. A method for updating Software, comprising the Steps Software update channel is capable of delivering a simple of: notification of the version or of downloading the installation files for the new version in preparation for installation at the installing Software on a local computer; user's discretion. The registry information for the product creating a shortcut link for launching the installed tracks where the user is in the notification and installation Software, wherein said installed Software is identified in cycle as the advertisement State (or adState). the shortcut link by version data; The advertisement State may progreSS through a Series of Subscribing to a Software update channel; increasing values: 35 detecting through Said Software update channel that a new SOFTDIST ADSTATE NONE-the update version Software update is available on a remote computer; has not been brought to the user's attention; recording data relating to Said new Software update on SOFTDIST ADSTATE AVAILABLE-the user has Said local computer, wherein Said data comprises new been notified of the update's availability; Version data; SOFTDIST ADSTATE DOWNLOADED-the user 40 comparing Said version data Stored in Said shortcut link has been notified that the update installation package with version data from Said new Software update when has been downloaded to the user's machine; Said installed Software is launched using Said shortcut SOFTDIST ADSTATE INSTALLED-the user has link, and been notified that the update has been completely updating Said installed Software when Said new version installed on the user's machine. 45 data is more current than Said version data Stored in Said Agiven update version begins in a State indicating that the shortcut link. update version has not been advertised (SOFTDIST 2. A method according to claim 1, wherein Said local ADSTATE NONE). At the time of the shell link resolution, computer periodically checks the Software update channel to the update version is compared to the other versions determine if a new Software update is available. (installed and advertised). If the update version is greater 50 3. A method according to claim 1, further comprising the that or equal to the installed version and the advertised Step of: version, the shell compares the adState in the registry with updating the version data Stored in Said shortcut link after the new computed advertisement state (or adStateNew). If the Software has been updated. the installed version equals the update version, the computed 4. A method according to claim 1, wherein a user Sub advertisement State is SOFTDIST AD STATE 55 Scribes to Said Software update channel during initial instal INSTALLED, indicating that the update version is already lation of the Software. on the user's machine. Otherwise, if the Software update 5. A method according to claim 1, wherein a user Sub channel has Set its precache flag, the computed advertise Scribes to Said Software update channel after installation of ment state is SOFTDIST ADSTATE DOWNLOADED, the Software. else it is SOFTDIST ADSTATE AVAILABLE. 60 6. A method according to claim 1, wherein a user is If adStateNew is greater than the stored adState, then notified that a Software update is available by email. there is fresh information to bring to the user's attention and 7. A method according to claim 1, wherein a user is the message box is displayed. If the user Sets the “don’t notified that a Software update is available by a gleaming remind me’ checkbox, and dismisses the message box with icon. Some response other than Cancel, the value of adStateNew 65 8. A method according to claim 1, wherein a user is is Stored in the registry replacing the previous adState, and notified that a software update is available when the soft the update version is Stored as the new advertised version. ware is loaded on Said local computer. US 6,353,926 B1 11 12 9. A method according to claim 1, further comprising the allowing Software on Said local computer to be updated Steps of: from only the authorized site. determining whether said Software update is from an 21. A method for installing and updating Software, com authorized Site, and prising the Steps of allowing Software on Said local computer to be updated 5 installing Software on a local computer; from only the authorized site. creating a shortcut link for launching the installed 10. The method of claim 1, further comprising: Software, wherein said installed Software is identified in notifying a user that the new Software update is available; the shortcut link by version data; and Subscribing to a Software update channel; detecting through Said Software update channel that a new querying the user to determine whether the user desires to Software update is available on a remote computer; load the new Software update, wherein Said updating of recording data relating to Said Software update on Said the installed Software is performed when, in response to local computer, wherein Said data comprises new ver the querying Step, the user indicates a desire to load the 15 Sion data; new Software update. comparing Said version data Stored in Said shortcut link 11. A method for updating Software, comprising the Steps with version data from Said new Software update when of: Said installed Software is launched using Said shortcut installing Software on a local computer; link, and creating a shortcut link for launching the Software, updating Said installed Software when Said new version wherein said installed Software is identified in said data is more current than Said version data Stored in Said shortcut link by version data; shortcut link. Subscribing to a Software update channel; 22. A method for installing and updating Software, com detecting through Said Software update channel that a new 25 prising the Steps of Software update is available on a remote computer; installing Software on a local computer; automatically loading Said new Software update on Said creating a shortcut link for launching the installed Software, wherein said installed Software is identified in local computer when Said new Software update is Said shortcut link by version data; detected; Subscribing to a Software update channel; comparing Said version data Stored in the shortcut link detecting through Said Software update channel that a new with version data of Said new Software update when Software update is available on a remote computer; Said new Software update is launched using said short automatically loading said new software update on said cut link, and local computer when Said new Software update is updating Said installed Software on Said local computer 35 detected; when Said version data of Said new Software update is comparing Said version data Stored in the shortcut link more current than Said version data Stored in Said with version data of Said new Software update when shortcut link. Said installed Software is launched using Said shortcut 12. A method according to claim 11, wherein Said local 40 link, and computer periodically checks the Software update channel to updating Said installed Software on Said local computer determine if a new Software update is available. when Said version data of Said new Software update is 13. A method according to claim 11, wherein a current more current than Said version data Stored in Said version of the installed Software is recorded in a registry in Said local computer. shortcut link. 45 23. A method for installing and updating Software, com 14. A method according to claim 11 further comprising the prising the Steps of Step of first, installing Software on a local computer; updating the version data Stored in Said shortcut link after after the installing Step, creating a shortcut link for the Software has been updated. lauching the installed Software, wherein Said installed 15. A method according to claim 11, wherein a user 50 Subscribes to Said Software update channel during initial Software is identified in the shortcut link by version installation of the Software. data and the creating of the Shortcut link is performed 16. A method according to claim 11, wherein a user by an operating System function within installation Subscribes to Said Software update channel after installation code, of the Software. 55 after the installing Step, Subscribing to a Software update 17. A method according to claim 11, wherein a user is channel; notified that a Software update is available by email. after the Subscribing Step, detecting through said Software 18. A method according to claim 11, wherein a user is update channel that a new Software update is available notified that a Software update is available by a gleaming on a remote computer; CO. 60 19. A method according to claim 11, wherein said user is after the detecting Step, recording data relating to Said new notified that a software update is available when the soft Software update on Said local computer, wherein Said ware is loaded on Said local computer. data comprises new version data; 20. A method according to claim 11, further comprising comparing Said version data Stored in Said shortcut link the Steps of: 65 with version data from Said new Software update when determining whether said Software update is from an Said installed Software is launched using Said shortcut authorized Site, and link, and US 6,353,926 B1 13 14 updating Said installed Software when Said new version after the detecting Step, recording data relating to Said new data is more current than Said version data Stored in Said Software update on Said local computer, wherein Said shortcut link. data comprises new version data; 24. The method of claim 23, further comprising the step of providing a notification to a user responsive to Said data. after the detecting Step, automatically loading Said new 25. A method for installing and updating Software, com Software update on Said local computer when Said new prising the Steps of Software update is detected; first, installing Software on a local computer; comparing Said version data Stored in Said shortcut link after the installing Step, creating a shortcut link for 1O with version data from Said new Software update when launching the installed Software, wherein Said installed Software is identified in the shortcut link by version Said installed Software is launched using Said shortcut data and the creating of the shortcut link is preformed link, by an operating System function within installation updating Said installed Software when Said new version code; 15 data is more current than Said version data Stored in Said after the installing Step, Subscribing to a Software update shortcut link. channel; 26. The method of claim 25, further comprising the step after the Subscribing Step, getting through Said Software of providing a notification to a use responsive to Said data. update channel that a new Software update is available on a remote computer; UNITED STATES PATENT AND TRADEMARK OFFICE CERTIFICATE OF CORRECTION

PATENT NO. : 6,353,926 B1 Page 1 of 1 DATED : March 5, 2002 INVENTOR(S) : Srivatsan Parthesarathy et al.

It is certified that error appears in the above-identified patent and that said Letters Patent is hereby corrected as shown below:

Column 3 Line 63, -- Wide area -- has been added. Column 5 Line 18, “reruns” has been replaced with -- returns --. Column 12 Line 49, “lauching” has been replaced with -- launching --. Column 13 Line 12, “preformed” has been replaced with -- performed --. Line 17, "getting” has been replaced with -- detecting --.

Signed and Sealed this First Day of April, 2003

JAMES E ROGAN Director of the United States Patent and Trademark Office