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: Microsoft 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 > Links
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 flow 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
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