Systems exist for managing software updates. Such systems discover what software is installed on a computer, as identified, for example, by make, manufacturer, version, or other indicia for relating a software product or program to relevant updates. Updates may be for security purposes, bug fixes, enhancements, or other types of upgrades. Some update management systems include features for managing software updates across an enterprise's IT (information technology) infrastructure, in which case a large number of computers may be scanned for a large number of different updates.
Most update management systems use a master catalog or manifest, which contains a list of various updates that are available and how to identify whether they have been applied to a computer. Identified updates may then be applied. However, to date, such update catalogs have been closed and inflexible. Administrators using update management systems have not been able to manage updates from different vendors, and aggregation of update information from multiple vendors has not been possible.
There is a need for tools and techniques for efficient management and control of software updates.
The following summary is included only to introduce some concepts discussed in the Detailed Description below. This summary is not comprehensive and is not intended to delineate the scope of protectable subject matter, which is set forth by the claims presented at the end.
Generating a software update catalog may involve accessing resource identifiers. Each resource identifier may identify a location of a portion of update metadata corresponding to a respective program, where the portions of update metadata include information for determining whether to apply their respective updates. The resource identifiers may be used to import the portions of update metadata, and the software update catalog can be generated based on the imported portions of update metadata. Furthermore, a user interface (UI) may be displayed for authoring an update. The UI may allow a user to define the update and signature information by which a computer can be scanned to determine whether the update has been installed and/or whether the update is applicable. An update by generating a portion of update metadata that includes the information that identifies the update and that includes the scan information.
Many of the attendant features will be more readily appreciated by referring to the following detailed description considered in connection with the accompanying drawings.
Like reference numerals are used to designate like parts in the accompanying Drawings.
The update management system 100 may involve simply a single server 108, or it may be part of a larger multi-node systems management framework. Such a framework may involve intermediary nodes such as management point 114. A management point 114 may perform a process 188 of receiving a catalog 113 from the server 108, forwarding or distributing it to the clients for which it is responsible (e.g., clients 102, 104), collecting information from its clients, and forward the collected results to the server 108. It may be convenient to divide the functionality of a management point 114 into a logic component 118 for carrying out the management functions delegated by the server 108, and a storage component 120 for storing update catalogs, scan results, update packages (to be applied to clients), and so on. These functions can be split among different computers.
Whether the update management system 100 uses an intermediating level or not, clients 102, 104, and 106 are scanned for updates. For this purpose, a client scanner 122 may be provided for each client. The client scanner 122 performs a process 124 of receiving or accessing the update catalog 113, scanning the client for updates identified in the catalog, and returning results of the scan. Scanning for an update usually involves checking to see whether the software to which the update relates is installed on the computer, and if it is, checking for signs (provided by the catalog) indicating whether the update has been applied. Such signs may be, for example, the existence or version of a file, the existence or value of a system configuration setting (e.g., a registry setting), the name of file system directory, the size/checksum of a particular file, information about an MSI (Microsoft Windows Installer) or other type of update package, or combinations of such signs, sometimes referred to as an update signature.
Although having a client scan itself for updates is convenient, a client can also be scanned remotely. For example, management point 114 or server 108 could, given sufficient access to clients 102, 104, 106, analyze the files, registry or configuration settings, and other data on the clients.
In sum, the update management system 100 may be viewed as any system that allows an administrator to specify an update catalog, control the scanning of client computers for updates in the catalog, and possibly apply any identified updates where they are needed. For examples of such systems, see various products from Shavlik Technologies, Microsoft Corporation (Systems Management Server 2003, patch management features), St Bernard Software (UpdateEXPERT), and possibly others.
As mentioned, the tool 140 may be configured to perform a process 148 for collecting update metadata from disparate sources. This may involve obtaining update metadata from various entities on the Internet. For example, update metadata <ml> may be pulled from an FTP (file transfer protocol) server 150 of a software publishing company that makes updates to its software products available to the public. Another update metadata, <m2>, may be obtained from a web server on remote host 145. Yet another update metadata file <m3> may be obtained from another server 152 of some other autonomous entity such as a third party that publishes update metadata for various software vendors. The various pieces of update metadata may be formatted or tagged (e.g., using XML) according to some common schema or format. A common schema or format allows a network of entities to freely share information about their updates. It also allows tool 140's process 148 to validate imported update metadata, and then collate and combine external update metadata to produce a master update catalog 154 (<c>) that can be provided to local software update system 144. Local update metadata 156 (<m4>) may also be incorporated into the master update catalog 154. The pieces of update metadata will provide details about what software they respectively correspond to, signatures for how to identify such software and whether it has been updated already, where a corresponding update package is located, and so on.
The tool may also perform a process 158 for authoring a piece of software update metadata such as local update metadata 156. Although explained in detail later, this authoring process 158 involves creating a piece of update metadata and publishing it for public or private consumption. In the example in
A notable part of an update also defined by the user 200 is indicia of whether the software product or program to be updated is actually installed or present on the target computer. This information may involve any indicia of whether a program is installed; files, registry entries, installation packages, etc. Another important part of most updates is the signature by which the need for the update is identified; information indicating whether the update is applicable on the target computer. Thus, the create-update function of the tool also includes a step for defining 202 applicability rules; a signature for identifying whether the new update is applicable. Applicability rules may include information such as filenames, configuration data, file or library versions, or other indicia. These atomic pieces of information can be used to construct possibly complex applicability rules, which will be discussed in greater detail later with reference to
Referring again to
A user can also invoke 216 a publish function to publish update metadata to a local update management system. A path is specified 218 for where the updates will be published; a file or network path where a new update catalog will be sent to when it is published. Next, the updates (pieces of update metadata) are collected from the repository 214 and collated into an update catalog (e.g., update catalog <m4>156) which is published 222 to the specified 218 path or location. The catalog is published as XML or the like, and may conform to the same standard schema or format used by imported 212 update metadata (e.g. <ml> or <m2>) or authored 194-204 update metadata (e.g. <m4>156). When catalogs and update descriptions are standardized in this way, a published 222 catalog can not only be used for internal update scanning, but it can also be made available to other entities or institutions for them to import and incorporate into their own update catalog.
In another embodiment, updates are not separately imported and stored before a catalog is generated and published. Rather, when a publish-catalog function is invoked by a user, the tool then automatically imports whatever update metadata it is aware of (either by previous manual configuration or automatically based on prior import experience). Furthermore, merging of various imported and locally authored update metadata files can be done in any number of ways. With well constructed metadata, the update metadata can be essentially concatenated into one large metadata that becomes the update catalog. Or, update metadata can be processed to filter out updates that do not match certain filtering criteria such as specific applicability or prerequisite criteria. This criteria can even be subdivided, for example according to different subsets of client computers that will be scanned for updates, in which case multiple catalogs are published and distributed to respective parts of update management system 100.
Panel 352 shows an example of how an update package can be selected. An update package is the set of information that is used to actually upgrade or update a particular software product or program. An update package may include binary executable files to replace currently installed files, or replacement libraries, or binary segments to be patched into an existing program file, new registry entries, system configuration changes affecting the program or software product, or other parts used to run a program. As can be seen in panel 352, selecting a package can involve information on where a package is located, how it is applied, and so on.
Other interface features of the update creation process are not shown in
The prerequisite rules, applicability rules, and installed rules can be defined using a rule definition interface similar to those shown in
In sum, an update metadata catalog (whether built from imported and authored pieces of metadata, or whether written by hand), may include information about patches and applications, descriptive information such as what the update does, installation information such as how to install/uninstall the package for the update, scanning rules about whether the update is applicable to a particular machine (e.g., SQL server on XP Home Edition) and/or rules about whether the update is already installed, detection primitives such as MSI, MSP, or CBS based detection, Windows versions, files, registry data, WMI queries, and so on. These primitives can be built into complex detection rules using Boolean operators (and, or, not).
In conclusion, those skilled in the art will realize that storage devices used to store program instructions can be distributed across a network. For example a remote computer may store an example of a process described as software. A local or terminal computer may access the remote computer and download a part or all of the software to run the program. Alternatively the local computer may download pieces of the software as needed, or distributively process by executing some software instructions at the local terminal and some at the remote computer (or computer network). Those skilled in the art will also realize that by using techniques known to those skilled in the art, all or a portion of the software instructions may be carried out by a dedicated circuit, such as a DSP, programmable logic array, or the like.
All of the embodiments and features discussed above can be realized in the form of information stored in volatile or non-volatile computer or device readable medium. This is deemed to include at least media such as CD-ROM, magnetic media, flash ROM, etc., storing machine executable instructions, or source code, or any other information that can be used to enable or configure computing devices to perform the various embodiments discussed above. This is also deemed to include at least volatile memory such as RAM storing information such as CPU instructions during execution of a program carrying out an embodiment.