CA2501499A1 - System and method for a software distribution service - Google Patents

System and method for a software distribution service Download PDF

Info

Publication number
CA2501499A1
CA2501499A1 CA002501499A CA2501499A CA2501499A1 CA 2501499 A1 CA2501499 A1 CA 2501499A1 CA 002501499 A CA002501499 A CA 002501499A CA 2501499 A CA2501499 A CA 2501499A CA 2501499 A1 CA2501499 A1 CA 2501499A1
Authority
CA
Canada
Prior art keywords
software update
update
server
computing device
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
CA002501499A
Other languages
French (fr)
Inventor
Jason Roberts
Mazhar Mohammed
Walter Wittel
Marc Shepard
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CA2501499A1 publication Critical patent/CA2501499A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Abstract

The invention is directed to a system and method for managing software updates. More specifically, the present invention is directed to a system and method for facilitating the selection and implementation of software updates while minimizing the bandwidth and processing resources required to select and implement the software updates. In accordance with an aspect of the present invention, a software update service controls access to software updates stored on servers. In accordance with another aspect, the software update service synchronizes with client machines to identify applicable updates.

Description

' .. ., SYSTEM AND METHOD FOR A SOFTWARE DISTRIBUTION SERVICE
FIND OF THE INVENTION
The pras~t invention relates to soft~weae and ~ networks and, in S particular, the px~t invention relates to a system and method for managing acct communicating softwam updates.

Most commercially available software products undergo a continual revision process to repair or upgrade fand/or functions. Each revision of a soRware product or component may raluine the addition of new files and/or the rcplacemart of acisdng files with files of newer versions. Once a vendor has isolated a software product problem acct created a sohrtion for the problem, it would want to put that fac into as update and make the update widely available to the customers. Soflvvare vendors have a business in~ive to distn'bute software upd~ to customers as quickty and trouble-free as possible.
The Internet provides an importaQt channel for customers to obtain the latest updates for software produces. The explosive growth of Internet usage has a common exp~on by customers that software prodwcts and updates be provided online for downloading. It is also in the iaterast of software vendors to promote the use of the Internet to distn'bute updates, because it ratuces their costs cad allows customers to obtain the fix for as idc~od problem as soon as ttu fix is made available for downloading. The vendor sifts on the Internet can be designed to melee it very simple to discover and locate update files for as applicaiioa. The technical aspects of file download have mostly dish from the use's view, anti arc now typically handled by the opting system.
In a conventional approach, a software vendor constructs a soflrovare update as a "package" for do~cvvnlaad... This package is typically a self-exfiracting executab,~e file with the setup program and each of the product's updated files anbedded and compressed to make tb~e package smaller. The size of the package is gmeFally the sum of the compressed sizes of each changed file, plus the size of the extraction code itself. Upon execution, the package extracts each of the contained ides to a temporary location, then starts the setup program to install each file to a proper location in the system's directory.
F'~les that are shipped in a compressed form are decompressod as they are iaaeoilcd. Any existing f~le of the same name in the same location would simply be overwrittea~ by the replaa~ent file.
Even though the makes wide and quick distn'bunon of software updates possible,13x limited bandwidth of network traasmissioa has caused problems.
The sheer sins of common softwam applications have caused tl~ download sins of updates to ba~me unraasoi~ably large. UsuaDy a multitude of 5xes for a variety of problems of a product will be grouped into an update. If a veraiar t~pdat~ a software product on a regular basis, the download size of the updaroe package will continue to grow, the vendor cannot omit files under the ssst~nption that the uses already has those files from earlier updatos. Because the update package combines a number of whole files, it may be quite largo, even when the files are cod. Sometimes, even on the fastest modi~n coons, the bandwidth e~cieacy of the download is de~ssed.
The time-consuming aspect of the comrentional downloading pt~ocess is, of course, undesirable. In some cases, customers pay long-distencx or colon time charges during these file downloads. Any reductions in c~an~ion time will reduce the direct monetary cost for these customers. The va~dors typically also have some distinguishable costs relating to flue sizes of downloads they provide, so reducing the sizes may give them direct monetary benefits as wall. Reducing the sizes of downloads will increase their available network t~adwidti~, allowing than to serve more customers with existing network server equipment.
The long tame it takes to download a large update also makes the downloading mare vulnerable to various network c~anection problems. There are a number of reasons why an Internet session might be disconnected pram~u~ely, inch>ding telephone line noise, call-waiting signals, and tmional coma~aads. Some Internet service providers enforce a con~ction time limit, limiting the amount of time the user can be on-line in a single session. If the user is downloading a large file when the network connection is cut o$ he or she may have to start over. Most common operating systems and file transfea pmtoools do not allow the file transfer to be resumed, so any interim progress would be lost, and the transfer would have to be x~ted. The oppomn~ies for failure are so n~s that many users fend it nearly impossible to obtain the update online. If the size of an update pacacage is too large, users may never be able to completely download it,
-2-One attempt bo reduce the size of software updates and increase bandwidth e~ciency relates to the use of delta , or binary patches. One skilled in the relevant art will ale that a delta patch ~sponds to specialized software code that modifies as existing file when exccutal by a computing device. Because the delta patch includes specisliud sot3ware code, a unique delta patch is required for each unique version of a file. As applied to soflwarc updates, a soltwate update servnce can tra~nnit a smaller sized update dolts patch instead of transmitting a complete, updated file. The updated dolts patch is then udilizcd to modify the existing file into the updated file.
Although the update delta patchr~s can potentially the amount of data requirod to update flea, cement approaches to cklta patching acre deficient in managing the selection of applicable delta fibs in situations where a Large number of versions of a file exist. Because a unique delta patch is required for each version of a file, typical software update systems can often requite hundreds, if not thousands, of unique delta to corn~pond to each ~miqun version of a file. In one approach, some update I S services supporting delta patching transmit all poss~'ble delta patches to a cliert computing device. Howavar, this approach typically increases the amount of data rcqirired to implement the saftwarc update as the ninmber of possible update delta patches incn~sc. Accordingly, the number of pot~ially applicable delta patches crate quickly grow to the same size as the complete updated file. In another approach, a nuctwozked update software service scans a client machine to select which delta patch may be applicable far each client machine. Although this roduc~ ttx amount of delta patch information that is transmitted, it roqt>iras ~lditional logic on the software update service to scan the client machine and select an applicable delta patch. T1u use of the additional logic increases the system rtso~a~cxs that must be provided by the service.
F~uthar, this approach typically pn~ the trfilization of network caching, such as is typically achieved by traditional Web savors.
In addition to the above described sbor't~omings, existing systems are unable to deliver certain types of software updates, such as hardwa:e drivers. As known in the art, specialized software updates, such as those that apply to hardware drivers, are difficult to provide to users on a large-scale distribution bearuse most specialized software update will only work on client computers with specific hazvdvvare. In most cps, for example, if a client computer obtains an incompah'ble hardware driver upgrade, the installation of the driver upgrade may cause a fatal error, or even prevent the computer from operating.
-3-~_~
As will Ix readily uaderatood from the foregoing, thane is a need for a system and method having improved asamunic~tion of software updates bdv~n a servo and a number of clients. In addition, there exists a need for a soflwvare update system and method having impzovai mxhaaisms for allowing update services to target specific types of clients when delivering specialized updates.
SUMMAZtY OF TIC INV»ITION
The present invention is directed to a system and nnethOd for managiag software updates. More specifically, the present invention is directed to a system and method for facilitating the selection awd implon of software while minimizing the IO bandwidth and processing resources reduirr~ to select and implement the software update, In aecordaaae with an aspect of the pt~ent invention, a software update service co~rols acs to software stored on servers. In accordance with another aspect, the software update service synchronizes with client machines to identify applicable Tn accordance with as aspect of the present invcation, a method of communic~ing between a client com~utnOg device process and a server process in a distributed processing system is provided. In accord$nce with the method a client pmxss issues a synchronization The synchronization request includes an identifier of an installed software update if the client computing device stns the installed software.
update. A server process recxives , the synchronization request and selexts sn additional software update if the synchm~on rat co~is~ as ideatifer of at least one software update. The seloctian of the additional softovare update is dcpendeat on the fulfillment of a preroquisite defnuxl in the additional software update. The prerequisite raquiz~es the sync~hro~ation request to include an identifier for at least one specific software update. The carver process selocts a first level soflwere update having a null valve as a prerequia~ts if it determines that the synchronization rest does not comp~rse an identifier of at least one soflvvare update. The server process issues an instruction component of the selected software update. The client process receives the instruction component of the selected software update and skores the instruction components of the selected software update in the client computing devicx as as installed software update if the client computipg device contains at least one component that fu?»ls a condition of an applicability rule stored in the selectod software update.
-4-Ia aoCOrdance with another aspect of the present invention, a mof commamicabag bavvem a client oampuaag device procxas and a sower pin a dish3bu#ed processing systan is provided In accordan~x with tlu method, a cheat pros issues an authoz~iaa Ttte authorizatioa request coatains an id~tificr S of a client atrthOrl~ion module associated with a target group. A servez pracess receives the authorisation request and issues a server cookie idontifynag the target group if the server.process dexects the pie of a leaver soaware module asked with the target group. The client process receives the sewer cookie identifying the target group and issues an update r~eqnest for at least one softarare t~pde~e, whceeia tt~e raqtr~t comtains the server cookie. The server process receives the update request and issues a software update if the soflwan update is associated wig the target groag identified. in the leaver cookie. The client pmac~ss reeuives the software update if the software update is as~o~d with the target gmug ids in the serve cookie.
Ia acoordanae with a (aspect of the presemt ioa, a system for commuaicati~ and maaegiag software updaxes is provided. The system includes a first database storing a plurality of updates. An individual sofhvart update shored in the database cea include as instruction data field cont~nining an applicability rule defining at Ieast ooue ion, iacludiag a mlll value. The instruction conopon~t co~aias a ~t of perquisites that identify ane ar more software updax~ that are requited for iastailation of the individual software updafie, includiag a null values The individual softvvane update stored in the database caa also include a tocalixod data field containing text data dessn'bing ge~rsl information rotated to the individual soflwa~ update.
Additionally, the individual software update stored in the database can include a data componcat that identifies ai least one date strram, file assoasted with the individual software update.
Tlx system can also include as authorization ae<vrx fns rizang mess to software updates stored in the f~u~st database. The authorization servtr issues a server cootie for allowing a clitnt computing device to aroe ttLO individual sofl~vart update if the client co~mput~g device coa~ins an authorization module indicating that the client computing device is assocdated with a target group. The saver cookie contains as identifier for the target group. Additionally, the server cookie is communicated to the client computing device for storage of the server cookie.
The system can fwr~r include a metadata leaver for p~rovidu~g updates to the client computing devicx. A software update is commuaicated to the client computing
-5-23~1PGT ~ ' deVi(x if the S0~9VatC Zipd~ 1S a39oc18led Wlth tlbC taT~C't $'r011~1, WbChCm tile met8d8ta server is communicatively coupled to said first database. The metsdata server can obtain a synclu~Onizatioa request. The syncon request includes sa identifier of an installed software update if the client computing dcvicx stores the installed software update. The synchronization request includes the nave cookie. The mete data server can also select an additional soRvvare update for communication to the client computing device if the synchronization request comprises an identifier of at Ieast one installed sofli~re update. Tine selection of the addnionat saRwarc update is dependent on the fnlfillmant of a prerequisite define in tire additional software update. The prerequisite raquines the synchronization raqurst to include an identifier for at keast one installed software update. The additional software update is associated with the target group identified in the server cookie. The metadata server also selects a first level software update for communication to the client computing device if the synchronization request does net comprise an identifier of at least one installed software update, The first kevel soRwan updates do not i~lude a prerequisite. The metadata server can communicate an instruction of the selected software update to the client computing device for storage and obtain a request far localized data associated with the selected software update. Still fmrtbGr, mserver cam communicate kocaliz~l data associated with the selected softvvart update to the chart computing device. The localized data allows the client computing device to generate a download roqu~t for receipt of a data component of the selected software update.
The system can fiuther include a download server communicatively coupled to the fast datsbe~se. The downkoad setva~ can obtain the download request from the client computing device. The download request idemttfies the data component of the selected software update. The download server can communicate the data component of the selected software update to the client computing device.
In accordance with anoxher aspect of the present invention, a system for dating data on a client computing device is provided. The system includes a first database storing a plurality of delta patches. The system also includes a server computer communicatively coupled to said fast database and to the client computing devicx. The serves can obtain a selection of one ar more available software updates for upc>ating one or more files installed on the client .computing device, a self-extr~ecting file identifying a plurality of available delta patches for updating at least one version of as installed file
-6-and an inve~ory of the one or more fills installed on the client computing device. The server can also select one or mom applicable delta patches to implement the selected software updates. The selection of the o~ or more applicable corresponds to a mapping of the self-~act~acting file identifying the plurality of available delta patches to the inventory of the o~ or more files installed on the client armpubng davix.
The server cea fiatber tra~nit a request for one or more selected delta patches.
In accordance with still a further aspect of the present invention, a system for communicating software updates to a client campuaung device is provided. The system includes a fast component storing a plurality of a server sutlmrization modules. The individual servo authorization modute ideumifies a target group. The system further includes a server computar commuaic~tively coupled to the first component. The server can obtain an authorization request from the client computing device. The authorization request contains as identifier of a client authorization module stored on the client computing device. The saver can further determine if the client computing devicx is associataJ with the target group if the client authorization module iadic~tes that the client computing device is associated with the targd group. The server can fiudur communicate a server cookie from the soflvsrare update service to the client computing devicx if the client computing device is associated with the target group. The server cookie identifies the targex group. The can also obtain a request for at least one soflwane update stared on the software update service, wherein the request contains the server cookie. In response to obtaining the request, the servex csa detcnoai";e if a softv~
update is associated with the target group idteabfiod in flu server cookie.
Additionally, if the software update is associated with the target group identified in the server cookie, the server can communicate the software update from the software update service to the client computing device.
In accordance with still another aspect of the present invention, a computer-readable medium having stored tlxmon a data stzvchn~e of as individual sod update is provided. The computea~readablc medium includes an instruction data field containing an applicability rule defining at least one condition, i~luding a null value. The instruction component cxazrains a set of praoqirisites that identify one or more software updates that are r~irai for installation of the individual software update, including a null value. The computer-readably medium can also include a localized data field containing text data describing general infonbation related to the individual softvvarc ..
tlpd~C. ~ COm~Cr-rt8d8b1E mCdliml: CSn f~f InCltidt 8 d8~a COln~01'EC~ $1aI
identifies at least one data s~sm file as,~ociaLed with flat individual soflvvare update.
BRIEF DESCRIPTION OF THE DRAWINGS
The foregoing aspects and many of the aunt advantages of this iaventiaa will bocome more readily appre~d as the same become better understood by reference to the following detailed de,RCription, when taken in conjunction with the accompanying drawings, wherein:
FIGURE 1 is a block diagram of a softwasre update system, including a client computer and an update service providing update softvvaxe in accordance with the present invention;
FIGURE 2 is a block diagram of the sod update sysEam of FIGURE 1 illushating the authentication of a client coaoputing device with the update service in accordance with the present ikon;
FIGURE 3 is a block diagram of flit software update sysGam of FIGURE 1 I S illustrating the synchronization of available betvvten a client computing device and the update service is acxordance with the present invention;
FIGURE 4 is a block diagram of the software update system of FIGURE 1 fllustrating the traasoaissioa of software update information to a client computing device from the update service is accordance with the prESent invention;
FIGURE 5 is a block diagram of the soRvvare update system of FIGURE 1 illustrating the procGSxing and selection of update infom~ation by a client computing device in accordance with the present invention;
FIGURE 6 is a block diagram of the software update system of FIGURE 1 illustrating the merging of delta patches and installation of updated files by a client co~ng device in accordance with the pry invt~ivn;
FIGURE 7 is a flow diagiam illustrative of a sofli~re update routine implemented by a client computing ,device and an update, service for identifying software updates available for installation on the client computing device, in accordance with the pct invention;
FIGURE 8 is a protocol dia~am of as authorization routine for providing selxtive access to updates stored on the update scxvice, in accordance with tlx present iavr~tion;
_g_ 232?iPGT
FIGURE 9 is a block diagram of an example set of software updates dlust~ing as authorization routine, is accordance with, the present invention;
FIGURE 10 is a protocol diagram of a synchronization routine for cxunmunicating a select group of softvva~re updatts from a soflwatx update service to a client computing device, in accordance with the present inveertion;
FIGURE 11 is s bloctc diagram iZhistrs2ing an exemplary section of a graphical user iaterfax for displaying a list of soflwam upda~ea that arc available to as individual cfieat computing device, is acco:dsace with the pry ir~vendoa;
FIGURES 12A and 12B are illustrative of a software update pmc~sing sub-routine 1200 imply by the client computing device 110 to retrieve and insdaIl requested software in accordance with the present inveantion; and FIGURE 13 is a Sow diagram illustrative of a sub-routine implemented by a client computing device for updarjng a baselinue installation component in arxoxdmnce with tlu prat invention.
DETAILED DESCRIPTION OF Tip PRF.~TRRED EMBODIMENT
Generally describal, the present invention is directed to a system anal method for managing soflmmre updates. More speafically, the present invention is d;rxted to a system and method for facilitating the selection sad implementation of sof3vvare updates while minimizuig fta; bandwidth and procxssing resources required to select and implemea~t the software updates. Ia ascardana with the present invention software rzpdata$ asn carrapond to updates for specific software applic;etians or operating systems.
Further, software updates can include software drivers or update to fiaaware, such as system BIOS. In aa;ordanc;e with as aspect of the present inve~ion, a system and component architfor processing the software updates is provided. In accordance with another aspect of the presoat invention, ~ update protocol and interface to facilitate the autbarizatian and syachronizarion of client ma~chiaes with an update service is provided. Ta accordaacx .with a further aspect of the present invention, a method for updating an installation component sad various installed files utilizing delta patches is provided. One skilled in the relevant art will appreciate, however, that additional aspects of the present invention may aLao be provided in the present application.
Further, one skilled in the relevant art will apprxiste that each identified aspect may be considered individually or as part of common invective aspect.

a ~27iFCf .
FIGURE 1 sod updates systca~ 100 is a block diagram illustrative of software update system 100 in accordance with the present invention. Generally described, the software update system 100 may comprise one or more client computing devices I
10, an update service 120 sad as extanal updats pcavider 130. C,enaally descn'bed, the update service 120 stores and manages the distribution of software updates that are communicated to and installed on the client computing devise 110. The software updates may be provided by the update servicx 120 ar by any number of extain$1 update providers 130.
The client computing device 110, the update services 120, sad the external update provider 130 el~tronically communicate via a network 101. The network may be a local area network .(LA1V) or a larger network, such as a wide area network (WAIF or the Internet. By the use of generally known soflvvare, the soflvme update system 100 may be configured to excdrange documents, commands, and other known types of information betuvecn the client computing device 110 and the sorvas 121, 122, 123 and 124 of the update service 120. As will be appreciated by those skilled is the art and others, the softw~ update system 100 shawa in FIGURE 1 is a simplified example of one suitable system for implem~ting the press invention and that the print invention is not limited to this ex~nple.
As will be descn'bed in mars detail below, one embodiment tire update service 120 comprises a number of servers. As shown in FIGURE 1, the update servicx 120 includes an update server 121 for managing the overall prop of the update service 120 arid coordinating processes of the servers 121,122, 123 and 124 of the update cervix 120. The authorization server 122 generates authorization cookies as rued by flue client and, in turn, the authorization cookies are used to generate server cookies, that allow client co~utera to access updates provided by the update services 120. The metadaia server 123 provides gsneral infonuration regarding the updates provided by the update service 120. The metadata saver 123 allows the system of the present inve~on to identify specific updates for a specific type of client computer or a spxific group of client computers. The download server 124 provides one err more software compane~s for delivering data files associated with soRw~re updates provided by the update service 120.
The exteraaF update provider 130 may inchuie one or more servers that distn'bute software update. The external update provider 130 may be associated with an entity that ....
provides softv~re, software updates, or other data that ie to be distributed to groups of chart comp~rt~rs. For example, the external update provider 130 may be associated with a third party software developer desiring to use the update service 120 to distribute updates far one ar more software applicabioas. In another example, the ~ttemal update provider 130 may be associated with soflararx update system 120.
The client crnoaputing device 110 may be any aomputing device that stores and executes soflvvare applications 114. The client computing devicx 110 may be formed from eny one of a number of different computer prod~ts including, but not limited to, personal computers (PCs), personal digital assistants (PDAs), mobile telephones, two-way pagers, etc. As will be appreciated by those of ordinary skill in the art or others, the architectta~e of the client ~ device 110 may take on eny suitable foxm. For example, the client computing devix 110 may include a network interface for providing commuaic~tion with the netvrark 101. The network iuttrfruce may be configured for use with any wired or wireless nctvvork connection, and may be used with any suitable communication protocol, such as the TCP/ll' protocrol. In addition, the client computing device 110 may include a prong unit, a display, and a memory unit. The memory unit may store the program code nary for operating the client computing device 110, such as an operating system 116. In addition, the memory wait stores an update manage component 112 far a~rolling and cx~ting proof the present invention.
The software update sysuem I00 stores software programs that, when executed, implement the prat izrvention. When executed, the software update system 100 stores, manages, and selectively communicates software update. As descn'bed more fully below, among many other banefita, the present invention provides a mfor defining. and selecting target groups of client computing devices that are eligible to receive software . The presrat invention also provides as improved mechanism for downloading data files associated with sod updates.
For purposes of illustrating the present invention, a detailed description of a working cxannple of the prestot invention is provided. In describing the working example, reference is mad to software updates that may refer to a specific upgrade of a software appliartion, e.g., sa upgrade of a media player version 6.0 to media player version 7Ø As will be appmCiated by those of ordinary skill in the art, such a software update may include the commuuiartion and ion of a number of data files -il-..., assoeiabed with tbc so~.vuare update. Thos, f~ of illustrating the present invention, a distinction is made betv~xn a software update a~ as individual data file containing a software update.
With reference now to FIGURES 2-6, as illustradive interaction betvveen the campoa~s of the software update system 100 to update one or more files oa the client computing device 110 will be descn'bed, With referee to FIGURE 2, the soflvvare update service is initiated by the tlaasmission of software update information by one or more external updatt providers 130. As descn'bed above, the external update providers 130 may be associated with software update system 100.
Alternatively, the software update information may Ix fitted by third-party external update providers 130. In an illustrative erabodim~,t of the present invecaron; the software update infcnrnostion can include software code utilized to update a file, software code utilized to replace a file, various rules for detorminin~g the applicability of the soflvrate and/or display information describing the aoflware update. The transmission of the software update information may be c~nopletad at any time and does not have to be eon~temporaneous with the initiation of the other illustr'a~d software update component interactions.
Upon receipt of the sot3ware update information firm the exienoal update provider 130, the update service 120 genaratas one err mare pierces of data to facilitate the transmission of update information. Tlx data can include a patch storage file tbat con~ponds to set of softvvan delta patches for updating different versions of a file. The data can also include a patch storage m~mifest that oonesponds to as index mapping particular filb versions to a eorrespanding delta found in the patch storage file. The data cxai furtlur include a self-extracting file that conrsponds to information the update agen#
will utilize to request and install specific soi~v~e update data, as will be described in greater detail below. One skilled in the rclevani art will appreciate that the generation of the patch storage file, hatch storage , manifest, and the self-aicrracting fibs may be , c~mplttod at any time and does not have to be contsxaporaneously with the other ~lustrafied component interactions.
To initiate the transmission of so8ware update information to clients, a client computing device 110 initiates an authenfication request to the update servicx 120. Ia an illustratlvt embodiment of the present invention, the authentication request avnasponds to en update protocol iatm~action be2w~a the client com~ag device 110 and the update ?3278PGT
sexviae 120, which will be dea~bod in grartac detail below. Upon eampletion of the auduatication, the update service 120 >seasmits an authentication cookie to the client computing device 120. With rrferarce now to FIGURE 3, the autharticated client computing device I20 than the synchronization of the available updates with the update server 120. In an illustrative embodiment of the prey inve~ion, the synchronisation rexiuest also corresponds to the update protacot interaction bctv~n the client coa~pudng device 110 and the update service I20, which will be descn'bed in greater detail below. Upon the completion of the synchronization, the client computing device 110 receives the information of all applicable software and infarnoarion describing t~ updatts. However, in ea illustrative embodiment of the present invention, no software code to instantiata the update has been dowaioadod.
With continued reference to FIGURE 3, at sometime during the update process, a selxtion of the updates to be installed is rxeived. In an illustrative embodiment of the praxnt invention, a user may be prated with software update information xareived IS during synchronization and asked to select an appropriate update.
Altansiively, the client computing device I I0 may be configured in a manner to automatically select all applicable updates. Further, the client computing devicx 110 may also have soma rules that allow it to automatically select a subset of the available soflvva~rc updates.
Still further, a user may initiate a selection of an update by communicating with the update service 120, such as via an intaxnet Web page.
With reference now to FIGURE 4, the update management component I 12 instaatiates an update agent 118 on the client computing device I I0, if an update agent is not a>ready presart The update agent 118 than requests the transmission of a software update information package, such as self-ea~racting file. The update agent 118 receives the self-exacting file a~ performs any updates to the installer, as will be described below. Furth~x, the update agent 118 can request any missing or comrp~d information from the update servicx 120.
With r~cfcrence now to FIGURE 5, once the update agent I 18 r~eeeives the software update information package, the update agent 118 performs an invartory of the files that are installexl on the chart computing device 110. Based on a comparison of the inventory and the software update information package, the update agent 118 determines which de.tta patch, or other update in~ormatian, will be rexluuxd to complete the selextad updates. The update agent 118 then transmits a request for specific delta updates. In one C~ibOdim~t Of the pICSCnt IilVCatiOn, the TCQI~St for SO~V8rC 2lpdatC6 may COn'QSpOnd t0 a duct request tram~miited Via a direct netvwrk connection, which will be referral to as a m8nU81 lrpdatC. In BnOthCr embOdlmeDt Of the plC9Cnt InVC~iOn, the rC~ll~St fof 90~Wat'C
1may bC a baCkgt'Oltnd T~OqIICSt th8t i5 llBaSmittCd wlthOttt lCI~111T1~ig oVCrt IlSCI
aCtloll. ~liS. CmbOdlmCat wlll bC rCfGIl'Gd to aS an 811tOmatlC llpd8'tC.
In 8n 111VC dnbOdimCat Of the pIC$Cnt InVC~IOn, If the SOflw8rC updatC
can~sponds to 8 dClta patch, the update agent 118 transmits a request t0 the update sarvict 120 that identifies the ~icular delta patch identiflcd by tl~ patch storage manifest. Alternatively, in the event that a delta patch is unavailable or if several delta 10 patchc~ have failed, tire updatr agent 118 can initiate a fallback prods, The fatiback use cea incltule a request for the transmission of a complete copy of the ire updated file from tlic patch storage file. The fallback pro~c can aL~o include a request for the transmission of a complete copy of the entire updated file from in self-contained package.
15 In an illustrative embodiment of the present invention" the download server 124 of the update service 120 can dirnetly process the sofriware u~pdata rfrom the update agent 118. Alternatively, the reqrust can also be praeesaed by any number of additional eactecnal download savers such as tc~titional Web servers that have either received the requestfld update delta p$tchas from the update service 120. For example, a corporation 20 may utilize an internal servo to update client machines. Additionally, the request cam be proxssod by external download savers in which some, or all, of tlx update delta patches are cashed in proccasiag previous requests. Accordingly, in this embodiment, the download can be distn'buted to a nunnba~ of additional download servers capable of servicing hyper text transfer protocol ("lfI"TP") data requ~.
25 With reference to FIGURE 6, once the soRware update information is received, the update agent 118 merges the delta patch with tbc iastsIled file to generate an updated file. Additionally, the update agent 118 csa validate w>retha the merger successfully updated the appropriate file. As descn'bed above, if a delta patch cannot be validated, the update agent 118 may request the delta patch again or rcquast an entire updated file after 30 a number of failrucs. Dace the update agent 118 obtains the validated and update file, the file is installed on tile r,Iieat computing device 1 I0.
FFGURE 7 is a flow diagram of a software update processing routine ?00 illustrating the interaction between a client computing device 110 snd the softwaz~e update ~rvice 120 is accordance with the pcas~t inventions. At block 702, the software update service 120 autbarizes access to the client computer 110. In as illustrative embodiment of tlu paesent inve~ion, the aut~ation of access to the cheat com~rtar cs3n inchtde the gtner~on of a server-isswed cookie for allowing access to soilvvare that are asaoasted with a particular group of ~, A more d~iled of ~
authori~ion piss will be described with regard to FIGURE 8.
At block 704, the client 110 and fete soflwazz update sexvioe 120 synchronic update information. In an illustrative embodiment of the pnteat invention, tine soflvusre npdame service 120 transmits descn'bing specific software IO to the client aumputiag device 110. The metaldata contains in~armation descn'bing the available software to allow a user to solect one or more u~pda~s for installation.
A more detsilad daeription of the syncluoni~atioa process will be desadbed blow with regard to FIGURES 9 sad 10. At block 706, the client computing device 110 obtains a selearon of a~licable updates to download. In as ille Beat of the t invention, the selection of applicable updates can caxmspond to the ion of a number of unique user into uset selectiams. Tb~e selection of near ink will lx described in gresb~x detail with to FIGURE 11.
At block 708, the caonpuimg deviex 110 prop the user seloction of applicable soflvvaro updates and inters with the software update service 120 to request specific update infoanation. 1n ~ illustrative embodiment of the pinvention, the client computing device 110 selects and reque~ one or more applicable update delta pats. The update agent 118 on the client imputing device 110 can then process the requested data to implem~ the selected sotlware update. At block 710, the routine 700 With nfenmCC to FIGURE 8, a pxotoool diagrann 800 for authoriang access to client compuimg devices 110 and canrspondir~g to block 702 (FIGURE 7) will now be daacn'bed. In an Elusttative embodiment of the pre~at i~tia~n, the software update sexvix 120 utilizss an able targeting meclupnis~m to co~rol client compntiag device 110 axess to t~pdamas and other soRvv~ae. The svRarare update service incorporates a mthat associates specific software updates with one yr morn target geau~ of client computing devices 110. For example, the software update servicx 120 may limit acs of a specific hardware driver update to n particular bread of chart compnmng devices 110 having a specif c hardware device. In such an example, the software update aervicx I20 may define a target group of client computing devices 110 having a particular bread name and a specific hardware device and limit the transmission of the particular softwart download to the target gcnttp.
In an illustrative ~bodiment of the p~re~nt invemion, true extensible targeting mis facilitated by the use of software components ("authorization plug-ins") theot define a client computing dcviae's membership to one or more targrx groups. The presence of sa autiwrization plug-in on a client computing device I IO defines vvlu~her the client computing device belongs to the specific target group of the authorization plug-in. A target group, for example, may iacinde all computers having a valid product idertification ("PII?") number for a particular software application. In such as example, , as described in more detail lxlow with rest to FIGURE 8, an authorization plug-in 826 may be installed in the cli~t to read a P1D from a memory module of the client computing device and pass the obtained PID to a canrespondiag FB? server plug-in 829.
The corresponding P>;D plug in, also referred to herein as PID validator 829, utilizes one or more methods to determine if the received P1D is valid: Oncx it is determined that the P1D stored va the client computing device 110 is valid, the server generates a server cookie which indicates that the client computing device 110 is a member of a target group having a valid Pin. In another example, a target group may includo clieart computing devices that are designated as bets test computa~s.
In an illustrative embodiment of the prs~ot invention, the authorization server IZZ of the software update service I20 contains a number of server authorization plug-ins that define a set of target groups of client computing devices that the autlrorizatian server will xe~niu, Each server authorization plug-in ins componernts for communicating data with a corresponding client autimrization plug-in stored on a client computing device I I0. 1n a similar manner, each client computing device 110 ir~ludes ono or more client authorization plug-ins that identifies the target _ groups to which the client belongs In an illustrative.. anbodiment of the present ikon, the client authorization plug-ins can be installed in each client computing device during the insrtallation or upgrade of a software application, such as the installation yr upgrade of as operating system. Additionally, the server authorization plug-ins may be dynamically installed or reanoved by an administrator desiring to comroi the access to software updates. The authorization plug-ins storod on the client computing device 1 I0 i~2liPCf and the az~tho~tiOa sever 122 Can be as acta~al soflwan plug-in, Or the authorization plug ins can be hard coded into dynamically linkad libraries.
As shown in FIGURE 8, tla~ authorization server 122 contains three example server authorization plug-ins: (1) a first server authorization plug-in 828 defining a target group that includas all computers (haeiaefta~ the "All Computers target group"); (2} a second server autiwzi~ion plugin 829 defining a target group that inchuies computers having a valid P1D (hereinafter the "P1D target 8roup'~> and (3) a third server authorization plug-in 830 def ning a target group that inchules beta test computers (hereinafter the "beta ,target group'. Also shovva is FIGURE 8, the client comptrtia~g device I i 0 contains two client authorization plug-ins: (1} a first client authorization plug-in 825 indicating that the client comparing device I 10 is a member of the All Computers target group; and (2) a second client authorization plug-in 826 indicating that the client computing devicx 110 is a member of the P1D target group. In this example, the client computing device 110 does not contain as autborization plug-in indicating that it is a member of the beta target group. As will be appreciatod by those of oniinary skill in the art, each client soon plug-in 825 and 826 may be configm~d to execute one or more functions on the client computing device I 10 to assist the validation process. Fox instance, the sacond .client aeon plug-is 826 may be configured to examine the memory of the client computing device 110 to verify or obtain a P>D for an installed softvvare appliartion.
As shown is FIGURE 8, the authorization sub-routine 702 begins when the cheat computing device 110 conu~nic~Les a configuration request 803 to the autho3rizatioa server 122. In an illustrative embodiment of the present invention, the configuration request 803 is formed from any suitable software component configured to obtann information describing the authorization phig ins storal on the suthorizatioa server 122.
As will be appreciated by those skilled in the art, the configuration request 803 may utrhze 8 known method referred t0 as "GetConfig." In response t0 receiving the configuration request 803, the authorization server 122 communicates a configuration response 804, which includes iafannation identifying all of the authorization plug-ins stared on the auction server 122. In one embodiment, the configuration response 804 includes an axray of strings that idearifies and descn'bes all aathorizatioa ping-i~ stared on the authorization server 122. In the present example, the configuration response 804 includes information that identifies the first server authorization ..
plug-in 828, the second seawcr authorization plug-in 829, and the third saves autharixstion plug-in 830:
At block 805, the client computing device I 10 g~erat~ one or more authorization cookies in response to receiving the configuration response 804.
In the prods of block 805, tht client computing devicx 110 gan authorizebon cookie for each pair of mrsLc~iag client and server auton plug-ins. Thus, in the preset example, the first client autbozizntion plug-in 825 geoaata a first authorization coolie associated with the All Computers target group bcxausc the first chart authorization phrg-in 825 and the first server authorizzatton plug-in 828 are both associated with the All Computers target group~ In addition, tire second client authorizanion plug-in genaatcs a second authorization Gnokic sssociabed. vrith the PID target group because the second client aut>rorizatian plug-in 826 and tire second server authorization plug-in 829 era both associated with the PID target group. A third authorizatibn cookie is not gene~ed since the client computing devicx 110 does not have an authorization plug-is indicating that it is a member of tlm bola target group.
As will also be appreciated by those skilled in the art, one implementation of the pmces$ of block 805 may include the use of a gareraliy known software method reftrnd to is the art as "GetAuthCookie." It will also be appreciated that the generation of each aeithorizanon coolie may involve additional processing. For instance, the second client authorization plug in 826 may be coa~f gm~ad to exa~niae infornnation stared in the chart's system registry to retrieve a P1D and include the PiD in tho authorization cookie. In other examples, the proxss of block 805 may include for communicating with other computers or devices. Far 'rostance, a client arrthorization plug in may communicate with a device, such as a sound card, scanner, video card, etc., to obtain the make and model of the device. In other non limiting examples, a client authorization plug in may communicate with a secumity device, such as a fingerprint reader, to obtain information describing a user.
In general, a cheat autlwrization plugin may read configuration ion from any anent of the client computing device 110 or any otla'r computing device communiartively comnx~d to the client compuEing device 110. In other examples, a chart authorization plug-in may be cod to utilize one or more public or private application programming int~fsc~s (APIs) to gatl~ and encxypt information from the client that will be validated by the aarnspoadiag server plug in. 1a such examples, PID

a 1327iPCf' validatar plug is $26 uses a private API to eoaypt the client's PID to peas the m P1D m the servo far dccxyption end validation. 1a other embodiments, othta client authorization plug-ins may utiliaa biometric moasurcments, such as fingerprint readers or voice prints, to consbnux as authoookic to be passed to tbc far validation.
S Ia yet another example, a ciiatt aeon plug-in may call a Web service or any other service to communicate autl~rization c~tials or any other type of data to the suth~oeization servo 122.
In an ilh~strative embodiment of t6~e prea~t ikon, each authorization cookie includes a string that ider~tifiea an associataa target gtmtp. For atample, a string may indicate that a particulaur iron cookie is associated with the PID target group.
Each autta'rizatioa cookie also includes a dais section for communicating data bcriveen a client and a server. For example, sa authorization cookie associated with the PID target group may have a data section that contain ea acd~al P1D. As will by ~ by those of ordinary skill in the art, the data suction a~n contain any type of data that is stored in any format, such as a byte array. For example, if plug-ins on the client and the server require the oommimication of public and keys, sucdi data cam be in the data section of one or more authorizstioa cookies.
Once tba elieat computing devicx 110 gan authorization cookie for each pair of ~aponding client and server authanizabon plugans, the ctimt eomputmg devise communicates the generated aeon cookies to the authorization server 122.
As shown in FIQrURE 8, the client rung device 110 comma the authorization cookies in a cookie regnant 806. The cookie request 806 includes any suitable fomaat for a~mmunicating an array of the aeon cookies gin the procxss of block 805. One implema~ion of this part of the suthoriz~iwn method 702 may include the use of a generally lmown soRwaxre method refen~d to in the art as "GetCookie."
In one embodiment, the cookie request 806 also includes other authorization saver oooldes stored in the memory of the client compiroting device 110. As will become more readily undersLavd fmm the following desaiption, the memory of the client computing device I10 may story old autbarization server cookies that were ard~tod in previous cxecurions of the authorization routine 700. By providing the stored authox~on server cookies in the cookie request 80G, the client computing device 110 will be able to maintain its access privileges that were granted in the previous executlvns of the authorization sub-routine 702. In tl~ print example, since thane era no av#hori~tiOn server cookica stored is the cliemt, the COOkiC 806 incltrd~es tine first 81~1~t10~ COOkle aSIOCwith the ~ talgCt grOtip ~ the SCCOnd airtltorization cookie aasociabed with the Pm target group.
Next, as shown in block 807, in zespoase to raxiving the cookie request 806, the aut>mtization server I2Z ga server cookie. In one embodiment, for each of the recaved suthat~i~ caolaes, a call is made to an ~e server authorization plug in to generate aava oootcie data, The serve ~e data gby each server authorization plug-is includes an identifier for each target group identified in the received aut~wrizetion cookies. In the present ex$mplo, since the cookie reqveat 806 includes the x 0 first autham cvolae associated with the All C,onnpufias target group and the so~ad authorizaxion cookie associated with the P1D target group, the autboz~on server 122 gds server cookie data containing an identifier for these respective target groups.
On the aartb~arization server 122, tip server cookie data is than combined with data of old cookies, if an old server cookie is received in the cookie z806, to ga new server cookie. In one embodiment, the new server cookie is encrypted by the use of a publicalty available encryption method, such as Triple DES.
In an illustrative embodiment of the peasant invention, the server cAOkie can include ~xypted ion that ione ar mama atargd gron~. In addition, the server cookie can include expiration data, which is stoxed in both a clear text format and an fonaat. The eon data stored in the clear text format is used by the client oomputrng device I I O for maait~ring frn the cxpir~ioa of the server cookie. The expi~ion data stared is ~e encrypted format is used by soavuare update servicx 120 to determine if the client computing device 110 is authorized to receive updatrs associated with a particular target gmup. In one embodiment, the expiration data of the saver cookie applies to all target groups in the server cookie.
Aheananvely, or in a~iriOn to the acpii~on tip that applies to t~ ~er~ server cookie, the server cookie may include a plurality of expiration data, each of which may apply to individual target groups. As~.will be appreciated by those of ordinary skill in the art, each server cookie can iaclmte additional data. For iasranx, a server cockle may be configured to store client state ion, such as a time stamp of the last execution of the authorization sub~~outine 702.
Once g, the anthoriz~on server cookie 809 is con~unicated from the aeon server 122 to the cliark cam~ag device 110. Next, as shown in 23278M.?
block 811, the server cookie is then stored in the memory of the chant computing device 110. OVhen the client computing devicx 110 detetmanes that at least one component of the server cookie bas acpirad, the client computing device can re-eacscuta the authosi~tion method 702 to obtain a new s~ cookie. As mentioned above, in S each ~t execution of the authorization method 702, the client computing devicx 110 may oommurucato its stored server cookies to the authorization server 122 in the cookie rcquc~t 806. In one embodiment, the clie~tt does not have to send the request 803 unless the server informs the client that the server configuration has changed, i.e., a new authorization plug-in bas been addod.
In accordance with snothar aspect of the presant invartian, the soRvvaxe update service 120 may pmvide a syncbzonization sub-roudine for synchronizing update information bdv~en the meradata scrvtr 123 sad the client computing device 110. By the use of a unique soflvvare update hierarchy, the synchronization sub-routine can e~cier~tIy identify specific updates that apply to a particular ciie~
computing devicx. 1n addition, by the use of the server cookie genen~ in the authorization sub-routine 702, the synchronization sub-routine can selectively grant access to updates associated with o ~~ 8~~~
In accordance with an illustrative embodi~mtnt of the present invention, each soifiware update includes three components: {l.) an insdruction campone~ (2) a localized, daxa compon~ and (3) a data component. As will be appreciated by ono of ordinary skill in the ant, each update may have ono ar mare of the abovc~descn'lxd components.
For rac$mpte, an update rnay contain an instruction component, a localized data component, and a data stmam component. la saofiher example, an update may only contain an instruction compon~ for testing one or more conditions of a client computing device. The various components of the software updates are descn'bed in mare detail below.
Generally descn'bed, the instruction component contains two sub-components:
(1) an applicability rule that defines one ar more conditions to be tested by a client computing device 1l~ and (Z) a set of prerequisites that identifies one or more updates that art required for proper installation of an individual update. As described below, the applicability rule can define a number of conditions a computer, and each of the conditions can be associated with other conditions by the use of any logical operators.
For example, the instruction component may include as applicability rule to detcrnnine if 23271YCf a computer has a particular version of Wmdowsm installed. As also described below, the sat of prerequisites can idartify one or more updates that arc required to have been previously installed. For example, as desaibod in more detail below with ~ to FIGURE 9, as individual update may contain a prerequisite that lists other updates rfor the proper installation of the individual updats. In other examples, ss is also shown in FIGURE 9, the set of prerequisites can include the use of logical operators to d~fmc more complex pra~quisites ivlas.
The instrucflon component also gains code, such as a Boolean flag, that indicates if there are othesr updexes that depend from a particular update.
For illustrative l0 purposes, an update is considered to be a LEAF update if ~ are no other updates that depend from a partiailar update. The Boolean flag that is need to indicate if an update is a LEAF is dynamically updated by the metedata server 123 as relatexi updates are addexl or rrmovexl.
The loeatized data component of each update includes general information describing the updax. For instancx, the localized data componeazt may i~lude information deaan'bing the fend benefits of tin updats. The 1~ data compone=nt may also include a tenet description of the instaIIatJion procxdures of the u~te. In addition, the localized data componcrit may include say other data or information re=lated to the update. Far instance:, the; localized data may indicate that an update is a high priority update. Ia another example, the localized data may lurovide special ion messages, such as a mt~sage that indicates that an update cannot be installed with other software upd~s. The localized infoanation may be in a format that allows for the display of its contained informatiion to a user.
The data component of cacti, update includes one or more binary data streams of the . In ane eanbodi~nt, the dare component of each update may be associated with o~ or more data files, such as an wcecutabk file, a document, a linked li'bra~y, e~tc.
As dacabed is move de=tail below, each update may be associaGad with a combination of data files, each of whieb facilitates the aduat upgrade, installation, or modification of software used by the clieztt. For instance, the ion of sa update may lx facilitated by tlx use of a single CAB file including all tin information r~ire~ to complete a selexted update. Alternatively, the installation of the update may be facilitated by use of a number of individual used to update one or more files stored oa a client computizeg device.

In as Olustrativr e~nbodimeat of the pre~t invention, soflwarc updates c~a be azraaged in a hierarchy that allows for controlled distribution of the soflvvare updates.
G~erally dasaibed, the hierarchy of updates defines relationships bavveen the updates and specifically indicates which ~ are d4pcn~ant oa other updates. For illustrative purposes, an example set of updates is provided and shown in FIGURE 9. As shown, a hi~rchy of sample updates 900 includes a base set of updates 901, a second set of updates 902, and a third set of updates 903. Ia general, each update in the base set of updates 901 does not have a praeroquisito that requiz~ the installation of other updates.
However, the sixth updates 921 contains a prerequisite that reqiaras the installation of the first update 911, the second update 912, and the third update 913. The seventh .
update 922 contains a prerequisite that requires the instalta~ion of the fourth update 914.
The eighth update 93I contains a ~ that requires the installation of the sixth update 921 and the fifth update 915. Hence, the eighth update 931 also requires the installation of the first update 911, the second update 912, and the third update 913. For purposes of illustrating the pze$ent invention, it is ;given that all of the updates of the sample set of u~pdatcs 900 are all associated with the All Computers target group and the PID target group.
Also shown in FIGURE 9, end as described is more deta~ below, each update caatains an applicability rule that spxifios conditions for the installation of the update.
For example, the first update 911 requires the installation of an English version of an oper~ng system. The second updates 912 rthe installation of Windowsm XP
version SP1. In another example, the sixth updaxe 921 the insrgllation of a sof3wmz patch rcfe~d to as the XP PATCH1. Accordingly, the client computing devix 110 will not install the updatGS if tlae applicability rules lava not been satisfied.
FIGURE 9 also shows the section of the fan compon~t that indicates if there are other updates that depend fmnn a particular update. This section is referred to as a LEAF, which may lre in the form of a Boolean value.iadicating that a software update is the last update of a series of related updatGS. For purposes of illustc~ing the invention, a particular update is a LEAF update if no other updates list that particular update as a prerequisite. As shown in FIGURE 9, the update 922 and the eighth update 931 are the only two LEAF updates.
FIGURE 10 ilIush~s a protocol diagram of a synchronization sub-mutiny 704 (FIGURE ~ formed in accordance with the pnes~t invention. Generally described, the _2,3_ synchronization sub-route 704 selectively communicates the instruction components of certain between the cfiert oomputiag device 110 and a servo, such as the metadata server 123, to idartify upda>n$ that can be applied to tile client computing device 110. As shown in FIGURE 10, to initiate an update, the client computing device l I0 fast pray installed updates and communicates a synchronization request 1051 to the metadata sa vet 123 requesting onn or more updates available to the client. Tn response to nxeiving the synchronization request 1051, the metadata server 123 retinas a numbex of updst~ to the client computing device 110. As will be more readily understood from the following description, the client computing device 110 processes locally-stored data ~ for to the communication of the synchronization request 1051.
The client computing device I10 pzoc~es the ins6n~ction components of each received update to determine if the condition defined in the applicab0ity rules can be met.
If the condition defined in an individual update is met, for purposes of illustrating the synchronization sub-routino 1050, flee individual update is "installed," and the installed update is saved in a E~rst component of the client's update cache. On the other hand, if the condition defined in an individual update is not mot, individual update is considered to be "failod," and the failed update is saved in a seornnd compone~ of the client's update cache. In this de~ription of the synchroniz&tiaa sub-routine 1050, if an update is installed it can lx that the prerequisites and tl~ c~aditions of the applicability rules have been met Installation of an update for purposes of describing this sub-matins does not necessarily mean that the data files associated with the update arc actually installed in the client compatxng device 110.
In one embodiment; the two eomponents of the chart's update cache can be used to categoric flu receivod c~da~.a. The first component is used for storing installed, non-LEAF upd; and a second component is used for storing all other updates received by the client, i.e., the uthat were not installed. The second component of the update cache also includes the storage of all LEAF updates. As des~'bed in more detail below, updates stored in the update cache can be communicated to and proved by the metads~ server 123 to identify other related upda#es that are available for ion on the client compuxing device 110.
Returning now to FIGURE 10, details of the synchronization request, which are illustrated es items 1051,1055, and 1060, will now lx described. As will be appre~ded 2327~GT
by those of ordinary skill in the art, the synchronization request may be initiated by one of a number of different devices, processes, applications, user-init;etod commands, reqtuatiag as update. The syachrnnization request may be initiated by a user mquesting a list of updates, an automatic update initiated by the client agent, or any other software component requesting information from the ~ server 123 ar the update service 120. In one embodiment, the synchronization request inclu~s an authorization server cookie, such as the auflmtization cookie generated from the authorization routine 702. The use of the server c~olde allows the server to de~te~mina if the client is a member of one or more target groups.
Each synchronization request may also inclu~ id~fiers for each update stored is the client's update cache. More specifically, if one or more updates are seared in the update cache, the synchronizanioa req~ust includes a first component having identifiers for installed, non-LEAF updates; and s second compo~at having identifiers for all other u~pda~, such as LEAF updates, failed updates, and other updates that are not installed.
The update identifiers may be in nay format including, but not limited to, an array of integers. Altemarivcly, if there are no stoned in the client's updates cache, the synchronization request is not configured with an update id~ifier. When a syncbroaization request is nest oonfigiuod with an updates identifier, the synchronization request provides as indic~tioa that the clicrn computing device 110 does not have any cached updates.
As shown in FIf~URE 10, a first synchronization request 1051 is communicated from the client computing device 110 to the metadata saver I23. In the present exempla, the client's update cache will not contain any updates, given that this is the first cxacudon of the method Thus, the first syachroni~ioa request 1051 does not contain an idernifier 2S for a cached update. 1n response to receiving a synchronization request, as shown in block 1052, the mctadata server 123 dcteimines if the synchconizalion request contains at least one update identifier. If it is determined that the synchronization request does not include an update identifier, the matadata server 123 responds by selecting first level updates for communication to the client computing device 110. As described above, first level updates may include any updates that do zmt have a prerequisite identifying other Atte~natively, if it is determined that a synchronizafion request contains at least one update identifier, the metadata x123 examines the pn,~tquisites of the server's StOrCd updat'IC.S t0 &CICCt 8dd1t10~ ltpdateS faT dCllVeIy t0 the Client. In One embOdimCnt, the metsdeta server I23 selects updates having fulfilled prerequisites. In the examination of the prerequisites, the server uses the updaroas of the first component of the synchmaization reqwest, which includes identif era of the ran-LEAF updates that are installed on the client.
In addition to selecting updates having fulfilled perquisites, the server also uses the updates identified in the second component of the synchronization request to filter the selected upde~tes. Mvre specifically, uainst~led updates, LEAF updates and failed identified in the second component of the synchronization request are used to filter one or more selected updates. This feature of the present invention allows the system and method of the present invetttiion. to avoid multiple transmissions of updates stored on flit metadata server 123.
Retauning to the pre~t example, since the fast syncbmnization request 1051 does not include an update identifier, the metadata servex 123 selects the base level of updates 901 for communication to the client computing device 1 I 0. With reference to the sample set of uepdafes shown in FICitJItE 9, the base level of updates 901 includes the updates refs as 911, 912, 913, 914, and 915.
In the processing of block 1052, the meradata servat 123 also examines the autharizatian server cookie contained is the synon xeque~t 1051 to identify the ZO target groups that are assowith the chart computing device I 10. The metadata server 123 also examines the target groups of the updates selected in the praass of block 1052. The process of block 1052 then .filters vat all selected updates that are not associated with a target group identified in tl~ received authorization server cookie. In the presort example, since all of tl~ sela~ed updates 911, 912, 913, 914, and 915 are associated with the P~7 and Alt Computer target groips, all of the selected, updates are sent to the client camputtng device 110.
The metadata server 123 . then communicates the selected updates in a synchronization response 1453 to the client computing device 110. In general, each sy»chmnization response includes the instruction canaponent of each update sent by the server 120. Thus, in the present example, the first synchronization response includes the a~cdon componextts for the updates referenced as 911, 912, 913, 9I4, and 915. In one embodiment, each synchronization response does not includt the localized data componart err the data component of each update.

Nmct, as shown in block 1054, the client computing device I 10 process the instruction components of each received update to determine if the condition defined in the applicability rubs can be met. With again to FIGURE 9, the client computing device l I0 processes the inst<vdion components of the roceived updates 911-915. For pcnpoacs of illnshradng the present iavex~tion, it is given is this example that the operating system of the client computing device 1 i0 is au English installation of Windowsm version XP SP 1. It is also given that the client computing device 110 is a Dell PC and is running a 32-bit, X86 proxssor. Thus, in the processing of the instruction components of the sample set of update, the client computing device 110 would detezmine that the cxlndztian dn&nod in the first update 91 I
would be neat bcce the canzputcr c~ias an Epglish.OS. The condition defined in the second update 912 would be met bocause the opa~ing system is Windowsm version XP
SI'i.
The condition defined is the third update 913 would be met because the client computing device 110 is rvaning an X86 processor. Tlbe condition defined is the fifth update 9I5 would be met because the client computing device 110 is a Dell PC. As a result, the fast update 911, second update 912, third t~pdaie 913, and fifth update 915 are all save in the fast component of the client's update cache. The condition defintd is the fourth update 914 would sot be met ba~use the client computing device 110 is not nmning a 64-bit X86 processor. Thus, the fourth update 914 is considered to be a failed update and saved in the second component of the client's update c~c~he, Returning to FIGURE 10, in the processing of block 1054, the client computing davicx 110 also determines if a subs~oquaat synchronization request is required. Ice one embodiment, it is de~min~~d that a subsequent syachmnizatton request is required if at least one of the received t~pdat~ indicates that it is not a LEAF update. In the present example it is determined that a ~ syncbannization request is r~irad bc~ause all of the received updates are not LEAF updatGS. Thus, the client computing device 110 communicate a subsequent synchronization reQ~ 1055 to the metadata server 123.
As summari. ed above, a synchronization request includes id~tificrs for each update stored in the client's update cache. Thus, in the pre~nt example, the subsequent synchmni~ion raluest 855 includes a fast data camponcat iadicatrng that the first update 7I 1, second update 712, third update 713, a~ad fifth update 7I5 are installed on the cliem. In addition, the subs s3mcluanizatioa request 855 i~ludes a second dais compo~ut indicating that the fourth update 711 is not successfully installed on the clienx.

Zi27tPG'1' In response to receiving the subs synchronization r~u~t 1055, as summarized above, the metadata server 123 determines if tha Subsequent synChroni~i0a request 1055 contains at least o~ update identifies. If it is debetmined that subsequent syachranization request contains at least one update identifier, the raetadsta server 123 examines the prenequisi#es of ell stored updates to select additional updates for delivery to the client With refc,Kence again to the present example, in the priag of block 856, the I
m~ta server 123 would select the sixth update 921 because its prerequisites arc met.
More specifically, as shown in FIGURE 9, the sixth update 92I is selected far commuaicatian to flaw cliemt computing devicx 110 ba~use its pnnahusite, which requires installation of tip first update 7I 1, second update 9I2, and third update 913, is fulfilled. The seventh update 922 and eighth update 931 would not be selecxed for vommuaicatioa to the client bzeausc their praoquisites are not fulfilled. More specifically, the synchma~tioa request 1055 did not contain as identifier for the frnath update 914, which is a prerequisite for the seventh update 922. In addition, the synchm~nization request 855 did not contain an identifier for the sixth update 92I, which is a prerequisite for the eighth update 931.
Rcha~nin~g to FIGURE 10, the synchtvnizetion sub-znutine 1050 continues by commuaic~lin$ the selected updates is a Subsequent response 1057 from the metadata saver 123 to the client Wing device 110. With reference again to the paes~t eiuunple, the subsequent response 1057 would include information related to the sixth update 72I, is c~ommto the alieflt 110 in a subsequent response 1057.
Upon receiving the Subsequent response 1057, the client computing davice 110 proves the instruction components of the subs~rt 857. Similar to the pmc~s of block 854, the client coming device 110 ~ the instruction componeat9 of each received update to determine if the condition define in the applicability rules is met. In the pz'es~t example, if it is given that the XP
PATCHl is installed in the client cxnmputjng device, the sixth update 92 i is considered to be installed sad the update is written to the update cache of tl~ client computing device 110. Since the sixth update 921 is not a LEAF update, the client computing device 110 sends another synchronization roqtnest 1060 that includes all of the updates stared in the first and second component of the client's update cache. The synchronization request 1060 also includes the authorization server caolde.
~28~

la the print example, by use of the above-descn'bed processing of the metadata server 123, the syachroaizahan request 1060 is pat block 1061 where the server selects the eighth 731 update. The eighth 93I update is selected because the synchronizatiaa request 1060 indicates that the fifth and the sixth updates 915 arxl 921 are installed in the client computing device 110. Given that the eighth update 931 is associated with the same groups identif ed in the authorization server cookie, the instruction component of the eighth update 931 is communicated to the client computing device 110 in another xeaponse 1062. The eighth update 931 is than processed in block 1063 in a manner similar to the process of blocks 1054 and 1059. Since all of the received updates of the response I062 are LEAF updates, a subsequent synchmnizatioa rat is not sent back to the metsdaxa server 123.
At the client computing device 110, after it is determined that all of the rexived updates are LEAF updates, or if no updates are rxeived in the response 1062, the synchronization sub-routine 1050 communicates a driver synchronization request from the client computing device I 10 to the metadata server 123. As will be apprxiated by one of asdinazy skill is the art, the driver syachmnizatton request 1064 may include information describing all of the hardware installed in the client computing device 110 and information describing the installed software. Similar to the prior software synchronization requests (1051,1055 and f060), the. driver synchronisation request 1064 may communicate the installed updates to the server. In addition, all of the driver updates cwre~tly c~chOd on the client, if any, era communicated to the server.
In response to receiving the driver synchronization request 1064, the mdadata server 123 responds by sending aU of the driver updates that apply to the client Wing device 1 I O that era not ah~eady cac~d on the client. A driver update is sent to the client computing device 110 is a response 1065 if its prerequisites and conditions are met. The response 1065 commuai~ting the driver updates preferably communicates the instruction c~nnponent of each update. The driver updates are than written.to the update cache of the client coming device.
After the receiving the response 1065 cantai~ing the driver upda#es, the synchronization sub-routine 1050 scads a request 1066 for the laCalizsd data of each of the rrceived software sad hardware updates. As slammarized above, tl~
localized data component of each update includes general information descn'bing the update.
For ire, the laca3ized data component may include information dexcn'bing the fees " ...
and b~ Of the update. The loaali~ed data may also include a text des~iption of the installation p~oafiu~ea of the update. In addition, the localized data.
oannpoooaat may include any ot3~a data or iafnnmation rte the update.
Thus, upon receiving request 1066 for the localized data of each of the received updates and hardware t~pdatas, the metadata server 123 responds by sending all of the localized data for ali of the received soRwate updates and hardware saved in the npdatie of the client, Once received, flu Localized data can be pa~oassad by a softvva~re application to ~tetminc which of the updates needs to be installed.
Alternatively, 'the received localized data can be displayed to a user to inform the uses of all updates that are available to the client coaaputing device 110. In one exabodiment, the roceirerl localized data can be displayed on a Web page. Ia the present example, localized data may be raxived by the client for tht sixth and eighth updates 921 sad 931.
if localized data is stored in the base updates 911, 912, 913 and 915, tla;
localized data for those update would also be received by the client.
FIGURE 11 ~ one example of a web page I 140 displaying an example of localized data associated with. the updates that are available to the client.
For illustrative pmpoaes, the web page 1100 comprises a first deteRod de'saiption 1105 of an update and a second detailed description 1106 of another update. Also shown, each update is raspa~ively associat4d with sdedion mechanisms 1103 and 1104 for receiving a user zo selection of the updates. Also shown, she web page 1 I o0 is canfigurcd with a control button I I OI for allowing a user to control the communic~tian of the selection of to a server, such as the metadata server 123 or download server I24.
In one aspect of the present invention, ~e client pmforms a mbar of processes to enhance the display of the Web page 1100. For instance, the client caging device 110 acamines 13~a localized data of each update to dex~~ if a particular update is of high priority. Such a feature can be facilitated by locating text in the localized data, or in other oompona~t of a pmticutar update, that indicates thax the patticul8r update i~ a high Priority or emergency update. If the client comptrting d~.wice 110 detects a high P~~'8~y~~~~~.a visible section of the web page 1100, stxrh as the top section of the page. In addition, the client may gate a visual indicator, such as a sp~slized ttxt message 1 I20, indicadag that the update is a high priority update.

The client computing aevice I I o may also acamine aye localized seta of each t~pdato to ddermiiu if a pmiicxilar update ran exclusive ion, ieh an upd~e having as installation file that ca~ot be simultaneously installed with an installation file of another update. Such a fcan be facilitated by locating text in the localized data, or in ether comcponeat of a penticular update, that indicattes that the parricnlar update reqaires am exclusive inatallatian. If the client computing device 110 debocta such an update, the client displays a visual indicator, such as the text message I I2Z
shown is FIGURE 11, with the description of the updates that require an exclusive insmllaaioa Re4uming to FIGURE 7, the Software update mu#» 700 crnxtimxs at block 708 where the client cod devicx 110 receives a selection of the updams. As noted above, in response to actuation of the eontml button 1101, the solection of the ono or more updade~s can be obtainai by the m~data saver 123 or the download server i24.
Once the selection of one or more update is raxived tta~ soflvvere update r~dne 700 oonat block 708 where the selected soflrovare upas~ are prod.
In accordsaee wish st'sll another aspect of the present invention, the software update service 120 may ~ovide a method for selecting and transmitting information betvu~ the software update , service and the client armpntimg aeviae 110.
FIGURES 12A and 12B arc illusaativc of a aoflvvara update ptoeessing sub-routine 1200 implemented by tlu cheat computing device 110 to retrieve and install requested soflivare in accordsmx with the present invention. As descn'bed above, the soflvvart update ping sub-routine 1200 may be implonce a xle~on of software has been g~erated or received. With refe~ce to FIGURE 12A, at block 1202, the update maa~componaot i l l instaatiaixs an u~pdade agent 118. In an illustrative embodiment of the present invention, the update agent I 18 is a speciaIizad software 23 oornponent for dxtem~ng what soflvvare update in8rnis required to completed a requested soilwaxe update, to gesurate a required version of an in~alladon component of the update agent, to generate updated f~les by merging existing files with delta patches, .
andlor to initiate the installation of files. In the ev~t that an update agent 118 is alieady instanbat~od, block 1202 may be omitted.
At block 1204, tire update agent 118 obtains soRv~O update information frame the update service 120. In an illustrative embodiment of the prat invention, the software update iafonrration transmitted by the update service I20 is in the form of a package, such ass a self-cxtradiag file, that iacluaes a varidy of data that may be trtiliud by the (r update agent. 1a one aspen, the package can include a list Of all the files that corireaponul to a soRware update. Additionally, the package c~ include copy of ax least a portion of the patch storage manifest that maps specific varaions of files to be to a connsponding software update delta patch stored in the patch storage file oa the update 5 service 120. 'Ibe paokag~e aan also include i,~alladon infonmatiom for each Sle to be that can include an idcmafic~tion of a version of an installation component required to complete tlx installation. Fm~t>~er, the package c~a also include an installation con~onent for the update agent 1 I 8 or a delta patch to update a version of an installation cod ah~eady stored on the client compuda~g device 110. Still fvrthcr, the package can include vai~ation information to allow the update agent to dcbaminc whether a software update was succxssfut. For example, the verificaxion information can include ro~ranae hash values for updated files for oomparisen. The update agept 118 may also veri$r the contents of .
At decision block 1205, a test is condudad to determine whether the update IS agraAt 118 needs to update a version of the installation eompon~ to implement the update. One skilled in the relevant art will ~ that the ion of a complete copy of an inflation in the self-e~etcsc~g file c~a increase the amount of data treasnnitted. by the update service 120 for each so$ware update.
Accordingly, in an illustrative cmbodirnent of the present invention, a baseline version of as installation component may be stared is the client oompuang device and updatal spocitically for the inquiren~eats of the currant software update by way of as installation component delta path. Accordingly, the installation information in the self-fag file ins~ucts the update agent 118 whether or not say included instillation cod updates need to be with the baseline version of the installation component on the client computing device 110. If an update is rr~quired, at block 1208; the update agent 118 updates tlx baseline insteilaixon component, as will be explained in greater detail below with regard to FIGURE 13. .
Once the update agent the installation component or if the instavation component does not require as update, at block 1210, the update agent 1 I8 perfontLS an inventory of files installed aai the client computing devicx 110 sad the specific version of the 51e. In an illustrative embodiment of the pms~t invention, the update agent 118 may quay the client c~mputiag device 110 file system for all files identified in the pac~gt as corresponding to the selected update. AIvely, if the update agent 1 I8 has r~ece~ly coned an inventory, a caches version of the iavoatory may be utilized. At block 1212, the update agent 118 idemifies what soflyvare update information is requirod to complete the requested update. In an iilustradve embodiment of the present invention, the patch storage manifert includes a mapping of versions of sa installed file to a required s delta patch. Accordingly, if delta patching is available, the update agent 118 will utilize the mapping to identify a particular delta patch and its offset location within the patch storage file. Alternatively, if delta patch is not available or cannot implemented, the update aged 118 may identify an file for download.
With rcfnow to FIGURE 12B, at block 1214, tile updaxe date agent transmits a request for the identified software update information. In an illustrative embodiment of the present invention, the update agent 118 can transmit a request for specific delta patchas by indicating a specific range of patches required from the patch storage file to the download server 124 of the update service 120. As descxibcd above, the patch storage file includes a large of nimnber of applicable delta patches, in which 1 s each delta patch is identified by its location with the patch storage file. Because the patch storage file may be rather large in some implementations, the update agent 118 c~a utilize a request that only rfor data fmm~ specific locations in the patch storage file as indicated ~rom the patch storage manifest. In an alternate eazbodimeat of the p inve~ion, the update agent 118 may t,t sa entire copy of as update file and/or a complete copy of the patch ston3ge file.
1a as altemaxe embodiment of the present im~tion, $rwther download server that may not be exclusively associated with the update service 120 can process the updaxe agent 118 rerluest In this embodiment, the request patch storage file may be transmiited, in whole or in part, to any number of additional download servers on a actwot~lc. The 2s additional download servers may be part of a private natwork u~dlizod to update clients on the private nerivork. Further, the additional download server may be part of public . network. In a private network arvironment, the download servers may obtain a complete .
copy of the patch storage file for processing client requests. Alten~atively, the download savers may also cache portions of the patch storage file in processing previous data requests from other clients and utilize the cache data to satisfy the download.
Accordingly, the additional download servers can reduee the communications strain on the download server 124 of the update service 120.

.:
At block 1216, the update agent 118 receives ttrc ~ update information.
In an illustrative embodiment of the present invention, the requested update i~'ormarion may be transmitted in two caches. In a first approach, ~ to as manuat update, the update request is scat to the update service 120 with a request for a direct HTT1' data S delivery response. In this approach, tlu update service 120 may utilize all of the entire bandwidth avajlable to transmit the tnqtuexted data to tine update ag~t 118.
In a second approach, rtferred to as as automatic update, the update request is sent to the update service 120 with a request for an indinrxt HTFP data delivery response. In this response, the update servicx I20 txaaosarits the requested data as a background pn~s.
The background process may be implemented is a manner to utilize a minimal amount of available bandwidth. Further, the background process may be intt~ru~d during the download proocss sad rested at the next available time. A description of a system and method for transmitting requatod data via a background process is described in commonly assigned and copeading U.S. Patent Application No. 09/505,735, e~itled 1 S System sad Method for Traasfearing Data Over a Network, and filed on February 16, 2000, which is hereby incorporated by reference. One skilled in the relevant art will appreciate that foregretnnd or backg~r~ound data delivery is not necessarily reflective of a priority of the selected software update, tux rather how bandwidth is allocated to obtain tbc update info:Tnation.
Oncx the requested in formation is received from the update servicx, at block 1218, the update agent 118 ranges the delta patch with the corresponding installed files. In an illustrative embodiment of the present invention, the update agent 118 may cache the original version of the installed file to ~sia~e that the selected file does not change during the download and merging process. Further, tlu: original version of the i~talled file may be used to uninstall the selected update.
At decision block 1220, a tort is conducted to detcamine whether the updated file is valid. In an illustrative embodiment of the pFesart invention, the update agent 118 may utt'Iize a hashing algorithm to compare a reference hash value obtained from the update information package and coarsponding to a valid file update with a hash from the current modified file. if the hashes do not match, the currant modified file is not valid. One skilled in. the relevant art will appreciate that say one of a number of alternative validation algorithms may also be utilized. If the updated file is not valid, the sub-routine 1200 rvfinns to block 1214, where the update agent may request the update 2327iP(.T ~ . ( .
information again. Altemadvely, if the update agent 118 has unsuccessfully ~onptod to i I
gene~tc the update file several times, the update agerrt may iatplemeat one of several fallback proc~urs. In one embodiment of the present invention, the update agent 118 may request a completed copy of the file stored. in the patch storage file and identified from the patch storage manifest fmm the update service 120. In another embodiment of the prat invention, the updats agent 118 may request a copy of the updated file in a self-crontainad file from tIu update servicx 120. In still another embodiment of the prat invention, the sub-routine 1200 may otherwise fail.
Once the selected file is valid, at decision block 1222, a test is cod to dek~mint whether any additional downloads are required. In an illustra#ive embodiment of tire prcs~~ invention, the sub-routine 1200 arters into an iterative loop that continuously checks for additional downloads after the completion of a previously sal«~ed download. ff the state of a file changes during the download, the update agent 118 would conctinue to request additional downloads for the new change of state. If additional downloads are required, at black 1224, the update agent 118 performs another inventory and identifies alI applicable delta . The sub-routine 1200 then returns to block 1214.
Once all t~ requested update downloads are ca~rplcte, at decision block 1226, a test is coaduct~ to dcte<mine wh~tar the state of the client machine has changed. In an ilhrstrative ~nbodiment of the prr~ent invertion, time may elapse betvc~n the downloading and merging of update infam>~on and the actual installation of the updated frle. Accordingly, prior to instaiiing the updated file, the update agent determines wh~ha the clierif computing device state has cheaged. If t~ state has caged, the file update may not be valid and the update fails at block 1228. Alvely, if no state 25 change has occmted, the update agent 118 installs the uQdatcd file at block 1230 and the i i sub-mutine 1200 nclzuns at block 1232.
With reference now to FIGURE 13, a sub-routine 1300 implemarted by the cIirnt compu:ing device 110 for updating a baseline in~allation component corresponding to block 1208 (FIGURE 12A) will be descrr'bea. At decision block 1302, a test is conducted to dcGermine whether a new baseline installation ~On~cnt is iachrded in the #
self-rartracbng file transmitted to the update agent 118 from the update servicx 120. In an illustrative embodiment of the parsent invention, if the delta patches required to update the baseline installer era computable in size to the transmission of an updat~od installation COniponent, 8 nLWV bi9~C IZ~lIatLO~ Wl~il hC h8~~ltttii. ~f an UpdabOd instBilstiaun compv~,ent is iaciuded, at blocdc 1304, the update agent installs the updated baseline iastalL~ion ~mponeat as the xw ion component, A~dditioually, the acw inscallahon component may be saved in the cli~t eonnguting device 110 memory to serve as a baseline installer for additional updates. At block 1306, the sub-routine If an updated baseline installation component is mt included in the self-actra~ag file, at block 1308, the updadbe went 118 obtains s baseline insrat>gtion dolts patch from the self-attracting ftlc. In an ~lusdn~ive embodime~ of the present iavcntiou, the baseline ion component delta patch cocr~ds to aoflvvare code that can be merged with the baseline installation component to genaete an upd~d baseline iastallahon cod Accordi~y, at block 1310, the agent merges the basc~ine inatall~ion component ~lta patch with the baseline installa~toa camponern. At block 1312, the update agent 118 then designates the baseline installation component as the out ion oampon~t. In an iilu~rativ~e embodiment of tlu present iavartion, the updated inatallahon component will not be saved after the ins is Mete. In accordance with this embodiment, the update agent I 18 only maintains a limited number of baseline ins~llation components in the client computing device 110 any. Accordingly, the update agent gees a ~orary, upd~~
installation component at each installation. Because each client computing device 110 can only correspoa~d to a limited numbca of baseline ins~llation campon~s, the update savrcx 120 is only to fit a single baseline bnsre~on compone~ delta patch for each chart computing device. At block 1314, the sub-routine 1300 rednns.
QV>rile the preib~ embodimtnt of the invendon has: been illn;~trated and described, it will be appreciated that various changes can be made tlxsein without dtp~ting fmm dbe spirit and scope of the iuvartiom. For in~e, although the illustrative examples described Ixrein apply to softwarr mss, the scope of the preset.
invention includes othea uses btyond the distribution sad ~mmunication of information related to software updates. Accordingly, unless spectate subject mattier is expressly excluded in this disclos~ae, it is to be agpa~eciatod that the scope of the prat invention applies to distn'butioa and communication of any type of data, other than, or in addition to software updates.

Claims (25)

The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:
1. A method of communicating between a client computing device process and a server process, in a distributed processing system, the method comprising:
(a) issuing, by the client process, a synchronization request, wherein the synchronization request includes an identifier of an installed software update if the client computing device stores the installed software update;
(b) receiving by the server process, the synchronization request;
(c) selecting, by the server process, an additional software update if the synchronization request comprises as identifier of at least one software update, wherein the selection of the additional software update is dependent on the fulfillment of a prerequisite defined in the additional software update, wherein the prerequisite requires the synchronization request to include as identifier for at least one specific software update (d) selecting, by the server process, a first level software update having a null value as a prerequisite if it is determined that the synchronization request does not comprise as identifier of at least one software update;
(e) issuing, by the server process, an instruction component of the selected software update;
(f) receiving, by the client process, the instruction component of the selected software update; and (g) storing, by the client process, the instruction components of the selected software update in the client computing device as an installed software update if the client computing device contains at least one component that fulfills a condition of an applicability rule stored in the selected software update.
2. The method as recited in Claim 1, wherein the method further comprises, by the client process, repeating elements (a) - (g) if the instruction component of the selected software update provides an indication that there are additional software updates for processing by the client process.
3. The method as recited in Claim 1, wherein the method further comprise:

issuing, by the server process, a localized data component of the selected software update; and receiving, by the client process, the localized data component of the selected software update, wherein the client process invokes an application to generate a display of the localized data component of the software update on a display upon receiving the localized data component.
4. The method as recited in Claim 3, wherein the method further comprises:
receiving, by the client process, a command for invoking the communication of a data file associated with the selected software update; and issuing, by the client process, a command for communicating the data file associated with the selected software update;
receiving, by the server process, command for communicating the data file associated with the selected software update, and invoking an application to download the data file.
5. The method as recited in Claim 1, wherein the method further comprises:
integrating, by the client process, an identifier of the installed software update into the synchronization, request if a memory read by the client process stores the installed software update,
6. The method as recited in Claim 1, wherein the method further comprises:
storing, by the client process, the instruction components of the selected software update in the client device as a failed software update if the client process determines that at least one condition of an applicability rule stored in the selected software update is not fulfilled.
7. The method as recited in Claim 7, wherein the method further comprises:
integrating, by the client process, an identifier of the failed software update in the synchronization request;
restricting, by the server process, the issuance of the selected software update if the selected software update is related to the failed software update.
8. A method of communicating between a client computing device process and a server process, in a distributed processing system, the method comprising:

(a) issuing, by the client process, an authorization request, wherein the authorization request contains an identifier of a client authorization module associated with a target group;
(b) receiving, by the server process, the authorization request;
(c) issuing, by the server process, a server cookie identifying the target group if the server process detects the presence of a server software module associated with the target group;
(d) receiving, by the client process, the server cookie identifying the target group;
(e) issuing, by the client process, an update request for at least one software update, wherein the request contains the server cookie;
(f) receiving, by the server process, the update request;
(g) issuing, by the server process, a software update if the software update is associated with the target group identified in the server cookie;
and (h) receiving, by the client process, the software update if the software update is associated with the target group identified is the server cookie.
9. The method as recited in Claim 8, wherein the authorization request includes data of a previously stored server cookie, and wherein the server cookie issued by the server process includes the data the of the previously stored server cookie.
10. The method as recited in Claim 8, wherein it is determined that the client computing device is associated with a target group if a server authorization module in communication with the server process identifies the same target group associated with the client authorization module.
11. The method as recited in Claim 8, wherein the server cookie comprises an expiration time, wherein the method further comprises, by the server process, not issuing the software update if the expiration time of the server cookie has passed.
12. The method as recited in Claim 8, wherein the server cookie stores the expiration time in a clear text format and in an encrypted format, and wherein the server cookie contains encrypted data identifying at least one target group, wherein the method further comprises:

obtaining, by the client process, the expiration time from the server cookie, wherein the client process obtains the expiration time from the expiration time stored in the clear text format; and issuing, by the client process, the request for at least one software update, wherein the request includes the server cookie.
13. The method as recited is Claim 8, wherein issuing of the software update includes issuing as instruction component of the software update, and if the instruction component of the software update indicates that there are additional software updates, the method further comprises:
issuing, by the client process, a request for localized data;
receiving, by the server process, request for localized data;
issuing, by the server process, a localized data component of the software update;
receiving, by the client process, the localized data; and processing, by the client process, the localized data component for the selection of at least one update file.
14. A system for communicating and managing software updates, the system comprising:
(a) a first database storing a plurality of software updates, wherein an individual software update stored in the comprises:
(i) an instruction data field containing an applicability rule defining at least one condition, wherein the applicability rule can include a null value, wherein the instruction component contains a set of prerequisites that identify one or more software that are required for installation of the individual software update, and wherein the set of prerequisites can include a null value;
(ii) a localized data field containing text data describing general information related to the individual software update; and (iii) a data component that identifies at least one data stream file associated with the individual software update;
(b) as authorization server for authorizing access to software updates stored in the first database, wherein the authorization server issues a server cookie for allowing a client computing device to access to the individual software update if the client computing device contains an authorization module indicating that the client computing device is associated with a target group, wherein the server cookie contains an identifier for the target group, and wherein the server cookie is communicated to the client computing device for storage of the server cookie;
(c) a metadata server for providing updates to the client computing device, wherein a software update is communicated to the client computing device if the software update is associated with the target group, wherein the metadata server is communicatively coupled to said first database, and wherein the metadata server is operable to:
(i) obtain a synchronization request, wherein the synchronization request includes an identifier of an installed software update if the client computing device stores the installed software update, wherein the synchronization request includes the server cookie;
(ii) select an additional software update for communication to the client computing device if the synchronization request comprises an identifier of at least one installed software update, wherein the selection of the additional software update is dependent on the fulfillment of a prerequisite defined in the additional software update, wherein the prerequisite requires the synchronization request to include an identifier for at least one installed software update, wherein the additional software update is associated with the target group identified in the server cookie;
(iii) selected a first level software update for communication to the client computing device if the synchronization request does not comprise an identifier of at least one installed software update, wherein the first level software updates do not include a prerequisite;
(iv) communicate an instruction component of the selected software update to the client computing device for storage;
(v) obtain a request for localized data associated with the selected software update;
(vi) communicating localized data associated with the selected software update to the client computing device, wherein localized data allows the client computing device to generate a download request for receipt of a data component of the selected software update;

(d) a download server communicatively coupled to said first database, and the download server is operable to:
(i) obtain the download request from the client computing device, wherein the download request identifies the data component of the selected software update; and (ii) communicate the data component of the selected software update to the client computing device.
15. The system as recited in Claim 1, wherein the server cookie contains an identifier for the target group if a server authorization module identifies the target group.
16. The system as recited in Claim 1, wherein the server cookie comprises an expiration time, and wherein the metadata server is operable to:
determine if the expiration time of the server cookie has passed;
restrict the communication of the selected software update if it is determined that the expiration time of the server cookie has passed.
17. The system as recited in Claim 1, wherein the metadata server is operable to:
obtain an identifier of a failed software update in the synchronization request if the client computing device stores the failed software update;
restrict the communication of selected software updates related to the failed software update, if it is determined that the synchronization request comprises an identifier of the failed software update.
18. The system as recited in Claim 1, wherein the download server is operable to:
obtain a selection of one or more available software updates for updating one or more files installed on the client computing device;
obtain a self-extracting file identifying a plurality of available delta patches for updating at least one version of an installed file;
obtain an inventory of the one or more files installed on the client computing device;

select one or more applicable delta patches to implement the selected software updates, wherein selecting the one or more applicable patches corresponds to a mapping of the self-attracting file identifying the plurality of available delta patches to the inventory of the one or mine files installed on the client computing device;
and transmit a request for one or more selected delta patches.
19. A system for updating data on a client computing device, the system a first database storing a plurality of delta patches;
a server computer communicatively coupled to said first database and to the client computing device, said server computer operable to:
obtain a selection of one or more available software updates for updating one or more files installed on the client computing device;
obtain a self-extracting file identifying a plurality of available delta patches for updating at least one version of an installed file;
obtain an inventory of the one or more files installed on the client computing device;
select one or more applicable delta patches to implement the selected software updates, wherein selecting the one or more applicable patches corresponds to a mapping of the self-extracting file identifying the plurality of available delta patches to the inventory of the one or more files installed on the client computing device;
and transmit a request for one or more selected delta patches.
20. A system for communicating software updates to a client computing device, the system comprising:
a first component storing a plurality of a server authorization modules, wherein an individual server authorization module identifies a target group;
a server computer communicatively coupled to said first component, said server computer operable to:
obtain an authorization request from the client computing device, wherein the authorization request contains an identifier of a client authorization module stored on the client computing device;

determine if the client computing device is associated with the target group, wherein it is determined that the client computing device is associated with the target group if the client authorization module indicates that the client computing device is associated with the target group;
communicate a server cookie from the software update service to the client computing device if it is determined that the client computing device is associated with the target group, wherein the server cookie identifies the target group;
obtain a request for at least one software update stored on the software update service, wherein the request contains the server cookie;
in response to obtaining the request, determine if a software update is associated with the target group identified in the server cookie; and if it is determined that the software update is associated with the target group identified in the server cookie, communicate the software update from the software update service to the client computing device.
21. A computer-readable medium having stored thereon a data structure of an individual software update, comprising:
an instruction data field containing an applicability rule defining at least one condition, wherein the applicability rule can be a null value, wherein the instruction component contains a set of prerequisites that identify one or more software updates that are required for installation of the individual software update, and wherein the set of prerequisites can be a null value;
a localized data field containing text data describing general information related to the individual software update; and a data component that identifies at least one data stream file associated with the individual software update.
22. The computer-readable medium of Claim 8, wherein the instruction component contains a data value that indicates if there are other updates that depend from the individual software update.
23. The computer-readable medium of Claim 8, wherein the instruction component contains a data value that indicates if the individual software update requires the installation of at least one other software update.
24. The computer-readable medium of Claim 8, wherein the localized data field provides an indication that the individual software update is a high priority update.
25. The computer-readable medium of Claim 8, wherein the localized data field provides an indication that the individual software update requires an exclusive installation.
CA002501499A 2003-12-15 2004-07-23 System and method for a software distribution service Abandoned CA2501499A1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/737,726 2003-12-15
US10/737,726 US7478381B2 (en) 2003-12-15 2003-12-15 Managing software updates and a software distribution service
PCT/US2004/023965 WO2005060387A2 (en) 2003-12-15 2004-07-23 System and method for a software distribution service

Publications (1)

Publication Number Publication Date
CA2501499A1 true CA2501499A1 (en) 2005-06-15

Family

ID=34654196

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002501499A Abandoned CA2501499A1 (en) 2003-12-15 2004-07-23 System and method for a software distribution service

Country Status (11)

Country Link
US (1) US7478381B2 (en)
EP (1) EP1579301B1 (en)
JP (1) JP4871138B2 (en)
KR (1) KR101130367B1 (en)
CN (1) CN101410800B (en)
AU (1) AU2004279162B8 (en)
BR (1) BRPI0406412A (en)
CA (1) CA2501499A1 (en)
MX (1) MXPA05006615A (en)
RU (1) RU2365983C2 (en)
WO (1) WO2005060387A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078952B2 (en) 2005-11-28 2011-12-13 Microsoft Corporation Site redirection

Families Citing this family (225)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694546A (en) 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
US6751794B1 (en) 2000-05-25 2004-06-15 Everdream Corporation Intelligent patch checker
WO2002025438A1 (en) * 2000-09-22 2002-03-28 Patchlink.Com Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US7574481B2 (en) * 2000-12-20 2009-08-11 Microsoft Corporation Method and system for enabling offline detection of software updates
GB2387001B (en) 2001-10-22 2005-02-02 Apple Computer Intelligent interaction between media player and host computer
US7680849B2 (en) 2004-10-25 2010-03-16 Apple Inc. Multiple media type synchronization between host computer and media device
US8150937B2 (en) 2004-10-25 2012-04-03 Apple Inc. Wireless synchronization between media player and host device
US8255361B2 (en) * 2003-01-31 2012-08-28 Oracle America, Inc. Method and system for validating differential computer system update
US8122106B2 (en) 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7574706B2 (en) * 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US7549148B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Self-describing software image update components
US7614051B2 (en) * 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
JP2005242981A (en) * 2004-01-28 2005-09-08 Seiko Epson Corp Service providing system, apparatus, program, and method, and application management system, application management program and method, and storage medium
US7539686B2 (en) * 2004-03-12 2009-05-26 Microsoft Corporation Tag-based schema for distributing update metadata in an update distribution system
US8051483B2 (en) 2004-03-12 2011-11-01 Fortinet, Inc. Systems and methods for updating content detection devices and systems
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US20050246529A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation Isolated persistent identity storage for authentication of computing devies
US20070110074A1 (en) 2004-06-04 2007-05-17 Bob Bradley System and Method for Synchronizing Media Presentation at Multiple Recipients
US10972536B2 (en) 2004-06-04 2021-04-06 Apple Inc. System and method for synchronizing media presentation at multiple recipients
US8797926B2 (en) 2004-06-04 2014-08-05 Apple Inc. Networked media station
US8443038B2 (en) 2004-06-04 2013-05-14 Apple Inc. Network media device
US7526534B2 (en) * 2004-07-16 2009-04-28 Cassatt Corporation Unified system services layer for a distributed processing system
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US20060039566A1 (en) * 2004-08-19 2006-02-23 Xerox Corporation System for installing software with encrypted client-server communication
US7661102B2 (en) * 2004-08-20 2010-02-09 Smith Micro Software, Inc. Method for reducing binary image update package sizes
US7801449B2 (en) * 2004-09-07 2010-09-21 Finisar Corporation Off-module optical transceiver firmware paging
US8229301B2 (en) * 2004-09-07 2012-07-24 Finisar Corporation Configuration of optical transceivers to perform custom features
US20060059481A1 (en) * 2004-09-16 2006-03-16 Rodney Smith Presenting, delivering and installing electronic downloads with an installed list
US7957651B2 (en) * 2004-10-29 2011-06-07 Finisar Corporation Configurable optical transceiver feature specific cost transaction
US7802124B2 (en) * 2004-10-29 2010-09-21 Finisar Corporation Microcode configurable frequency clock
US7974538B2 (en) 2004-10-29 2011-07-05 Finisar Corporation Transaction for transceiver firmware download
US8151245B2 (en) 2004-12-17 2012-04-03 Computer Associates Think, Inc. Application-based specialization for computing nodes within a distributed processing system
US8219807B1 (en) 2004-12-17 2012-07-10 Novell, Inc. Fine grained access control for linux services
US8271785B1 (en) 2004-12-20 2012-09-18 Novell, Inc. Synthesized root privileges
US9021456B2 (en) * 2004-12-22 2015-04-28 International Business Machines Corporation Using collaborative annotations to specify real-time process flows and system constraints
US8457108B1 (en) * 2004-12-27 2013-06-04 At&T Intellectual Property Ii, L.P. Method and apparatus for monitoring client software usage in end user device
US11314378B2 (en) 2005-01-07 2022-04-26 Apple Inc. Persistent group of media items for a media device
EP1688834A3 (en) * 2005-02-03 2009-01-14 LG Electronics Inc. Video device having software upgrade function using wireless communication and method for controlling the same
US7490072B1 (en) 2005-02-16 2009-02-10 Novell, Inc. Providing access controls
US7797147B2 (en) * 2005-04-15 2010-09-14 Microsoft Corporation Model-based system monitoring
US7802144B2 (en) * 2005-04-15 2010-09-21 Microsoft Corporation Model-based system monitoring
US20060253617A1 (en) * 2005-04-22 2006-11-09 Microsoft Corporation Driver upgrade tools
US8352935B2 (en) * 2005-05-19 2013-01-08 Novell, Inc. System for creating a customized software distribution based on user requirements
US8074214B2 (en) * 2005-05-19 2011-12-06 Oracle International Corporation System for creating a customized software installation on demand
US8316129B2 (en) 2005-05-25 2012-11-20 Microsoft Corporation Data communication coordination with sequence numbers
US20070016393A1 (en) * 2005-06-29 2007-01-18 Microsoft Corporation Model-based propagation of attributes
US8549513B2 (en) 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
US8577761B1 (en) * 2005-06-30 2013-11-05 Oracle America, Inc. System and method for dynamic offering topologies
JP4747733B2 (en) * 2005-08-22 2011-08-17 ブラザー工業株式会社 Node device, shared information update processing program, shared information update method, and information sharing system
US7668905B2 (en) * 2005-09-07 2010-02-23 International Business Machines Corporation Method, system and computer program for providing web pages based on client state
US9274774B2 (en) * 2005-10-28 2016-03-01 Google Inc. Common installer server
US8261258B1 (en) 2005-10-28 2012-09-04 Google Inc. Common installer client
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
US7813963B2 (en) * 2005-12-27 2010-10-12 The Pen Interactive electronic desktop action method and system for executing a transaction
US8676973B2 (en) * 2006-03-07 2014-03-18 Novell Intellectual Property Holdings, Inc. Light-weight multi-user browser
KR100750169B1 (en) * 2006-03-08 2007-08-21 삼성전자주식회사 Method for generating a delta file and software update method using the same
WO2007113550A1 (en) * 2006-03-31 2007-10-11 British Telecommunications Public Limited Company Exception handler for the upgrade of java objects in a distributed system
EP2002334A1 (en) * 2006-03-31 2008-12-17 British Telecommunications Public Limited Company Xml-based transfer and a local storage of java objects
US7865583B2 (en) * 2006-03-31 2011-01-04 The Invention Science Fund I, Llc Aggregating network activity using software provenance data
US7793285B2 (en) * 2006-03-31 2010-09-07 Ricoh Company, Ltd. Web installer driver and management through a remote network
US8209676B2 (en) 2006-06-08 2012-06-26 Hewlett-Packard Development Company, L.P. Device management in a network
JP2009536395A (en) * 2006-06-19 2009-10-08 サムスン エレクトロニクス カンパニー リミテッド Information upgrade system and method of OTA-capable terminal {INFORMATIONUPGRADESYSTEMSYSTEMMETHODFORMATA-CAPABLEDEVICE}
US8775572B2 (en) * 2006-06-23 2014-07-08 Microsoft Corporation Public network distribution of software updates
WO2008014454A2 (en) 2006-07-27 2008-01-31 Hewlett-Packard Development Company, L.P. User experience and dependency management in a mobile device
US8074213B1 (en) * 2006-08-11 2011-12-06 Symantec Operating Corporation Automatic software updates for computer systems in an enterprise environment
US20080046879A1 (en) * 2006-08-15 2008-02-21 Michael Hostetler Network device having selected functionality
US7730480B2 (en) * 2006-08-22 2010-06-01 Novell, Inc. System and method for creating a pattern installation by cloning software installed another computer
US20130047145A1 (en) * 2006-08-29 2013-02-21 Quan-Jie Cui Match analysis for encoding optimized update packages
JP4842742B2 (en) * 2006-09-05 2011-12-21 富士通株式会社 Software management program, software management method, and software management apparatus
US8112508B1 (en) * 2006-09-08 2012-02-07 Dell Products L.P. Delivering data from device management services to devices using bulletin system
US7886292B2 (en) * 2006-10-05 2011-02-08 International Business Machines Corporation Methodology of individualized software deployment for hardware-independent personal computer mass development
US8122443B2 (en) * 2006-12-14 2012-02-21 International Business Machines Corporation Dynamic multi-context delta view for merging structured data in a visual merge tool
KR101368714B1 (en) * 2006-12-22 2014-03-05 삼성전자주식회사 Mobile storage device and, automatic install system of software and method thereof
US8631088B2 (en) 2007-01-07 2014-01-14 Apple Inc. Prioritized data synchronization with host device
US8850140B2 (en) 2007-01-07 2014-09-30 Apple Inc. Data backup for mobile device
WO2008086253A2 (en) * 2007-01-07 2008-07-17 Apple Inc. Background data transmission between media device and host device
JP4905150B2 (en) * 2007-01-22 2012-03-28 富士通株式会社 Software operation result management system, method and program
US20080281958A1 (en) * 2007-05-09 2008-11-13 Microsoft Corporation Unified Console For System and Workload Management
US20080288622A1 (en) * 2007-05-18 2008-11-20 Microsoft Corporation Managing Server Farms
US20090007096A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Secure Software Deployments
KR100955426B1 (en) * 2007-08-10 2010-05-04 (주)지란지교소프트 Method for executing virtual platform
US7857222B2 (en) 2007-08-16 2010-12-28 Hand Held Products, Inc. Data collection system having EIR terminal interface node
US8938735B2 (en) * 2007-08-31 2015-01-20 Thomson Reuters Global Resources Bootstrapper and software download manager
US20090083441A1 (en) 2007-09-24 2009-03-26 Microsoft Corporation Synchronization of web service endpoints in a multi-master synchronization environment
US8413130B2 (en) * 2007-10-03 2013-04-02 International Business Machines Corporation System and method for self policing of authorized configuration by end points
US8281294B1 (en) * 2007-11-12 2012-10-02 Nvidia Corporation System and method for representing and managing a multi-architecture co-processor application program
US8726260B2 (en) * 2007-11-26 2014-05-13 Lenovo (Singapore) Pte Ltd Techniques for providing software patches to a computer system
US8490074B2 (en) 2007-11-27 2013-07-16 The Boeing Company Aircraft software part library
US9208308B2 (en) 2007-11-27 2015-12-08 The Boeing Company Alternate parts signature list file
US8442751B2 (en) 2007-11-27 2013-05-14 The Boeing Company Onboard electronic distribution system
US8930310B2 (en) * 2007-11-27 2015-01-06 The Boeing Company Proxy server for distributing aircraft software parts
US8683458B2 (en) * 2007-11-30 2014-03-25 Red Hat, Inc. Automatic full install upgrade of a network appliance
US8589592B2 (en) * 2007-12-11 2013-11-19 Red Hat, Inc. Efficient object distribution
US8266260B2 (en) * 2007-12-11 2012-09-11 Sharp Laboratories Of America, Inc. Method and system for updating the software of multiple network nodes
DE102007060990A1 (en) * 2007-12-14 2009-06-18 Codewrights Gmbh Method for generating an application-specific installation package of device objects
WO2009137365A1 (en) * 2008-05-05 2009-11-12 Sentilla Corporation, Inc. Efficient broadcast of data in a communication network
US20090287917A1 (en) * 2008-05-19 2009-11-19 Microsoft Corporation Secure software distribution
US8418164B2 (en) * 2008-05-29 2013-04-09 Red Hat, Inc. Image install of a network appliance
US20090313352A1 (en) * 2008-06-11 2009-12-17 Christophe Dupont Method and System for Improving the Download of Specific Content
US8503001B2 (en) * 2008-06-18 2013-08-06 Ricoh Company, Ltd. Approach for updating usage information on printing devices
US8930930B2 (en) * 2008-09-04 2015-01-06 International Business Machines Corporation Updating a computer system
US8719811B2 (en) * 2008-10-07 2014-05-06 Ricoh Company, Ltd. Method of causing functions to be executed on business office appliances
US8527614B2 (en) * 2008-10-07 2013-09-03 Ricoh Company, Ltd. Method of deployment of remote patches to business office appliances
US8914783B2 (en) * 2008-11-25 2014-12-16 Fisher-Rosemount Systems, Inc. Software deployment manager integration within a process control system
US8898660B2 (en) * 2008-11-25 2014-11-25 Fisher-Rosemount Systems, Inc. Systems and methods to provide customized release notes during a software system upgrade of a process control system
US8938717B1 (en) * 2009-03-16 2015-01-20 Xilinx, Inc. Updating an installed computer program
US8438558B1 (en) * 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
EP2239659A1 (en) * 2009-04-09 2010-10-13 Siemens Aktiengesellschaft A network device and a system thereof
US8327351B2 (en) * 2009-04-30 2012-12-04 Sap Ag Application modification framework
US8495621B2 (en) * 2009-06-15 2013-07-23 Microsoft Corporation Catalog-based software component management
US8880736B2 (en) * 2009-07-09 2014-11-04 Simon Cooper Methods and systems for archiving and restoring securely installed applications on a computing device
CN101989208A (en) * 2009-08-04 2011-03-23 鸿富锦精密工业(深圳)有限公司 Software updating method
US8528037B2 (en) 2009-08-28 2013-09-03 CSC Holdings, LLC Dynamic application loader for set top box
CN101674326B (en) * 2009-09-21 2012-09-05 中兴通讯股份有限公司 Method for realizing interprocess synchronization communication and agent unit
US9003387B2 (en) * 2009-09-25 2015-04-07 Fisher-Rosemount Systems, Inc. Automated deployment of computer-specific software updates
US9176898B2 (en) * 2009-11-09 2015-11-03 Bank Of America Corporation Software stack building using logically protected region of computer-readable medium
US20110113421A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Programmatic Creation Of Task Sequences From Manifests
US20110113416A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Network-Enhanced Control Of Software Updates Received Via Removable Computer-Readable Medium
US8972974B2 (en) 2009-11-09 2015-03-03 Bank Of America Corporation Multiple invocation points in software build task sequence
US20110113424A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Distribution Of Software Updates
US8397230B2 (en) * 2009-11-09 2013-03-12 Bank Of America Corporation Software updates using delta patching
US8584113B2 (en) * 2009-11-09 2013-11-12 Bank Of America Corporation Cross-updating of software between self-service financial transaction machines
US9497092B2 (en) 2009-12-08 2016-11-15 Hand Held Products, Inc. Remote device management interface
EP2360581A1 (en) * 2010-01-18 2011-08-24 Thomson Licensing Method, system and device for execution of a software application
US8316120B2 (en) * 2010-02-02 2012-11-20 Microsoft Corporation Applicability detection using third party target state
US20110238572A1 (en) * 2010-03-25 2011-09-29 Bank Of America Corporation Remote Control Of Self-Service Terminal
TW201135594A (en) * 2010-04-08 2011-10-16 Inventec Corp System for updating software using separated modules and method thereof
US9083762B2 (en) * 2010-05-28 2015-07-14 Greg Saunders System and method for providing hybrid on demand services to a work unit
US10102687B1 (en) 2010-08-17 2018-10-16 The Boeing Company Information management system for ground vehicles
US9052976B2 (en) * 2010-11-08 2015-06-09 Mckesson Financial Holdings Methods, apparatuses and computer program products for facilitating efficient deployment of software
US8863114B2 (en) * 2010-12-06 2014-10-14 Red Hat, Inc. Managing software packages using a version control system
US9519600B2 (en) 2011-03-04 2016-12-13 Microsoft Technology Licensing, Llc Driver shimming
US9003363B2 (en) * 2011-03-21 2015-04-07 Microsoft Technology Licensing, Llc Device flags
US8910142B2 (en) 2011-04-13 2014-12-09 Xerox Corporation Method and system to regulate the electronic availability of application software updates based on information collected regarding installation, usage and support for these updates
US8918782B2 (en) * 2011-05-27 2014-12-23 Microsoft Corporation Software image distribution
US8875100B2 (en) * 2011-06-17 2014-10-28 Microsoft Corporation Pattern analysis and performance accounting
US9331955B2 (en) 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
CN102395149A (en) * 2011-06-30 2012-03-28 中兴通讯股份有限公司 MME (mobility management entity) message processing method and device
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US8930940B2 (en) * 2011-08-19 2015-01-06 Yongyong Xu Online software execution platform
EP2751682A4 (en) 2011-08-29 2015-01-07 Fiberlink Comm Corp Platform for deployment and distribution of modules to endpoints
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US8613101B2 (en) 2011-09-12 2013-12-17 Microsoft Corporation Software distribution service federation
US9253164B2 (en) 2011-09-12 2016-02-02 Microsoft Technology Licensing, Llc Distribution of portions of content
US8726263B2 (en) 2011-09-28 2014-05-13 Microsoft Corporation Detection and installation of software on a per-user basis
US8621123B2 (en) 2011-10-06 2013-12-31 Honeywell International Inc. Device management using virtual interfaces
US8539123B2 (en) 2011-10-06 2013-09-17 Honeywell International, Inc. Device management using a dedicated management interface
US8959504B2 (en) 2011-10-18 2015-02-17 Microsoft Corporation Update scanning
US9053201B2 (en) 2012-02-29 2015-06-09 Microsoft Technology Licensing, Llc Communication with a web compartment in a client application
EP3660673A1 (en) * 2012-03-22 2020-06-03 Irdeto B.V. Updating software components
US8832018B2 (en) * 2012-05-22 2014-09-09 Sap Ag Decision service manager
US9244673B2 (en) 2012-06-08 2016-01-26 Apple Inc. System and method for updating application archive files
US9378026B2 (en) * 2012-07-27 2016-06-28 Daniel A. Dooley Customizable application
KR101199014B1 (en) * 2012-08-06 2012-11-09 (주)네오위즈게임즈 Method of providing program for multiprocessing, server performing the same and storage media storing the same
RU2495487C1 (en) * 2012-08-10 2013-10-10 Закрытое акционерное общество "Лаборатория Касперского" System and method of determining trust when updating licensed software
RU2526754C2 (en) 2012-09-28 2014-08-27 Закрытое акционерное общество "Лаборатория Касперского" System and method for selecting mobile device control functions
CN104981774B (en) * 2013-01-11 2020-09-18 辛纳科尔股份有限公司 Method and system for background control panel configuration selection
US9418072B2 (en) * 2013-03-04 2016-08-16 Vmware, Inc. Cross-file differential content synchronization
US9727831B2 (en) 2013-03-15 2017-08-08 Vivint, Inc. Methods for prompting a user to use enhanced automation system features, and systems and devices related thereto
US9665359B2 (en) 2013-09-13 2017-05-30 Microsoft Technology Licensing, Llc Automatically resolving conflicts after installation of selected updates in a computer system
US9830142B2 (en) * 2013-09-13 2017-11-28 Microsoft Technology Licensing, Llc Automatic installation of selected updates in multiple environments
US9626176B2 (en) 2013-09-13 2017-04-18 Microsoft Technology Licensing, Llc Update installer with technical impact analysis
US10026064B2 (en) 2013-09-13 2018-07-17 Microsoft Technology Licensing, Llc Automatically recommending updates based on stored lifecycle information
US9069641B2 (en) * 2013-09-17 2015-06-30 Blackberry Limited Updating firmware on mobile devices
GB2519790B (en) * 2013-10-30 2017-07-12 1E Ltd Configuration of network devices
JP6432127B2 (en) * 2013-11-12 2018-12-05 株式会社リコー COMMUNICATION DEVICE, COMMUNICATION SYSTEM, COMMUNICATION METHOD, AND COMMUNICATION PROGRAM
JP2015103105A (en) * 2013-11-26 2015-06-04 株式会社リコー Communication device, communication system, and communication program
WO2015189702A2 (en) * 2014-04-30 2015-12-17 Schneider Electric Industries Sas Systems and methods for delivering and accessing software components
RU2595529C2 (en) * 2014-05-29 2016-08-27 Общество С Ограниченной Ответственностью "Яндекс" Method for selective loading of a set of modules, electronic device and data medium
US9747096B2 (en) * 2014-07-07 2017-08-29 Harman Connected Services, Inc. Remote embedded device update platform apparatuses, methods and systems
US9619244B2 (en) 2014-09-05 2017-04-11 Xiaomi Inc. Method and system for upgrading an electronic device
US20160098259A1 (en) * 2014-10-02 2016-04-07 The Boeing Company Software Aircraft Part Installation System
US10318271B2 (en) 2015-01-05 2019-06-11 Irdeto Canada Corporation Updating software components in a program
US9921823B2 (en) 2015-01-09 2018-03-20 Garmin International, Inc. Line replacement unit (LRU) replacement process
JP6478026B2 (en) * 2015-01-28 2019-03-06 株式会社リコー Information processing apparatus, program, and recording medium
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US20160350099A1 (en) * 2015-05-29 2016-12-01 Hewlett Packard Enterprise Development Lp Application deployment to virtual machines
US10042626B2 (en) * 2015-06-29 2018-08-07 Verizon Patent And Licensing Inc. Software updates using client self-reporting and a hierarchical data structure
US10250600B2 (en) * 2015-07-27 2019-04-02 International Business Machines Corporation Updating database drivers for client applications through a database server push
US9740473B2 (en) 2015-08-26 2017-08-22 Bank Of America Corporation Software and associated hardware regression and compatibility testing system
US20170090910A1 (en) * 2015-09-29 2017-03-30 International Business Machines Corporation Mobile device application installation with performance enhancement
US9479567B1 (en) * 2015-10-29 2016-10-25 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US10382312B2 (en) 2016-03-02 2019-08-13 Fisher-Rosemount Systems, Inc. Detecting and locating process control communication line faults from a handheld maintenance tool
US11605037B2 (en) 2016-07-20 2023-03-14 Fisher-Rosemount Systems, Inc. Fleet management system for portable maintenance tools
US10554644B2 (en) 2016-07-20 2020-02-04 Fisher-Rosemount Systems, Inc. Two-factor authentication for user interface devices in a process plant
US10375162B2 (en) 2016-07-22 2019-08-06 Fisher-Rosemount Systems, Inc. Process control communication architecture
US10270853B2 (en) 2016-07-22 2019-04-23 Fisher-Rosemount Systems, Inc. Process control communication between a portable field maintenance tool and an asset management system
US10599134B2 (en) * 2016-07-22 2020-03-24 Fisher-Rosemount Systems, Inc. Portable field maintenance tool configured for multiple process control communication protocols
US10374873B2 (en) 2016-07-22 2019-08-06 Fisher-Rosemount Systems, Inc. Process control communication between a portable field maintenance tool and a process control instrument
US10585422B2 (en) 2016-07-22 2020-03-10 Fisher-Rosemount Systems, Inc. Portable field maintenance tool system having interchangeable functional modules
US10764083B2 (en) 2016-07-25 2020-09-01 Fisher-Rosemount Systems, Inc. Portable field maintenance tool with resistor network for intrinsically safe operation
US10505585B2 (en) 2016-07-25 2019-12-10 Fisher-Rosemount Systems, Inc. Portable field maintenance tool with a bus for powering and communicating with a field device
US10481627B2 (en) 2016-07-25 2019-11-19 Fisher-Rosemount Systems, Inc. Connection check in field maintenance tool
CN106372139A (en) * 2016-08-27 2017-02-01 乐视控股(北京)有限公司 Operation notice generation method, foreground data updating method and database system
US10572240B2 (en) * 2016-12-19 2020-02-25 Vmware Inc. Operating system update management for enrolled devices
US10262124B2 (en) 2017-01-18 2019-04-16 Bank Of America Corporation Autonomous software containers
US10362166B2 (en) 2017-03-01 2019-07-23 At&T Intellectual Property I, L.P. Facilitating software downloads to internet of things devices via a constrained network
US10467842B2 (en) 2017-03-17 2019-11-05 Bank Of America Corporation Portable item transfer container
CN107025121B (en) * 2017-03-31 2020-10-09 Oppo广东移动通信有限公司 Software upgrading method and device and electronic device
CN107172143A (en) * 2017-05-12 2017-09-15 郑州云海信息技术有限公司 Software synchronizing method and device in a kind of server cluster
US11188390B2 (en) * 2017-06-05 2021-11-30 Umajin Inc. Method for configuring a server kit by a server management system
US11922564B2 (en) 2017-06-05 2024-03-05 Umajin Inc. Generative content system that supports location-based services and methods therefor
US11726822B2 (en) 2017-06-05 2023-08-15 Umajin Inc. Systems and methods for providing digital twin-enabled applications
US10289404B2 (en) * 2017-07-25 2019-05-14 Aurora Labs Ltd. Detecting anomalies using real-time ECU processing activity
US10503495B2 (en) 2017-08-02 2019-12-10 Accenture Global Solutions Limited Component management platform
KR102417004B1 (en) * 2017-09-19 2022-07-07 삼성전자주식회사 Method and apparatus for controlling a update of software of an electronic device
US10956143B2 (en) * 2017-12-06 2021-03-23 Hewlett Packard Enterprise Development Lp Server updates
US11297369B2 (en) 2018-03-30 2022-04-05 Apple Inc. Remotely controlling playback devices
US10993274B2 (en) 2018-03-30 2021-04-27 Apple Inc. Pairing devices by proxy
US10783929B2 (en) 2018-03-30 2020-09-22 Apple Inc. Managing playback groups
CN108874319B (en) * 2018-06-27 2021-06-29 郑州云海信息技术有限公司 Metadata updating method, device, equipment and readable storage medium
US10614857B2 (en) 2018-07-02 2020-04-07 Apple Inc. Calibrating media playback channels for synchronized presentation
CN109857414B (en) * 2019-01-22 2022-05-17 上海微小卫星工程中心 Satellite software diffusion method and system
US11140086B2 (en) 2019-08-15 2021-10-05 At&T Intellectual Property I, L.P. Management of background data traffic for 5G or other next generations wireless network
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
CN111026735B (en) * 2019-12-10 2023-03-21 腾讯科技(深圳)有限公司 Data transmission method, device, equipment and medium
KR20230103774A (en) * 2021-12-31 2023-07-07 엘지전자 주식회사 Home appliance device, home appliance device upgrade method, and home appliance device upgrade system

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4796181A (en) 1986-10-24 1989-01-03 Wiedemer John D Billing system for computer software
US5155680A (en) 1986-10-24 1992-10-13 Signal Security Technologies Billing system for computing software
US5047928A (en) 1986-10-24 1991-09-10 Wiedemer John D Billing system for computer software
US5155847A (en) 1988-08-03 1992-10-13 Minicom Data Corporation Method and apparatus for updating software at remote locations
US5142680A (en) 1989-04-26 1992-08-25 Sun Microsystems, Inc. Method for loading an operating system through a network
CA2053261A1 (en) 1989-04-28 1990-10-29 Gary D. Hornbuckle Method and apparatus for remotely controlling and monitoring the use of computer software
US5473772A (en) 1991-04-02 1995-12-05 International Business Machines Corporation Automatic update of static and dynamic files at a remote network node in response to calls issued by or for application programs
US5267171A (en) 1990-03-29 1993-11-30 Brother Kogyo Kabushiki Kaisha Computer software vending machine
JPH0792744B2 (en) 1990-08-20 1995-10-09 インターナショナル・ビジネス・マシーンズ・コーポレイション A method of installing multi-level application software on a data processing device.
US5155484A (en) 1991-09-13 1992-10-13 Salient Software, Inc. Fast data compressor with direct lookup table indexing into history buffer
CA2093094C (en) 1992-04-06 2000-07-11 Addison M. Fischer Method and apparatus for creating, supporting, and using travelling programs
US5528490A (en) 1992-04-10 1996-06-18 Charles E. Hill & Associates, Inc. Electronic catalog system and method
US5586322A (en) 1992-06-11 1996-12-17 Beck; Robert E. Workgroup organized network manager with workstation comparison system
US5359730A (en) 1992-12-04 1994-10-25 International Business Machines Corporation Method of operating a data processing system having a dynamic software update facility
US5495411A (en) 1993-12-22 1996-02-27 Ananda; Mohan Secure software rental system using continuous asynchronous password verification
US5421009A (en) 1993-12-22 1995-05-30 Hewlett-Packard Company Method of remotely installing software directly from a central computer
US6038586A (en) 1993-12-30 2000-03-14 Frye; Russell Automated software updating and distribution
US5694546A (en) 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
US5586304A (en) 1994-09-08 1996-12-17 Compaq Computer Corporation Automatic computer upgrading
US5654901A (en) 1995-01-30 1997-08-05 Telefonaktiebolaget Lm Ericsson Loading software into field test equipment
US5884323A (en) * 1995-10-13 1999-03-16 3Com Corporation Extendible method and apparatus for synchronizing files on two different computer systems
US5845077A (en) 1995-11-27 1998-12-01 Microsoft Corporation Method and system for identifying and obtaining computer software from a remote computer
KR100286008B1 (en) 1995-12-30 2001-04-16 윤종용 Method for automatically updating software program
US6049671A (en) 1996-04-18 2000-04-11 Microsoft Corporation Method for identifying and obtaining computer software from a network computer
US6151643A (en) * 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US6643506B1 (en) 1996-08-07 2003-11-04 Telxon Corporation Wireless software upgrades with version control
GB9623298D0 (en) 1996-11-08 1997-01-08 Int Computers Ltd Updating mechanism for software
US6347398B1 (en) 1996-12-12 2002-02-12 Microsoft Corporation Automatic software downloading from a computer network
US5922072A (en) 1997-01-03 1999-07-13 Ncr Corporation Method and apparatus for creating alternate boot environments in a computer
US6282709B1 (en) * 1997-11-12 2001-08-28 Philips Electronics North America Corporation Software update manager
US6035423A (en) 1997-12-31 2000-03-07 Network Associates, Inc. Method and system for providing automated updating and upgrading of antivirus applications using a computer network
US6202207B1 (en) 1998-01-28 2001-03-13 International Business Machines Corporation Method and a mechanism for synchronized updating of interoperating software
GB2333864B (en) * 1998-01-28 2003-05-07 Ibm Distribution of software updates via a computer network
US6052531A (en) 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US6330715B1 (en) * 1998-05-19 2001-12-11 Nortel Networks Limited Method and apparatus for managing software in a network system
US6381742B2 (en) 1998-06-19 2002-04-30 Microsoft Corporation Software package management
KR20000041146A (en) * 1998-12-21 2000-07-15 구자홍 Method for updating software of network computer
US6286138B1 (en) * 1998-12-31 2001-09-04 International Business Machines Corporation Technique for creating remotely updatable programs for use in a client/server environment
US6401239B1 (en) * 1999-03-22 2002-06-04 B.I.S. Advanced Software Systems Ltd. System and method for quick downloading of electronic files
US6490722B1 (en) * 1999-03-30 2002-12-03 Tivo Inc. Software installation and recovery system
US6574657B1 (en) * 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
US6425126B1 (en) * 1999-05-19 2002-07-23 International Business Machines Corporation Apparatus and method for synchronizing software between computers
JP2001067232A (en) 1999-08-31 2001-03-16 Hitachi Ltd Distribution system and receiving terminal device for software
JP2001075785A (en) * 1999-09-09 2001-03-23 Nec Corp Data updating system
US6493871B1 (en) 1999-09-16 2002-12-10 Microsoft Corporation Method and system for downloading updates for software installation
KR20010076025A (en) * 2000-01-24 2001-08-11 이승룡 A method for transmitting a encrypted file in the computer network for only selected-client's usage
US7035878B1 (en) * 2000-01-25 2006-04-25 Fusionone, Inc. Base rolling engine for data transfer and synchronization system
US6751794B1 (en) * 2000-05-25 2004-06-15 Everdream Corporation Intelligent patch checker
GB0017336D0 (en) 2000-07-15 2000-08-30 Ibm Preferable modes of software package deployment
US7035912B2 (en) * 2000-08-28 2006-04-25 Abaco.P.R., Inc. Method and apparatus allowing a limited client device to use the full resources of a networked server
US20020112230A1 (en) 2000-12-07 2002-08-15 Scott John Charles Software update management system with update chronology generator
US7574481B2 (en) 2000-12-20 2009-08-11 Microsoft Corporation Method and system for enabling offline detection of software updates
US7051327B1 (en) 2001-05-08 2006-05-23 Gateway Inc. System for providing data backup and restore with updated version by creating data package based upon configuration data application data and user response to suggestion
KR20030016073A (en) * 2001-08-20 2003-02-26 엘지전자 주식회사 Method and system for user authertication using cookie in web
US7761535B2 (en) * 2001-09-28 2010-07-20 Siebel Systems, Inc. Method and system for server synchronization with a computing device
US7257649B2 (en) * 2001-09-28 2007-08-14 Siebel Systems, Inc. Method and system for transferring information during server synchronization with a computing device
US7115919B2 (en) * 2002-03-21 2006-10-03 Hitachi, Ltd. Storage system for content distribution
US20030195951A1 (en) * 2002-04-12 2003-10-16 Wittel Walter I. Method and system to dynamically detect, download and install drivers from an online service
US6966058B2 (en) 2002-06-12 2005-11-15 Agami Systems, Inc. System and method for managing software upgrades in a distributed computing system
US7478385B2 (en) * 2003-01-17 2009-01-13 National Instruments Corporation Installing software using programmatic component dependency analysis
US20050050142A1 (en) * 2003-08-28 2005-03-03 Aligo Inc. Method and framework for transaction synchronization
US7574706B2 (en) 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US7853609B2 (en) * 2004-03-12 2010-12-14 Microsoft Corporation Update distribution system architecture and method for distributing software

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078952B2 (en) 2005-11-28 2011-12-13 Microsoft Corporation Site redirection

Also Published As

Publication number Publication date
RU2365983C2 (en) 2009-08-27
RU2005116849A (en) 2006-01-20
CN101410800B (en) 2011-07-13
US20050132349A1 (en) 2005-06-16
AU2004279162B2 (en) 2010-03-04
EP1579301A4 (en) 2009-11-11
AU2004279162B8 (en) 2010-04-08
AU2004279162A1 (en) 2005-06-30
KR101130367B1 (en) 2012-03-28
JP2007523395A (en) 2007-08-16
US7478381B2 (en) 2009-01-13
WO2005060387A3 (en) 2009-04-02
EP1579301A2 (en) 2005-09-28
WO2005060387A2 (en) 2005-07-07
EP1579301B1 (en) 2018-08-29
CN101410800A (en) 2009-04-15
KR20060109284A (en) 2006-10-19
MXPA05006615A (en) 2005-10-21
JP4871138B2 (en) 2012-02-08
BRPI0406412A (en) 2005-10-04

Similar Documents

Publication Publication Date Title
CA2501499A1 (en) System and method for a software distribution service
US7509636B2 (en) System and method for updating files utilizing delta compression patching
US7546594B2 (en) System and method for updating installation components using an installation component delta patch in a networked environment
CA2507172C (en) System and method for managing and communicating software updates
US7676448B2 (en) Controlling installation update behaviors on a client computer
US20050203968A1 (en) Update distribution system architecture and method for distributing software

Legal Events

Date Code Title Description
EEER Examination request
FZDE Discontinued

Effective date: 20160908