|Publication number||US20020078222 A1|
|Application number||US 09/738,389|
|Publication date||Jun 20, 2002|
|Filing date||Dec 14, 2000|
|Priority date||Dec 14, 2000|
|Also published as||US7930692, US20060277281|
|Publication number||09738389, 738389, US 2002/0078222 A1, US 2002/078222 A1, US 20020078222 A1, US 20020078222A1, US 2002078222 A1, US 2002078222A1, US-A1-20020078222, US-A1-2002078222, US2002/0078222A1, US2002/078222A1, US20020078222 A1, US20020078222A1, US2002078222 A1, US2002078222A1|
|Inventors||Jeffrey Compas, Travis Stockwell|
|Original Assignee||Compas Jeffrey C., Stockwell Travis M.|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (10), Referenced by (27), Classifications (12), Legal Events (1)|
|External Links: USPTO, USPTO Assignment, Espacenet|
 This invention relates to updating information in network devices.
 In push-based methods to update information (such as software, data or documents) in network devices file servers that store the information initiate the transfer of update packages to the network devices when the network devices become available.
 In pull-based methods of distribution, the copying of an update package from the server is initiated by the network device. Typically, the network device requests an update package from the server, downloads the package, and installs it.
 In both of these methods, the communication bandwidth available to the user diminishes for other applications running on the network device while the transfer is in progress.
FIG. 1 shows a computer network system.
FIG. 2 shows a listing file.
FIG. 3 is a flow chart.
FIG. 4 is a flow chart.
FIG. 5 shows an example of transferring information update packages over a computer network.
FIG. 6 shows a set of rules associated with conflicting client computer instructions.
 As shown in FIG. 1, a computer system 2 includes network devices 3 and file servers 4, 5 that can communicate over a network 6. Each network device 3 has a downloader component 7 that controls the automatic updating of information on that machine. A managing server 5 stores a listing 8 that contains information about available updates for the network devices. Update packages 9 can be stored on one or more servers 4.
 In one such system, the Internet is the network 6, web servers are the file servers 4, 5, and Internet appliances or personal computers with connections to the Internet act as the network devices 3.
 An example of the listing 8 kept on the managing server is shown in FIG. 2. In general, the listing 8 contains network device targeting information as well as descriptions of the available update packages 9. One section 30 in the listing 8 can list update packages that apply to all network devices. Other sections 32, 34 can list information applicable to individual network devices or groups of network devices that are defined (by listing) in another section 36 of the listing. The information about the update packages 9 includes the name 38, version 40, and location 42 of each package. extensible Markup Language (XML) can be used as the encoding language for the listing file. Files expressed in XML can be stored as readable text files, are easily transported over existing networks through HyperText Transfer Protocol (“HTTP”), work well within existing networks, and are compatible with many languages and development environments. Also, using XML, new information about update packages 9 can be added without affecting the downloader components 7 already in place. Newer versions of the downloader component 7 easily can be implemented to operate on older versions of the listing 8.
 As indicated by FIG. 3, to update information, the downloader component 7 in a particular network device 3 obtains 11 the listing 8 of available updates 9 from the managing server 5 through the network 6. This occurs automatically at at times that can be set by the user or preset in the factory during manufacturing. The downloader 7 parses 12 the listing 8 for install and uninstall instructions for that particular network device 3.
 The downloader 7 determines 13 whether any information stored on the network device 3 has to be removed to permit the update to occur. The downloader 7 then removes 14 any such information. Next, the downloader 7 identifies 15 what, if any, packages 9 are to be installed on the device 3 and on which servers 4 they are located. That information can be obtained from the listing file 8. The downloader 7 then downloads 16 the packages 9 and installs 17 the packages 9 on the network device 3.
 After the packages 9 have been downloaded and installed, the downloader 7 sends 18 a status report to the managing server 5 so that, if there were any problems with the transfer or installation, the system's administrator can correct them.
FIG. 4 illustrates an implementation of an automatic downloading process in which each package 9 is transferred from the server 4 to the network device 3 in portions. Before each portion is transferred, the downloader component 7 initially checks 21 if the network device 3 is using the network 6 connection 10. If the connection 10 is not in use, the downloader 7 increases 23 the size of the portion to be transferred and retrieves 24 the next portion of the package 9 from the server 4. If the connection 10 is being used, the downloader 7 resets 26 the portion size to its original state and enters 27 a sleep mode for a period of time before checking 21 again. After transferring 23 each portion, the downloader 7 determines 25 whether the entire package 9 has been transferred. If transfer of the package 9 is still incomplete, the downloader 7 returns to block 21 and repeats the process of checking 21 the connection 10, increasing 23 the portion size, and retrieving 24 the next portion.
 During the process of automatically downloading the package, if the downloader 7 finds the connection 10 in use by the network device at any point, it will revert to the beginning of the process so as not to decrease the bandwidth available to the user.
 An example of how such a process may occur is shown by FIG. 5. The package 9 in this example is thirteen kilobytes in size, and the downloader component 7 is configured to have an initial portion size of zero and to increase the portion size by one kilobyte (kB) each time it retrieves a portion of the package.
 Assuming that the downloader 7 initially determines that the connection 10 is unused by the network device 3, the downloader increases the portion size from zero to one kilobyte and transfers a copy of the first kilobyte 60 of the package 9 from the server to a storage 62 associated with the network device 3. The downloader 7 then determines that the transfer is unfinished and checks whether the connection 10 is in use. Assuming that the connection still is unused, the downloader 7 increases the portion size to two kilobytes and transfers the next portion 64 of the package 9.
 Transfer of the package 9 is still unfinished, and again the downloader 7 checks if the network device 3 is using the connection 10. Assuming that the connection 10 is now in use by the device 3, the downloader 7 resets the portion size to its original size of zero and enters the sleep mode for a predetermined period of time. The downloader 7 subsequently checks the connection 10, finds that it is unused, increases the portion size from zero to one kilobyte, and retrieves the next portion 66 of the package 9. It then repeats the process of checking the connection 10, increasing the portion size by one kilobyte, and transferring 23 the portions 68, 70 and 72 until the entire package 9 has been transferred.
 In some other implementations, the increase in size of transfer can vary. The increases can be in different units than kilobytes, and can increase by some formula such as twice or three times the previous portion size.
 In some situations, a network device 3 may be instructed to perform conflicting operations by the listing 8. For example, a specific device might be instructed to install a package that all devices are instructed to uninstall. FIG. 6 shows a set of rules that can be used to resolve such conflicts and can be implemented by the individual downloaders 7.
 The automatic downloading process described above can be implemented, for example, in Internet or Web appliances, such as the Intel® Dot.Station™ Web appliance or other personal computers functioning as network devices connected to the Internet. The downloader component 7 can use, for example, the HTTP GET command to obtain the listing 8 and apportioned update packages 9. Other transfer methods such as File Transfer Protocol (“FTP”) or NFS also can be used. However, by using the HTTP byte range protocols with the transfer method described above, the size of the downloaded byte chunks can be throttled by the downloader 7. This allows the user to have uninterrupted use of the network during the update process. Also, if the connection 10 is interrupted, HTTP allows the downloader 7 to resume the transfer from where it left off, rather than having to restart the transfer from the beginning.
 Advantages of these techniques may include the ability for updates to be made over the course of several user network sessions so as not to impinge on the network connection 10 bandwidth available to the user. In addition, the automation of the distribution can greatly reduce the amount of user participation required for the updating process. All of these factors could create a higher probability of success in updating information on network devices.
 Various features of the system can be implemented in hardware, software, or a combination of hardware and software. For example, some aspects of the system can be implemented in computer programs executing on programmable computers. Each program can be implemented in a high level procedural or object-oriented programming language to communicate with a computer system. Furthermore, each such computer program can be stored on a storage medium, such as read-only-memory (ROM) readable by a general or special purpose programmable computer, for configuring and operating the computer when the storage medium is read by the computer to perform the functions described above.
 Other implementations are within the scope of the following claims.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US6202207 *||Aug 19, 1998||Mar 13, 2001||International Business Machines Corporation||Method and a mechanism for synchronized updating of interoperating software|
|US6282709 *||Nov 12, 1997||Aug 28, 2001||Philips Electronics North America Corporation||Software update manager|
|US6327617 *||Apr 25, 2000||Dec 4, 2001||Microsoft Corporation||Method and system for identifying and obtaining computer software from a remote computer|
|US6745224 *||Dec 6, 1996||Jun 1, 2004||Microsoft Corporation||Object framework and services for periodically recurring operations|
|US6789255 *||Sep 26, 2000||Sep 7, 2004||Microsoft Corporation||Determining update availability via set intersection over a sub-optimal pathway|
|US20020046357 *||Dec 29, 2000||Apr 18, 2002||Jiandong Huang||Software-based fault tolerant networking using a single LAN|
|US20020100036 *||Sep 20, 2001||Jul 25, 2002||Patchlink.Com Corporation||Non-invasive automatic offsite patch fingerprinting and updating system and method|
|US20030195949 *||Apr 30, 2003||Oct 16, 2003||Microsoft Corporation||Methods and systems for obtaining computer software via a network|
|US20030200541 *||Jun 5, 2003||Oct 23, 2003||William Cheng||System, method, and computer program product for uninstalling computer software|
|US20040003266 *||Mar 20, 2003||Jan 1, 2004||Patchlink Corporation||Non-invasive automatic offsite patch fingerprinting and updating system and method|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US7159036 *||Dec 10, 2001||Jan 2, 2007||Mcafee, Inc.||Updating data from a source computer to groups of destination computers|
|US7281245 *||Jun 5, 2002||Oct 9, 2007||Microsoft Corporation||Mechanism for downloading software components from a remote source for use by a local software application|
|US7302681 *||Feb 27, 2003||Nov 27, 2007||Dell Products L.P.||Method and system for customized information handling system support updates|
|US7555749 *||Mar 10, 2003||Jun 30, 2009||Microsoft Corporation||Software updating system and method|
|US7584467||Sep 15, 2003||Sep 1, 2009||Microsoft Corporation||Software updating system and method|
|US7590981 *||Mar 29, 2005||Sep 15, 2009||Microsoft Corporation||Update package for offline synchronization of software updates|
|US7707024||May 23, 2002||Apr 27, 2010||Microsoft Corporation||Method, system, and apparatus for converting currency values based upon semantically labeled strings|
|US7707496||May 9, 2002||Apr 27, 2010||Microsoft Corporation||Method, system, and apparatus for converting dates between calendars and languages based upon semantically labeled strings|
|US7711550||Apr 29, 2003||May 4, 2010||Microsoft Corporation||Methods and system for recognizing names in a computer-generated document and for providing helpful actions associated with recognized names|
|US7712024||Jul 16, 2001||May 4, 2010||Microsoft Corporation||Application program interfaces for semantically labeling strings and providing actions based on semantically labeled strings|
|US7716163||Jul 17, 2001||May 11, 2010||Microsoft Corporation||Method and system for defining semantic categories and actions|
|US7716676||Jun 25, 2002||May 11, 2010||Microsoft Corporation||System and method for issuing a message to a program|
|US7739588||Jun 27, 2003||Jun 15, 2010||Microsoft Corporation||Leveraging markup language data for semantically labeling text strings and data and for providing actions based on semantically labeled text strings and data|
|US7742048||May 23, 2002||Jun 22, 2010||Microsoft Corporation||Method, system, and apparatus for converting numbers based upon semantically labeled strings|
|US7747573||Nov 18, 2004||Jun 29, 2010||International Business Machines Corporation||Updating elements in a data storage facility using a predefined state machine, with serial activation|
|US7770102||Jun 6, 2000||Aug 3, 2010||Microsoft Corporation||Method and system for semantically labeling strings and providing actions based on semantically labeled strings|
|US7778816||Apr 24, 2001||Aug 17, 2010||Microsoft Corporation||Method and system for applying input mode bias|
|US7783614||Feb 13, 2003||Aug 24, 2010||Microsoft Corporation||Linking elements of a document to corresponding fields, queries and/or procedures in a database|
|US7788590||Sep 26, 2005||Aug 31, 2010||Microsoft Corporation||Lightweight reference user interface|
|US7788602||Jul 16, 2001||Aug 31, 2010||Microsoft Corporation||Method and system for providing restricted actions for recognized semantic categories|
|US7827546||Dec 9, 2003||Nov 2, 2010||Microsoft Corporation||Mechanism for downloading software components from a remote source for use by a local software application|
|US7970798||Apr 9, 2010||Jun 28, 2011||International Business Machines Corporation||Updating elements in a data storage facility using a predefined state machine, with serial activation|
|US8600938||Mar 28, 2011||Dec 3, 2013||International Business Machines Corporation||Updating elements in a data storage facility using a predefined state machine, with serial activation|
|US20040162833 *||Feb 13, 2003||Aug 19, 2004||Microsoft Corporation||Linking elements of a document to corresponding fields, queries and/or procedures in a database|
|US20040181787 *||Mar 10, 2003||Sep 16, 2004||Microsoft Corporation||Software updating system and method|
|US20040187103 *||Sep 15, 2003||Sep 23, 2004||Wickham Robert T.||Software updating system and method|
|US20050177825 *||Feb 27, 2003||Aug 11, 2005||Chandar Kamalanathan||Method and system for customized information handling system support updates|
|U.S. Classification||709/232, 717/172|
|International Classification||H04L12/24, H04L29/08, H04L29/06|
|Cooperative Classification||H04L69/329, H04L67/34, H04L29/06, H04L41/0893|
|European Classification||H04L41/08F, H04L29/08N33, H04L29/06|
|May 24, 2001||AS||Assignment|
Owner name: INTEL CORPORATION, CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:COMPAS, JEFFREY C.;STOCKWELL, TRAVIS M.;REEL/FRAME:011881/0193;SIGNING DATES FROM 20010411 TO 20010419