Provided is a method and mechanism for automating updating of computer programs. Conventionally, computer programs have been distributed on a recording medium for users to install on their computer systems. Each time fixes, additions and new versions for the programs were developed, a new CD or diskette was required to be delivered to users to enable them to install the update. More recently some software has been downloadable across a network, but the effort for users obtaining and installing updates and the effort for software vendors to distribute updates remains undesirable. The invention provides an updater agent which is associated with a computer program and which accesses relevant network locations and automatically downloads and installs any available updates to its associated program if those updates satisfy predefined update criteria of the updater agent. The updater agents are able to communicate with each other and so a first updater agent can request updates to programs which are prerequisites to its associated program.

Patent
   6199204
Priority
Jan 28 1998
Filed
Sep 22 1998
Issued
Mar 06 2001
Expiry
Sep 22 2018
Assg.orig
Entity
Large
450
24
all paid
1. A computer program product, comprising computer program code recorded on a computer readable recording medium, the computer program code comprising an updater component for use in updating one or more computer programs installed on a computer system connected within a computer network, the updater component including:
means for initiating access to one or more identifiable locations within the network where one or more required software update resources are located, to retrieve the required software update resources;
means for performing a comparison between software update resources available from said one or more identifiable network locations and computer programs installed on said computer system, to identify available relevant update resources, and for comparing the available relevant update resources with predefined update criteria corresponding to applicable software licence terms and conditions;
means for initiating retrieval of software update resources which satisfy said predefined criteria; and
means for applying a software update to one of the installed computer programs using the one or more retrieved software resources.
8. A method for automated updating of a computer program installed on a computer system connected within a computer network, including the following steps:
delivering to the computer system an updater component for use in updating the computer program;
providing at a first network location downloadable software resources for building said computer program from a current version to an updated version;
wherein the updater component is adapted to perform the following steps when executed on the computer system:
(a) initiating access to said first network location at which said software resources are located;
(b) performing a comparison between software resources available from said first network location and the installed computer program, to identify available relevant update resources, and comparing the available relevant update resources with predefined update criteria corresponding to applicable software licence terms and conditions;
(c) downloading onto said computer system the available relevant software update resources which satisfy the predefined update criteria;
(d) building said computer program from the current version to the updated version using the downloaded software resources.
2. A computer program product according to claim 1, wherein said means for applying software updates includes means for installing available relevant software resources in accordance with the predefined update criteria and in accordance with computer readable instructions for installation which are part of the software resources downloaded for the update.
3. A computer program product according to claim 1, wherein information for identifying one or more locations is held by said updater component and includes a product identifier of a computer program product, the updater component being adapted to provide said product identifier to a search engine, the product identifier serving as a search parameter for use by said search engine to identify network locations.
4. A computer program product according to claim 3, wherein said updater component is adapted to download a list of available software update resources and their pre-requisite software products in response to said search engine identifying network locations at which said list is held, to compare the list of available software update resources and pre-requisite products with computer programs installed on said computer system and, where updates to the pre-requisite products are required, to request updates to the pre-requisite products.
5. A computer program product according to claim 1, wherein the updater component has machine readable installation instructions for installing the updater component on a computer system, the installation instructions including instructions for registering the updater component with a repository which is accessible by other updater components, such that the updater component is identifiable and contactable by other updater components.
6. A computer program product according to claim 5, wherein the updater component includes an API via which updater components of complementary computer programs can request that the current updater component update its computer program, the current updater component being adapted to call an update method to update its computer program in response to an update request, and wherein the current updater component is adapted to send a system-generated request to updater components of pre-requisite computer programs of its computer program when updating of its computer program requires updating of said pre-requisite computer programs.
7. A computer program product according to claim 12, wherein said means for applying updates is adapted to install correction and enhancement software which modifies existing installed software and also to install upgraded versions of installed software which replaces installed software.
9. A method according to claim 19, including providing at a second network location, identifiable from information in the updater component, a computer readable list of available updates to said computer program, wherein the updater component is adapted to perform the following steps prior to accessing said first network location:
initiate access to said second network location to retrieve said list;
read said list and perform a comparison of the listed available updates with said computer program on said first computer system, thereby to identify the available relevant update resources.

The present invention relates to distribution of software via a computer network and to a mechanism for accessing software enhancements, corrections or new versions via a computer network. A `network` of computers can be any number of computers that are able to exchange information with one another, and may be arranged in any configuration and using any manner of connection.

Software has conventionally been distributed in the form of programs recorded on a recording medium such as a diskette or compact disk. Customers buy the recording medium and a licence to use the software recorded on the medium, and then install the software onto their computers from the recording medium. The manufacture and distribution of the pre-recorded recording media are expensive, and this cost will be passed on to the customer. Also, the effort for customers of ordering or shopping for the software is undesirable.

The distribution cost is particularly problematic because most software products are frequently updated, both to correct bugs and to add new features, after the software has been delivered to the user. Some types of software products are updated many times each year. The cost of sending a new diskette or CD to all registered customers every time the software is upgraded or corrected is prohibitive and, although many customers want their software to be the most up-to-date, highest performance version and to be error free, not all customers want to receive every update. For example, the vendor may charge more for updates than the customer wants to spend, or new versions may require upgrading of other pre-requisite software products which the customer does not want to buy, or migrating to new versions may require migration of data which would disable the customer's system for a period of time.

Thus, software vendors tend to publicise the availability of new versions of their software and leave it for the customer to decide whether to purchase the latest upgraded version. For some software products, however, it is appropriate for the software vendor to proactively send out upgraded versions, or at least error correction and enhancement code (known as "patches") for their software products. Whatever a particular company's policy, significant costs and effort are involved in releasing these various types of software updates.

Increasingly, software distributors are using the Internet as a mechanism for publicising the availability of updates to their software, and even for distributing some software. The Internet is a network of computer networks having no single owner or controller and including large and small, public and private networks, and in which any connected computer running Internet Protocol software is, subject to security controls, capable of exchanging information with any other computer which is also connected to the Internet. This composite collection of networks which have agreed to connect to one another relies on no single transmission medium (for example, bidirectional communication can occur via satellite links, fiber-optic trunk lines, telephone lines, cable television wires and local radio links).

The World Wide Web Internet service (hereafter `the Web`) is a wide area information retrieval facility which provides access to an enormous quantity of network-accessible information and which can provide low cost communications between Internet-connected computers. It is known for software vendors, customers who have Internet access to access the vendors' Web sites to manually check lists of the latest available versions of products and then to order the products on-line. This reduces the amount of paperwork involved in ordering software (and is equally applicable to other products). Some companies have also enabled their software to be downloaded directly from a Web site on a server computer to the customer's own computer (although this download capability is often restricted to bug fixing patches, low cost programs, and demonstration or evaluation copies of programs, for security reasons and because applying patches tends not to require any change to pre-requisite software or any data migration).

Information about the World Wide Web can be found in "Spinning the Web" by Andrew Ford (International Thomson Publishing, London 1995) and "The World Wide Web Unleashed" by John December and Neil Randall (SAMS Publishing, Indianapolis 1994). Use of the WWW is growing at an explosive rate because of its combination of flexibility, portability and ease-of-use, coupled with interactive multimedia presentation capabilities. The WWW allows any computer connected to the Internet and having the appropriate software and hardware configuration to retrieve any document that has been made available anywhere on the Internet.

This increasing usage of the Internet for ordering and distribution of software has saved costs for software vendors, but for many software products the vendor cannot just rely on all customers to access his Web pages at appropriate times and so additional update mechanisms are desirable.

As well as the problem of manufacture and distribution cost associated with distributing media, there is the problem that customers typically need to make considerable proactive effort to find out whether they have the best and the latest version and release of a software product and to obtain and apply updates. Although this effort is reduced when Internet connections are available, even a requirement for proactive checking of Web sites is undesirable to many users since it involves setting up reminders to carry out checks, finding and accessing a software provider's Web site, navigating to the Web page on which latest software versions and patches are listed, and comparing version and release numbers within this list with the installed software to determine whether a relevant product update is available and to decide whether it should be ordered. There may be an annoying delay between ordering an update and it being available for use, and even if the update can be downloaded immediately the task of migrating to an upgraded version of a software product can be difficult. If these steps have to be repeated for every application, control panel, extension, utility, and system software program installed on the system then updating becomes very tedious and time consuming. Therefore, manual updating tends not to be performed thoroughly or regularly.

There is the related problem that software vendors do not know what version of their software is being used by each customer. Even if the latest version of their software has been diligently distributed to every registered customer (by sending out CDs or by server-controlled on-line distribution), there is still no guarantee that the customer has taken the trouble to correctly install the update. This takes away some of the freedom of software developers since they generally have to maintain backward compatibility with previous versions of their software or to make other concessions for users who do not upgrade.

It is known in a client-server computing environment for a system-administrator at the server end to impose new versions of software products on end users at client systems at the administrator's discretion. However, this has only been possible where the administrator has access control for updating the client's system. This takes no account of users who do not want upgrades to be imposed on them.

Yet a further related problem is that software products often require other software products to enable them to work. For example, application programs are typically written for a specific operating system. Since specific versions of one product often require specific versions of other products, upgrading a first product without upgrading others can result in the first product not working.

"Insider Updates 2.0" is a commercially available software updater utility from Insider Software Corporation which, when triggered by the user, creates an inventory of installed software on a user's Apple Macintosh computer and compares this with a database of available software update patches (but not upgraded product versions) and downloads relevant updates. "Insider Updates" shifts the responsibility for finding relevant updates from the user to the database maintainer, but the access to update patches is limited to a connection to an individual database and the tasks of scanning the Internet and on-line services to find updates and of maintaining the database of available updates require significant proactive effort. "Insider Updates" does not install the updates or modify the user's software in any way. "Insider Updates" does not address the problem of unsynchronised prerequisite software products.

A similar product which scans selected volumes of a computer system to determine the installed software and which connects to a database of software titles for the Apple Macintosh, but does not download updates, is Symmetry Software Corporation's "Version Master 1.5".

An alternative update approach is provided by "Shaman Update Server 1.1.6" from Shaman Corporation, which consists of: a CD-ROM (updated and distributed monthly) that users install on a PowerMac file server; client software for each Macintosh computer to be inventoried and updated; and means for accessing an FTP site storing a library of current updates. "Shaman Update Server" creates an inventory of networked computers and downloads and distributes latest versions of software to each computer. Network administrators centrally control this inventory and updating process. The distribution of CD-ROMs has the expense problems described earlier.

According to a first aspect of the invention, there is provided an updater component for use in updating one or more computer programs installed on a computer system connected within a computer network, the updater component including:

information for identifying one or more locations within the network where one or more required software resources are located;

means for initiating access to the one or more locations to retrieve the one or more required software resources; and

means for applying a software update to one of said installed computer programs using the one or more retrieved software resources.

An updater component according to the invention preferably controls upgrading of, and fixing of bugs within, an associated software product or products automatically without requiring any interaction by the user after an initial agreement of update criteria. The update criteria can be associated with the products' licensing terms and conditions. This ensures that users who adopt a suitable update policy can always have the most up-to-date software available, with errors being corrected automatically from the viewpoint of the user. The user does not need to know where software updates come from, how to obtain them or how to install them since the update component takes care of this. The software vendor avoids having to ship special CDs or diskettes to correct errors or provide additional features; the vendor can easily release code on an incremental basis such that customers receive new product features sooner and with no effort.

An updater component according to a preferred embodiment of the invention performs a comparison between available software updates and installed software on the local computer system to identify which are relevant to the installed software, compares the available relevant updates with update criteria held on the local computer system (these update criteria are predefined for the current system or system user), and then automatically downloads and applies software updates which satisfy the predefined criteria.

This automatic applying of software updates preferably involves installing available software patches and/or upgraded versions in accordance with both the predefined update criteria and instructions for installation which are downloaded together with the program code required for the update. This feature of executing dynamically downloaded instructions provides flexibility in relation to the types of updates that can be handled by an updater component. It can also be used to enable a single generic updater component to be used with many different software products. Alternatively, the installation instructions for certain software updates may be pre-coded within the updater component. The "software resources" are typically a combination of program code, machine readable installation instructions and any required data changes such as address information.

The information for use in identifying a network location may be explicit network location information or it may be a software vendor name or any other information which can be used as a search parameter for identifying the location. In the preferred embodiment, the information is a product identifier which is provided by the updater component to a search engine to initiate a search to identify the relevant network location at which are stored the software resources for implementing updates to that product. This search may be performed by a conventional Internet (or other network) search engine which is called by the updater component. When the search engine returns an identification of the network location, the updater component retrieves from this location a list of available relevant updates, checks the list against the locally held software product version and against predefined update criteria, and retrieves the update resources onto the local computer system if those criteria are satisfied.

According to a preferred embodiment of the invention, a standardised naming convention is used for software resources from which to build software updates, and the updater component can search for these resources on a Network Operating System filesystem. This allows software resources to be stored at multiple locations to mitigate against network availability problems and makes it easier for developers and distributors to provide their error-fixing patches and upgraded versions of software products. For example, a developer can make new software updates available via a public network disk drive on their LAN using a known filename or via a published Uniform Resource Locator (URL) which can be searched for using known key words.

Updater components are preferably an integral part of the products they will serve to update. Hence, the updater component is distributed to software users together with an initial version of a software product, the updater component then automatically obtaining and applying software updates in accordance with preset criteria (such as a time period between successive searches for updates, and whether the particular user has selected to receive all updates or only certain updates--such as to receive updating patches but not replacement product versions for example).

The updater component's update capability preferably includes updating itself. Indeed, the update criteria may be set such that the updater component always accesses appropriate network locations to obtain updates to itself before it searches for software resources for updating its associated software products.

An updater component according to the invention preferably includes means for checking whether pre-requisite products are available, and are synchronised to the required version, as part of the process of selecting an update path for the current product. In a preferred embodiment, as well as checking their availability, the updater component is capable of instructing the updater components associated with pre-requisite software products to initiate updates to their software where this is the agreed update policy. If each software product's updater component is capable of triggering updates to pre-requisite products, then updates can ripple through the set of installed software products without the user having to be involved in or aware of the updates. This capability is a significant advantage over prior art updater agents which do not deal with the problem of unsynchronised software versions when one updates, and supports the increasing trend within the software industry for collaboration between distributed objects to perform tasks for the end user.

The updater component preferably also includes a mechanism for verifying the authenticity of downloaded software, using cryptographic algorithms. This avoids the need for dedicated, password-protected or otherwise protected software resource repository sites. The software resources can be anywhere on the network as long as they are correctly named and or posted to the network search engines.

Thus, the present invention provides an agent and a method for obtaining and applying software updates which significantly reduces the cost and effort for software distributors of distributing and tracking software updates and significantly reduces the effort for system administrators and end users of applying updates to installed software.

The present invention will now be described in more detail, by way of example only, with reference to the accompanying drawings in which:

FIG. 1 is a schematic representation of a computer network including a local computer system having an installed updater component, server computers storing lists of available updates and storing software resources for applying updates, and a search engine for locating the servers;

FIG. 2 is an example of a software vendor's list of their software versions and the resources and prerequisites for building from one version to another;

FIG. 3 represents the sequence of operations of an updater component according to an embodiment of the invention; and

FIG. 4 is a further representation of the sequence of operations of an updater component.

As shown in FIG. 1, an updater component 20 is installed in system memory of a conventional network-connected computer system 10, together with an associated computer program 30. The updater component may have been delivered to the user of the local computer system on a storage medium (diskette or CD) for him to install, or it may have been explicitly downloaded from another computer system. In preferred embodiments of the invention, updater components are integrated within the computer program they are intended to maintain (or are otherwise delivered via the same mechanism and at the same time as their associated program). The updater component is then installed as part of the installation procedure of its associated program, such that the user is not required to take any special action to obtain or activate it. The installation of each updater component includes the updater component registering itself with the operating system (more generally, updaters register with a repository 40, which may be central or distributed), such that at least the updater components on the local system are identifiable and contactable by address information, and/or their product identifier, within the register entry.

It is a feature of the preferred embodiment of the invention that each updater component can locate, can be located by, and can communicate with other updater components which manage other software products. This capability is used when one updater component requires another one to update to a specific level before the former can execute its own update, as will be discussed below. This is enabled by the updater components registering within the operating system or other repository 40.

In the preferred embodiment, each registration entry contains two items: the updater path and the updater network address. The path is the location of the updater component binary file so that the updater component can be launched by the operating system during the boot up process. This ensures that the updater component is always active and ready to perform work or handle requests issued to it from other updater components. The network address is the address used by components on other computer systems in the network to locate it on the network and to communicate with it.

An example of such registration using a UNIX (TM) operating system and the TCP/IP protocol suite uses the following naming convention for updater components: SoftwareVendorName+_product_name+_updater.

Path registrations can be entered in the UNIX/etc/inittab file to store the path entry. When, for example, the updater component for IBM Corporation's DB2 (TM) database product is installed it will add an entry to the /etc/inittab file of the form:

ibm_db2pe_updater:2:respawn:/usr/abin/db2_updater_binary

Every time the computer system reboots it will read this file and launch the DB2 updater component. The "respawn" keyword in the updater entry ensures that, should the updater component process fail for some reason during general system operation, it will be restarted by the operating system automatically. This approach will ensure that all updater components for all installed applications are always active.

Network Location registrations can be entered in the UNIX/etc/services file. For example when the DB2 updater component is installed it will add an entry to the /etc/services file of the form:

ibm_db2pe_updater 5000/tcp #net location of DB2 updater component

When another updater component wishes to communicate with the DB2 updater component it will find it by searching this file for the DB2 updater component name ibm_db2pe_updater (actually done indirectly by the UNIX call getservbyname()--the name is built by the caller according to the standard naming convention). When it is found it knows that the DB2 updater is listening for connections on port number 5000 and will use the TCP protocol. This allows the updater component in question to establish a link to the DB2 updater component and start a conversation (described later).

For an updater component to find and talk to another updater component on another remote machine the above information would have to be augmented by having a repository 40' which is accessible from both machines (preferably a central or distributed database accessible from anywhere in the network, such as a Web Page or pan-network file) and is available to all updater components that require it. Entries would be of the form updater_name machine_ip_address (OR DNS entry), port number, protocol.

For example, the manufacturing department of an organisation may have three computer systems on which distributed software products collaborate with each other, the systems being called a, b and c. Typical entries in the Web page or file manufacturing_collaborators.html might be:

ibm_catia_updater a.manufacturing.com 5000 tcp

ibm_db2pe_updater b.manufacturing.com 5100 tcp

ibm_cics_updater c.manufacturing.com 4780 tcp

An updater component can then connect and talk to any other updater component using the DNS name to create an IP address and the port number which the remote updater component is listening to at that address.

The steps of updater registration at installation are therefore:

1) Create entry in /etc/inittab file (register updater process code location)

2) Create entry in /etc/services file (register updater process local address)

3) Create entry in central database file (register updater process pan-network address).

The installation process may also involve providing to the updater component the local IP address of a Web proxy server. It will be clear to persons skilled in the art that many alternative registration implementations are possible.

Updater components include data fields for an identifier and version number for their associated software products. The updater components may be delivered to customers with these fields set to null values, and then the installation procedure includes an initial step of the updater component interrogating its software product to obtain an identifier and current program version and release number. Alternatively, the software vendor may pre-code the relevant product ID and version number into the updater component.

The system 10 of FIG. 1 is shown connected within a network 100 of computers including a number of remote server systems (50,50') from which software resources are available for applying updates to programs installed on the local system 10. Each server system includes within storage a list 60 of the latest versions of, and patches for, software products which are available from that server. Each vendor is assumed here to make available via their Web sites such a list 60 of software updates (an example of which is shown in FIG. 2) comprising their product release history, in a format which is readable by updater components, and to make available the software resources 70 required to build the releases from a given level to a new level (this transition from a software product release to a new level will be referred to hereafter as a `growth` path). The entries in the software updates list 60 include for each software product version 110 an identification 120 of the software resources required for applying the update and an identification 130 of its prerequisite software products and their version numbers. In some cases, the required resources are complete replacement versions of software and associated installation instructions. In other cases, the resources comprise patch code for modifying an existing program (e.g. for error correction) and the patch's installation instructions.

For the current example, we will assume that the network 100 is the Internet, although the invention may be implemented within any computer network. Also shown within the network 100 is a server system 80 on which a search engine 90 is installed for use in finding update source locations on the network. This is shown located remotely from the local system 10, although it need not be. In the Figure, each updater component 20 is shown associated with a single program 30, and it is a feature of this embodiment of the invention that all installed software products have associated updater components which manage them, but neither of these features is essential to the invention as will be explained later.

The operation of an updater component will now be described, with reference to FIGS. 3 and 4. When an installed updater component executes, its first action is to initiate 200 a search for available updates to the particular software product, providing to one or more search engines 90 as search arguments the product identifier and product version release number obtained at install time. Assuming that software vendors provide via their Web sites a list 60 of available product updates referenced by product identifier and release number 110 (or some other consistent naming convention is used), the search should identify the relevant Web site 140 on which update information is available. If the initial attempt to start a search engine is unsuccessful, then the updater component will attempt to start a different search engine (which may be in a different geographical location to the first), but could alternatively wait for a preset time period and then retry. A URL identifying the relevant Web site 140 for update information is returned 210 to the updater component as a result of the search.

The updater component uses the URL to access 220 the list 60 and downloads 230 a file 160 comprising the portion of the list 60 of available updates which relates to the particular product. The updater component then performs steps 240-280 as shown in FIG. 4. Each file 160 contains message digests (e.g. MD5) which are digitally signed. The retrieved file 160 is then analyzed 240 using a digital signature checking algorithm (such as the algorithm described in U.S. Pat. No. 5,231,668). This is important to verify that the file 160 represents the correct software updates list for the particular software product, and that the file has not been tampered with since signing. Also, checking for the digital signature is a useful way of filtering the results of the search since these may include a plurality of Web page URLs other than the correct one (the search may find other pages which have a reference to the named product version, including pages not published by the software vendor). If an attempt to download and verify a file is not successful, then the updater component moves on to the next URL found in the search.

The updater component then performs on the local computer system a comparison 250 between the current installed software product's identifier and release number and the listed available updates in the retrieved file 160. This comparison determines possible growth paths from the current to updated versions, but these possible growth paths are then compared 260 with predefined update criteria, and any possible paths which do not satisfy the update criteria are discarded. Thus, the updater component determines whether it is possible to migrate from a current software product to the available new versions and whether it is possible to apply patches to the current version under the currently agreed licence terms and conditions.

For example, the software product licence may enable migration to any future version of the product and application of any available patches, or only migration up to a specified version, or it may only permit applying of available patches which modify or correct errors in the current version. Possible update paths which are unavailable due to current license limitations are notified 270 as a system generated message sent to the software asset manager (who may be an end user or IT procurement manager) of the currently installed version, to enable them to make decisions about whether the current licence is adequate.

As well as licence restrictions as to the updates that are possible, an updater component's update criteria or growth policy includes a cycle period (for example weekly or monthly) and criteria for determining which of a plurality of possible growth paths to select (such as always select latest version permitted by licence, or always select latest patch and only notify availability of new versions, or only select new versions if prerequisite software is already available on local system). The growth criteria may also include control information such as when to upgrade to new versions that are downloaded by the updater component--if data migration is required when migrating to a new software product version it may be essential for this to be done outside of office hours or only at a single scheduled time each month or each year and this can be controlled by the updater component.

The growth policy definition may also include a parameter determining that updating of pre-requisite software products should be requested when required to maintain synchronisation with the current product. This will be described in more detail below. Persons skilled in the art will appreciate that there is great flexibility in the criteria that can be set and applied by the updater component.

The updater component then decides 280 on a particular growth path (i.e. which available version to upgrade to) from the set of possible growth paths using the update criteria. For example, the updater component may select the highest possible version or release number of the available updates which is permitted by the update criteria, if that is the update policy.

The updater component performs 290 (see FIGS. 3 and 4) a scan of the operating system file system to check whether the required software resources are already available on the local computer system. The required resources are the software update artifacts required to bring the current application software to the new level, and the software updates required for updating pre-requisite software to required levels. Each updater component associated with pre-requisite installed products is contacted 300 to ensure (a) that it is installed, and (b) that it is at or greater than the required pre-requisite level. If all required resources are available locally or on another machine (in the case of software relying on some pre-requisite software operating on a remote machine), and have been verified, then the updater component progresses to the step 310 (see FIG. 4) of building the updated software version. If not, the update component must obtain the required resources.

As shown in FIGS. 3 and 4, if required software resources for building the updated version are not found on the local system, the updater component submits 320 a further request to one or more search engines to find the required resources. The search engine returns 330 one or more URLs and the updater component uses these to retrieve 340,350 the software resources into storage of the local computer system. At this stage, the updater component or the user need not have any knowledge of what corrections or enhancements may be included in the new version--the update criteria determine what type of updates are required such that the user is spared the effort of studying the content of every update. In practice, it is desirable for users to be able to determine the effects of updates and so the software resources for the update include a description of these effects which a user or administrator can read.

As examples, the software product to be updated may be a word processor application program. If the word processor as sold missed certain fonts or did not include a thesaurus, patches may subsequently be made available for adding these features. The updater component has the capability to add these to the word processor, subject to the update criteria.

In alternative embodiments of the invention, the search for required software resources is unnecessary following the initial search for the updates list (or is only necessary where there are pre-requisite software products as well as patches or new versions for the current product--see below). This is because the update software resources required directly by the current product are stored in association with the list of required resources. That is, the list includes a pointer to the network location of the required resources such that a selection of a growth path from the list involves a selection of a pointer to the network location of the required updates (and possibly also pointers to the locations of pre-requisite software products).

A second verification by digital signature checking is performed 360 (see FIG. 4), this time on the downloaded resources. After verifying 360 the legitimacy of the downloaded resources, the updater component automatically builds 310 the installation in the target environment in accordance with the update policy. In practice, this may require information from the user such as an administration password, or a database usage parameter value, but in the preferred embodiment of the invention installing of the downloaded code is automatic in the sense that it does not require the user to know or obtain from elsewhere any installation information and in that it generally enables the user to be freed from making any decisions at run time if the predefined update criteria enable the updater component to automatically apply updates.

It is well known to include machine readable installation instructions encoded in a shell (for example as Script, or an interpretive language such as PERL, or an executable such as setup.exe in the case of applications on Microsoft's Windows (TM) operating system). Updater components according to the invention will download 350 the machine readable instructions together with the relevant software resources and will automatically execute them 310. The updater component thus automatically processes installation instructions, avoiding the input from a person which is conventionally required. The Scripts can be adapted to reuse information gleaned from the first human installer who installed the first version of the updater component (for example, information such as user name and password of application administrator, installation directory, etc).

The method of updating according to the preferred embodiment of the invention requires software vendors to organise the software resources required to build from one product level to another. For example, a move from version 1.1.1 to 1.1.4 would typically include a series of patches to be applied, and the required order of installation if any would advantageously be encoded in machine processable installation instructions. The user is then spared the effort and the risk of human error which are inherent in methods which require the user to control the order of application of fixes and enhancements. The problem of how to migrate from one product level to another is thus dealt with by the software vendor instead of the customer, and updater components can only move to levels supported by the vendor (i.e. those growth paths published by the software vendor for a specific existing product level).

The updater generates 380 a report and writes 390 to log records, and then quits execution 400 (in the preferred embodiment the updater goes into a sleep or idle state) until activated again 410 upon expiry of a predetermined update cycle period (the repeat period parameter is configured when the updater component is installed).

Structure of Updater Component

The structure of an updater component comprises data, methods for operating on that data, and a public application programming interface (API) which allows other updater components to contact and communicate with it. This structure will now be described in detail.

UPDATER COMPONENT DATA:

The updater component includes the following persistent data:

Product_ID: an identifier of the software product which is managed by this updater component

Current_Installed_Version: a version identifier for the installed software (e.g. version 3.1.0)

Current_License: a version identifier corresponding to the software product version up to which the current software license allows the user to upgrade (e.g. version 4∅z). Alternatively, this may be a licence identifier (e.g. LIC1) for use when accessing machine readable licence terms.

Installation_Environment:

a list of attribute name/attribute value pairs.

This is used by the updater component to store values entered by the user when the updater was used for the first time. For example, the updater installation userid and password, possibly the root password, the installation directory, the web-proxy server address, search engine URLS, log file name, software asset manager e-mail address etc. This data will be re-used when subsequent automatic updates are required.

Growth policy parameters:

a. Growth_Cycle: data determining whether the updater component should attempt to update its software product every day, week or month, etc.

b. Growth_Type: data determining whether the updating is limited to bug fixing and enhancements (i.e. patches) only or requires upgrading to the latest release in each growth cycle.

c. Force_Growth: (YES/NO) a parameter determining whether to force other software resources to upgrade if that is a pre-requisite for this software to upgrade. (Some implementations will provide more flexible controls over forcing other software to update than this simple YES/No)

Last_Growth_Time: Date and time when updater component last executed

The updater component also includes the following non persistent data:

Possible_Growth_Paths:

transient data representing the available upgrade paths (e.g. version numbers 3.1.d, 3.2.e, 4∅a)

PRIVATE UPDATER FUNCTIONS:

The updater component logic includes the following methods:

Discover_Possible_Growth_Paths()

Search for Growth_Path information for this software product on the Internet (or Intranet or other network). This search method initiates a search via a standard search engine server. The information returned is a list of newer versions and associated pre-requisite product information.

The Growth_Path information is then reduced in accordance with the Growth policy parameters. For all members in the Growth_Paths list, a check is performed of whether appropriate versions of pre-requisite products are available on the local and/or remote computer. The updater components managing these pre-requisite products are accessed and forced to grow if this is the policy.

If all pre-requisite products exist locally at the correct level, or are available remotely on the network and there is with a "force growth" policy, then identifiers for newer versions of the software product are added to the Possible_Growth_Paths list.

Decide_Growth_Path()

Interpret the growth policy and select a single growth path. Some implementations of the invention will involve user interaction to select the path, for example if there are considerations such as whether to force updates to other programs.

Get_Resources(Parameter: Chosen_Growth_Path)

Given Chosen_Growth_Path (e.g.3.2.0), search for required resources (Parameters Product_ID, Current_Installed_Version, Chosen_Growth_Path), download all resources to local computer. This will include software required for the new version plus machine processable installation instructions.

Install_Resources()

Process installation instructions including installing required files in correct locations, possibly compilation of the files and modifying the configuration of the existing system to accommodate the software, logging all actions to a file (and enabling an "uninstall" method to undo all actions).

Grow()

Initiates methods:

Discover_Possible_Growth_Paths()

if no possible growth paths exist then updater component becomes idle else

Decide_Growth_Path()

Get_Resources(Parameter: Chosen_Growth_Path)

Install_Resources().

Then Growo writes all completed actions to log and finishes execution of the updater component. The updater component becomes idle either until time to check again for new update requirements or until prompted by another updater component to do so.

PUBLIC UPDATER COMPONENT API:

The updater component includes the following public API. These functions would be callable using existing network communications software, such as remote procedure calls, message oriented middleware, ORB (Object request broker), etc.

Get_Release()

This function is called by other updater components and returns the release level of the product managed by this updater component.

Update(new_level)

Other updater components call this function to move the product managed by this updater component to a new level indicated by the new_level parameter value. This will call the private function Grow().

Receive_Event(event details)

When an updater component receives a request to update, it must inform the calling updater component when it has completed the update or otherwise e.g. if it failed for some reason. The updater component performing the update on behalf of another updater component will call this function of the requesting updater component to communicate success of the update or otherwise. Event details can be a string like "product id, new release level, ok" or "product id, new release level, failure".

The automatic handling of the potential problem of unsynchronised pre-requisite products by enabling forcing of updates (or, if forcing of updates is not part of the update policy, sending of notifications to the software asset manager) is a significant advance over prior art update schemes.

Since the updates list file 160 returned to the updater component in response to an initial search includes an identification 130 of pre-requisite software, that information enables the aforementioned examination 290 of the updater component registration database 40,40' to check whether pre-requisite software is available locally or remotely. If it finds all the updater components located locally or remotely, it can be sure that the software pre-requisites are available and it next needs to contact each updater component for each software product to be sure all pre-requisites are at the correct level. If an updater component 20' having a required product identifier for pre-requisite software 30' but not having the required version number is found locally or remotely, and if forcing of updates is the update policy, then the updater component 20 of the first computer program contacts 300 this pre-requisite updater component 20' and requests that it attempt to update its associated pre-requisite software product 30'. This updater component 20' can, if necessary, request other updater components of its pre-requisite software to update their versions, and so on.

If at some stage no relevant updater component is found locally or remotely, then a message is sent to the asset manager to inform him/her of the requirement for a new product in order to grow the associated product further. If at some stage during the chain of updater requests to grow to a new level one updater component fails to move to the required level then this failure is reported back to its calling updater component, prompting failure of that components update operation, and so on back to the updater component which initiated the whole transaction.

Thus, as well as their autonomous behaviour defined by their update criteria, updater components can react to external stimuli such as requests from other updater components.

An example of the implementation of update synchronisation between two products will now be described. This example shows how one updater component can communicate with another to synchronise pre-requisite software so that all products are present and at compatible release levels.

A CORBA (Common Object Request Broker Architecture) ORB (Object Request Broker) is used for location of and communication between two updater components. Using the above public API it is a simple matter for those familiar with the art of CORBA programming to develop communication code so that one updater component can talk to another updater component anywhere on a network. In this example the component updater registration database 40 is a directory or folder available over the network (e.g. via NFS) which contains for each installed updater component a file called "updater-component_name.iop" (iop stands for interoperable object reference).

This file contains a sequence of bytes which can be converted into a reference to the updater component by any updater component which reads the file using for example the CORBA function:

CORBA::Object::_string_to_object() in C++

Furthermore this reference can be to an updater component anywhere on the network as it represents a unique address for the corresponding updater component. When updater component A has manufactured a reference to updater component B then updater component A can call a public API function simply by using, for example, a C++ mapping A→Get_Release() which will then return the value of the release level of the software managed by the A updater component.

In this example we will consider two products--IBM Corporation's DB2 database product and a Query Tool called "Query Builder", on different machines M and N respectively. (Machines M and N could be the same machine; the present example merely shows that they may also be separate). Both products have updater components which use a CORBA ORB architecture as briefly outlined above. An ORB communication daemon is active on participating systems M and N.

Step 1) Registration Phase:

The DB2 Updater Component starts when the operating system starts on system M and immediately creates a file called ibm_db2_updater.iop (according to some naming standard used to aid subsequent searches for the file) in the network file system folder or directory. This directory could be hosted on any machine and not necessarily M or N. The file contains a series of bytes which can be used to manufacture a reference to the updater component.

[pseudocode]

Filehandle=open("/network/filesystem/directory", "ibm_db2_updater.iop");

ReferenceBytes=CORBA::Object::_object_to_string();

Write(FileHandle, ReferenceBytes);

close(Filehandle);

QueryBuilder Updater component starts and writes its registration to the same directory or folder, again in this case calling the file ibm_querybuilder_updater.iop.

At this stage both updater components are active and have registered their presence and location in the network directory.

Step 2).

QueryBuilder attempts to grow from version 1 to version 2 but a prerequisite is DB2 version 2.1 or higher. The following sequence of actions will occur. QueryBuilder is denoted QB and DB2 as DB2.

QB: searches for file ibm_db2_updater.iop (file name manufactured according to standard) in network directory. It finds the file, reads it and converts it to a usable reference.

[pseudocode]

if (dbref=CORBA::Object::_string_to_object(readfile(ibm_db2_updater.iop)))

then SUCCESS we have connected to the updater else

FAIL: Prerequisite software does not exist in set of collaborating systems--send e-mail to software asset manager to notify situation.

Give up on trying to grow to new version.

endif.

Step 3).

At this stage we know that DB2 exists somewhere in our set of networked computers. Now we need to know if it is at the right level. We simply do this by executing its public API function Get_Release() defined above, from within the QB updater, the QB updater is therefore a client requesting the DB2 updater to do something for it, i.e. tell it what release it is.

[pseudocode]

db2_release=dbref→Get_Release();

Let us say this returns the value "2.0".

Step 4)

Client Side:

The QB Updater Component knows that this is not sufficient , it requires version 2.1. It examines its Force_Growth parameter which is, for example, "YES" meaning it should force pre-requisite software to grow to the level required before it can perform its own update procedure. Therefore the QB updater tells the DB2 updater to grow to the new release, and then waits until the pre-requisite has grown to the new release or failed in doing so.

[pseudocode]

dbref→Update("2.1", QBref); // QBref is a ready made reference to the // QB Updater. It is passed to the DB2 updater so that // it can quickly send the results, success or failure, // when the DB2 Updater has finished trying to update // itself.

EVENT=null;

While (EVENT equals null)

{do nothing;}

if (EVENT equals "SUCCESS")

then attempt to grow software managed by this updater component i.e. Query Builder.

else

Write failure to log;

do not attempt to grow;

go to sleep and try later;

endif.

Server Side:

The DB2 Updater component receives the request to grow. Which it attempts to do.

It reports the result to the calling client (it knows how to contact the calling client as it is receives a reference to the caller in the function call.)

[pseudocode]

DB2 attempts to grow.

if Growth Successful then

QBRef→Receive_Event("SUCCESS"); // Note the implementation of the // function Receive_Event simply sets the variable // called EVENT in the QB Updater component to the // value of the parameter passed in the API call , i.e. // "SUCCESS" if in this section of the IF statement.

else

QBREF→Receive_Event("FAILURE");

end if

As noted previously, predefined update criteria may determine which of an available set of updates should be applied and which should be disregarded. The update criteria may include an instruction to the updater component to send a notification to the end user or system administrator when a software update is identified as being available but applying this update is not within the update policy or is impossible. One of the examples given previously is that the update policy may be not to install full replacement versions of software products since that may require upgrading of pre-requisite software products or migration of data (for example if the software product is a database product), whereas it may be intended policy to install any error-correction patches. Notification rather than automatic installation of updates may also be implemented where to upgrade one product to a new version would require upgrading of other pre-requisite complementary products.

The update policy can also determine the degree of automation of the updating process, by defining the circumstances in which the updater requests input from the user or administrator.

The execution of a particular example updater component will now be described in more detail by way of example. This updater component's function is to keep an installed product called "Test" totally up-to-date with all released patches, but not to install replacement versions of Test. Firstly, the updater component is configured with the following data instantiations:

Product_ID: Test

Current_Installed_Version: 1∅a

Current_License: LIC1

Installation_Environment:"USERID:TestOwner,

USERPASSWORD:easy"

"INSTALLPATH: /usr/bin/testapp/"

Growth_Cycle: weekly

Growth_Type: patches, latest, automatically

Force_Growth: no

Last_Growth_Time: Monday Aug. 10, 1997.

The updater then executes weekly, for example each Monday night at 3 am (it is the system administrator who decides the timing).

The following represents a possible execution trace for this example updater component.

Step 1) The Growth Cycle Starts:

>>>> START: Discover_possible_Growth_Paths()

* Execute search on remote search engine (e.g. Internet Search Engine) using Phrase ("IBM Test 1∅a Growth Paths")

Search returns URL published by software vendor outlining current growth paths for product;

* Download URL:

File contents are:

"1∅b,none; 2.0, other_required product_product_id 1∅c;"

* Authenticate URL file using hashing algorithm and digital signature.

If not authentic, return to search for another URL matching criteria

* Build growth_path_list: growth_path list="1∅b,none;

2.0, other_required_product_id 1∅c;"

* Remove all but patch level increases (according to Growth_Policy) from Growth_path list (i.e. only those with the first version and second release number matching 1.0).

* growth_path list="1∅b, none;"

* For all members in list, ensure prerequisites exist. In this example, all members of list meet this criteria trivially.

* Place candidate growth_paths into Possible_Growth_Paths list=1∅b

<<<< END: Discover_possible_Growth_Paths()

Step 2) Next the updater component decides on the Growth Path to pursue:

>>>> START Decide_Growth_Path()

* The growth policy dictates that we should grow to latest patched

revision. (In this example, determining the latest revision is trivial i.e. it is 1∅b)

* chosen_growth_path=1∅b

<<<< END: Decide_Growth_Path()

Step 3) The updater component then obtains the required resources to revise the current software level to the new one.

>>>> Get_Resources()

* Execute search on remote search engine (e.g. Internet Search Engine) using Phrase ("IBM Test REVISION 1∅a to 1∅b

RESOURCES").

* Search returns URL say

ftp://ftp.vendor-site/pub/test/resources/1∅a-b"

* Updater downloads file pointed to by URL and places in secure holding area where it verifies authenticity.

* Updater verifies authenticity (using, for example, digital signatures based on RSA algorithm, or any method)

If files not authentic, then return to search (see Note 1 below)

* Updater unpacks resources into a temporary directory (see Note 2

below). These resources include machine processible installation

instructions (for example, instructions written in a script

language such as a UNIX shell script or MVS REXX) and files

(either binary or requiring compilation) which actually contain

the software fix.

<<<< END: Get_Resources()

Notes on above tasks

Note 1--To save time the updater looks for a standard file before downloading the URL called "signature", which contains the URL

ftp://ftp.vendor-site/pub/test/resources/1∅a-b and a listing of its contents. This is hashed and signed. Using this signature, the Updater component can quickly establish authenticity of the URL (to some extent) before downloading it and use the information i.e. file listings to corroborate the final downloaded resources after they have been unpacked into the temporary directory. When the final URL is downloaded it is also checked again for authenticity (to guard against someone placing a bogus artefact in an authentic URL location).

Note 2--Part of the unpacking is that the updater component will examine the installation scripts and modify them based on the contents of its installation environment data where required. For example if the installation instructions were coded in a shell script it will replace all instances of INSTALLPATH with the token "/usr/bin/testapp/". Again Naming conventions of attributes are standardised as it the method of token substitution in installation instructions. This makes totally automatic installation possible.

Step 4) The updater component then implements the actual software upgrade:

>>>> START Install_Resources()

* execute the installation instructions.

* update the values of

Current_Installed_Version=1∅b

Last_Growth_Time =Date+Time.

* send an e-mail to software asset manager informing of

installation and whether or not a reboot of the Operating System

or restart of the application is required before the upgrade takes affect.

<<<< END Install_Resources()

This is the end of this current growth cycle. The seed updates the Last_Growth_Time value the current time and then exits. The time taken for this cycle could be anything from a few seconds where the updater component found no upgrade paths for the currently installed version to several hours if a totally new release from the current one is to be downloaded and installed together with new pre-requisite software.

An alternative to the embodiment described above in detail does not require an independent updater component for every different software product, but uses a single generic updater component installed on a system together with product-specific plug-in objects and instructions which are downloaded with each product. These objects interoperate with the generic code to provide the same functions of the product-specific updater components described above. It will be clear to persons skilled in the art that the present invention could be implemented within systems in which some but not all application programs and other software products installed on the system have associated updater components, and that other changes to the above-described embodiments are possible within the scope of the present invention.

Donohue, Seamus

Patent Priority Assignee Title
10007506, Apr 11 2006 International Business Machines Corporation Workstation uptime, maintenance, and reboot service
10013705, Nov 22 1999 Accenture Global Services Limited Increased visibility during order management in a network-based supply chain environment
10045203, Aug 27 2016 Verizon Patent and Licensing Inc Enterprise software/firmware management and distribution
10140134, Jan 12 2012 Red Hat, Inc. Management of inter-dependent configurations of virtual machines in a cloud
10191730, Aug 13 2013 Huawei Technologies Co., Ltd. Application upgrade method and apparatus
10348804, Dec 20 2002 Qualcomm Incorporated System to automatically process components on a device
10367917, Oct 01 2002 Apple Inc. Method and apparatus for dynamically locating resources
10423402, Apr 11 2006 International Business Machines Corporation Workstation uptime, maintenance, and reboot service
10602348, Jan 31 2002 Qualcomm Incorporated System and method for updating dataset versions resident on a wireless device
10649761, Aug 13 2013 Huawei Technologies Co., Ltd. Application upgrade method and apparatus
10671373, Dec 30 2018 Microsoft Technology Licensing, LLC Mechanism for automatically incorporating software code changes into proper channels
10838714, Apr 24 2006 ServiceNow, Inc Applying packages to configure software stacks
10855829, Oct 31 2012 Hewlett Packard Enterprise Development LP Zero touch provisioning
10970064, Jul 28 2020 Bank of America Corporation Dynamically updating a software program to resolve errors
11070658, Oct 31 2012 Hewlett Packard Enterprise Development LP Zero touch provisioning
11076507, May 15 2007 Schneider Electric IT Corporation Methods and systems for managing facility power and cooling
11099979, Oct 31 2019 International Business Machines Corporation Testing and modifying calendar and event sensitive timer series data analytics
11106450, Sep 28 2018 GETAC TECHNOLOGY CORPORATION Information extraction apparatus, and automatic firmware update system and method for embedded system
11210080, Apr 11 2006 International Business Machines Corporation Workstation uptime, maintenance, and reboot service
11392365, Dec 14 2020 International Business Machines Corporation Optimizing device update scheduling
11394789, May 08 2019 Hewlett Packard Enterprise Development LP Seamless migration of a network management system deployment to cloud-based deployment
11442848, Jun 18 2020 Appceler8, LLC System and method for automated patch compatibility of applications
11490256, Mar 11 2019 Hewlett Packard Enterprise Development LP Secure zero-touch provisioning of network devices in an offline deployment
11503744, May 15 2007 Schneider Electric IT Corporation Methods and systems for managing facility power and cooling
11782701, Jun 01 2021 HONOR SYSTEMS LLC Software updater
6279155, Apr 08 1998 DELL USA, L P Method of installing software on and/or testing a computer system
6341373, Dec 20 1996 Comcast Cable Communications Management, LLC Secure data downloading, recovery and upgrading
6381741, May 18 1998 Comcast Cable Communications Management, LLC Secure data downloading, recovery and upgrading
6389370, Sep 14 1999 Hewlett Packard Enterprise Development LP System and method for determining which objects in a set of objects should be processed
6401239, Mar 22 1999 MEC MANAGEMENT, LLC System and method for quick downloading of electronic files
6418554, Sep 21 1998 Microsoft Technology Licensing, LLC Software implementation installer mechanism
6425125, Mar 30 1999 Microsoft Technology Licensing, LLC System and method for upgrading client software
6427236, Mar 03 1999 Microsoft Technology Licensing, LLC Method for installing a patch based on patch criticality and software execution format
6434744, Mar 03 1999 Microsoft Technology Licensing, LLC System and method for patching an installed application program
6438749, Mar 03 1999 ZHIGU HOLDINGS LIMITED Method and system for restoring a computer to its original state after an unsuccessful patch installation attempt
6453348, Nov 06 1998 RAKUTEN, INC Extranet architecture
6493871, Sep 16 1999 Microsoft Technology Licensing, LLC Method and system for downloading updates for software installation
6523166, Sep 21 1998 Microsoft Technology Licensing, LLC Method and system for on-demand installation of software implementations
6532481, Mar 31 2000 Product identifier, catalog and locator system and method
6539499, Oct 06 1999 DELL USA, LP , A TEXAS LIMITED PARTNERSHIP Graphical interface, method, and system for the provision of diagnostic and support services in a computer system
6556431, Oct 06 1999 DELL USA, L P System and method for converting alternating current into direct current
6560726, Aug 19 1999 Dell USA, L.P. Method and system for automated technical support for computers
6563698, Oct 06 1999 DELL USA, L P System and method for providing a computer system with a detachable component
6564220, Oct 06 1999 Dell USA, L.P. System and method for monitoring support activity
6574615, Oct 06 1999 DELL USA, L P , A TEXAS LIMITED PARTNERSHIP System and method for monitoring support activity
6578199, Nov 12 1999 Fujitsu Limited Automatic tracking system and method for distributable software
6598223, Oct 06 1999 DELL USA, L P Method and system for installing and testing build-to-order components in a defined configuration computer system
6606716, Oct 06 1999 DELL USA, L P , A TEXAS LIMITED PARTNERSHIP Method and system for automated technical support for computers
6606744, Nov 22 1999 Accenture Global Services Limited Providing collaborative installation management in a network-based supply chain environment
6614804, Mar 22 1999 Microsoft Technology Licensing, LLC Method and apparatus for remote update of clients by a server via broadcast satellite
6626953, Apr 10 1998 Cisco Technology, Inc.; Cisco Technology, Inc System and method for retrieving software release information
6633899, May 06 1999 Oracle America, Inc Dynamic installation and configuration broker
6671818, Nov 22 1999 Accenture Global Services Limited Problem isolation through translating and filtering events into a standard object format in a network based supply chain
6697861, Nov 06 1998 EBATES PERFORMANCE MARKETING, INC DBA RAKUTEN REWARDS Web based extranet architecture providing applications to non-related subscribers
6718547, Feb 17 1998 FUJIFILM Corporation Medical network system
6735625, May 29 1998 Cisco Technology, Inc. System and method for automatically determining whether a product is compatible with a physical device in a network
6760708, Aug 19 1999 Dell Products L P Method and system for migrating stored data to a build-to-order computing system
6782527, Jan 28 2000 McAfee, Inc System and method for efficient distribution of application services to a plurality of computing appliances organized as subnets
6785848, May 15 2000 Microsoft Technology Licensing, LLC Method and system for categorizing failures of a program module
6820259, Aug 31 1999 Hitachi, LTD Software distribution system and software receiving terminal apparatus
6826683, Oct 23 2000 Hewlett Packard Enterprise Development LP Predicting the health of a computer system by determining a set of modifications involved in a proposed intervention to an existing system
6836794, Sep 21 1998 Microsoft Technology Licensing, LLC Method and system for assigning and publishing applications
6847949, May 10 1999 Koninklijke Philips Electronics N V Indicator system for screening protected material
6859924, Jun 04 1998 Gateway, Inc. System restore apparatus and method employing virtual restore disk
6874143, Jun 21 2000 Microsoft Technology Licensing, LLC Architectures for and methods of providing network-based software extensions
6883168, Jun 21 2000 Microsoft Technology Licensing, LLC Methods, systems, architectures and data structures for delivering software via a network
6892297, Mar 16 2000 LENOVO SINGAPORE PTE LTD Method and system for searching an updated version of boot code for updating current running boot code prior to loading an operating system
6912552, Aug 19 1999 Dell Products L.P. Method and system for migrating stored data to a build-to-order computing system
6915512, Nov 29 1999 Fujitsu Limited Software editing with indication of format and processing state of each process of the software
6915513, Nov 29 2001 Hewlett Packard Enterprise Development LP System and method for dynamically replacing code
6931637, Jun 07 2001 Taiwan Semiconductor Manufacturing Co., Ltd Computer system upgrade method employing upgrade management utility which provides uninterrupted idle state
6948135, Jun 21 2000 Microsoft Technology Licensing, LLC Method and systems of providing information to computer users
6970565, Dec 22 2000 SIRIUS XM RADIO INC Apparatus for and method of securely downloading and installing a program patch in a processing device
6980313, Jul 11 2000 Fax-compatible internet appliance
6981251, Aug 18 1999 UNIFY GMBH & CO KG Agent system for mobile agents, computer network and method for downloading an agent system from a host computer to a client computer of a computer network
6986108, Mar 21 2002 Toshiba Tec Kabushiki Kaisha; Toshiba Corporation System for accessing digital imaging devices
6990660, Sep 22 2000 IVANTI, INC Non-invasive automatic offsite patch fingerprinting and updating system and method
6993760, Dec 05 2001 Microsoft Technology Licensing, LLC Installing software on a mobile computing device using the rollback and security features of a configuration manager
7000230, Jun 21 2000 Microsoft Technology Licensing, LLC Network-based software extensions
7010566, Jan 19 1999 TREND MICRO INCORPORATED System for controlling transmission of information on the internet
7013461, Jan 05 2001 International Business Machines Corporation Systems and methods for service and role-based software distribution
7016944, Sep 30 1999 Apple Inc System and method for passive detection and context sensitive notification of upgrade availability for computer information
7017155, Dec 05 2001 Microsoft Technology Licensing, LLC Installing software on a mobile computing device using the rollback and security features of a configuration manager
7043419, Sep 20 2002 International Business Machines Corporation Method and apparatus for publishing and monitoring entities providing services in a distributed data processing system
7062765, May 25 1999 Intel Corporation System and method for updating information via a network
7069552, Aug 30 2001 St. Jude Medical AB Method for providing software to an implantable medical device system
7073172, Sep 21 1998 Microsoft Technology Licensing, LLC On demand patching of applications via software implementation installer mechanism
7089300, Oct 18 1999 Apple Inc Method and apparatus for administering the operating system of a net-booted environment
7089548, Jan 13 2003 Taiwan Semiconductor Manufacturing Company, Ltd. Method and system for nondisruptive deployment during upgrading of enterprise systems
7117435, Jun 21 2000 Microsoft Technology Licensing, LLC Spreadsheet fields in text
7120866, Jun 21 2000 Microsoft Technology Licensing, LLC Spreadsheet fields in text
7124101, Nov 22 1999 Accenture Global Services Limited Asset tracking in a network-based supply chain environment
7127526, Mar 20 2000 AVAYA MANAGEMENT L P Method and apparatus for dynamically loading and managing software services on a network device
7130807, Nov 22 1999 Accenture Global Services Limited Technology sharing during demand and supply planning in a network-based supply chain environment
7139728, Dec 30 1999 MIND FUSION, LLC Systems and methods for online selection of service providers and management of service accounts
7149773, Jul 07 1999 BELLTOWER ASSOCIATES LLC System and method of automated invoicing for communications between an implantable medical device and a remote computer system or health care provider
7155667, Jun 21 2000 Microsoft Technology Licensing, LLC User interface for integrated spreadsheets and word processing tables
7168035, Jun 11 2003 Microsoft Technology Licensing, LLC Building a view on markup language data through a set of components
7168073, Jan 09 2002 Matsushita Electric Industrial Co., Ltd. Program distribution system for discarding program on reception terminal side
7191394, Jun 21 2000 Microsoft Technology Licensing, LLC Authoring arbitrary XML documents using DHTML and XSLT
7194445, Sep 20 2002 Lenovo PC International Adaptive problem determination and recovery in a computer system
7194513, Jul 08 2001 UNIGA KK; UNIQA KK System and method for using an internet appliance to send/receive digital content files as E-mail attachments
7197515, Jun 30 2003 Microsoft Technology Licensing, LLC Declarative solution definition
7216343, Sep 20 2002 TREND MICRO INCORPORATED Method and apparatus for automatic updating and testing of software
7222131, Sep 24 2002 Rockwell Automation Technologies, Inc.; ROCKWELL SOFTWARE INC System and methodology facilitating data warehousing of controller images in a distributed industrial controller environment
7222184, Nov 29 2000 NCR Voyix Corporation Method of downloading web content to a network kiosk in advance
7228539, Jun 16 2003 WSOU Investments, LLC Method and apparatus for updating inter-server communication software
7233985, Oct 18 1999 Apple Inc Providing a reliable operating system for clients of a net-booted environment
7240077, Dec 30 2002 Amazon Technologies, Inc Web site content change management
7245291, Jul 11 2000 System and method for internet appliance data entry and navigation
7246229, Oct 23 2000 Hewlett Packard Enterprise Development LP Predicting the health of a system that would result from the application of a proposed intervention to an existing system
7254811, Apr 17 2003 JPMORGAN CHASE BANK, N A ; MORGAN STANLEY SENIOR FUNDING, INC Update system and method for updating a scanning subsystem in a mobile communication framework
7269718, Apr 29 2004 GOOGLE LLC Method and apparatus for verifying data types to be used for instructions and casting data types if needed
7275216, Mar 24 2003 Microsoft Technology Licensing, LLC System and method for designing electronic forms and hierarchical schemas
7275245, Oct 04 2000 ASMPT GMBH & CO KG Manufacturing system software version management
7280894, Jan 18 1999 Fujitsu Ten Limited; Toyota Jidosha Kabushiki Kaisha; AISIN AW CO , LTD ; MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD Communication system for communication between in-vehicle terminals and center, and in-vehicle terminal employed in communication system
7281018, May 26 2004 Microsoft Technology Licensing, LLC Form template data source change
7286908, Jan 18 1999 Fujitsu Ten Limited; Toyota Jidosha Kabushiki Kaisha; AISIN AW CO , LTD ; MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD Communication system for communication between in-vehicle terminals and center, and in-vehicle terminal employed in communication system
7290247, Oct 25 2001 Meta Platforms, Inc Help center and filtering applications
7293115, Feb 28 2001 Sony Corporation Internet-aware agent for automatically updating applications without executing the application
7293268, Apr 17 2000 Fujitsu Limited Installation method, activation method, execution apparatus and medium of application program
7296017, Mar 28 2003 Microsoft Technology Licensing, LLC Validation of XML data files
7305472, Jun 03 1996 Rovi Technologies Corporation Method for downloading a web page to a client for efficient display on a television screen
7310801, Apr 27 2000 Microsoft Technology Licensing, LLC Servicing a component-based software product throughout the software product lifecycle
7318063, Feb 19 2004 Microsoft Technology Licensing, LLC Managing XML documents containing hierarchical database information
7328374, Apr 29 2004 GOOGLE LLC Method and apparatus for implementing assertions in hardware
7334187, Aug 06 2003 Microsoft Technology Licensing, LLC Electronic form aggregation
7340491, Apr 24 2003 SecureInfo Corporation Methods and apparatus for data preservation and software distribution within an enterprise system
7343443, Jul 08 2003 Qualcomm Incorporated Updated package generation based on analysis of bank dependency
7346610, Jun 21 2000 Microsoft Technology Licensing, LLC Methods and systems of providing information to computer users
7346848, Jun 21 2000 Microsoft Technology Licensing, LLC Single window navigation methods and systems
7349769, Jan 18 1999 Fujitsu Ten Limited; Toyota Jidosha Kabushiki Kaisha; Aisin AW Co., Ltd.; Matsushita Electric Industrial Co., Ltd. Communication system for communication between in-vehicle terminals and center, and in-vehicle terminal employed in communication system
7350141, Jun 21 2000 Microsoft Technology Licensing, LLC User interface for integrated spreadsheets and word processing tables
7350146, Oct 25 2001 Meta Platforms, Inc Help center and condition-based applications
7360171, Jun 21 2000 Microsoft Technology Licensing, LLC Methods and systems of providing information to computer users
7370066, Mar 24 2003 Microsoft Technology Licensing, LLC System and method for offline editing of data files
7370092, Sep 12 2002 Computer Sciences Corporation System and method for enhanced software updating and revision
7373594, Apr 30 2003 Amazon Technologies, Inc Managing the release of electronic content using a template without version logic
7373637, Sep 30 2003 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
7376673, Mar 24 2003 Microsoft Technology Licensing, LLC Offline editing of XML files using a solution
7386690, Apr 29 2004 International Business Machines Corporation Method and apparatus for hardware awareness of data types
7392522, Jun 21 2000 Microsoft Technology Licensing, LLC Architectures for and methods of providing network-based software extensions
7392540, Oct 03 2000 HEWLETT-PACKARD DEVELOPMENT COMPANY L P Methods and systems for customer premises remote collaboration facility
7395527, Sep 30 2003 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
7401133, Apr 23 2002 Secure Resolutions, Inc. Software administration in an application service provider scenario via configuration directives
7406660, Aug 01 2003 Microsoft Technology Licensing, LLC Mapping between structured data and a visual surface
7412645, Jun 21 2000 Microsoft Technology Licensing, LLC User interface for integrated spreadsheets and word processing tables
7415672, Mar 24 2003 Microsoft Technology Licensing, LLC System and method for designing electronic forms
7415707, Apr 19 2001 Sony Corporation Installation software using a setting file to automatically determine if a module is installable and the location of the installation
7421681, Oct 09 2003 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
7424706, Jul 16 2003 Microsoft Technology Licensing, LLC Automatic detection and patching of vulnerable files
7426571, Jan 06 2005 Dell Products L.P.; Dell Products L P Providing files to an information handling system using a remote access controller
7428585, Jul 31 2002 Meta Platforms, Inc Local device access controls
7430590, Apr 17 2002 DELL MARKETING L P Method and system to manage services for multiple managed computer systems
7430711, Feb 17 2004 Microsoft Technology Licensing, LLC Systems and methods for editing XML documents
7430736, Oct 03 2001 Toshiba Tec Kabushiki Kaisha Download and installation of software from a network printer
7430754, Mar 23 2004 Microsoft Technology Licensing, LLC Method for dynamic application of rights management policy
7437376, Dec 20 2004 Microsoft Technology Licensing, LLC Scalable object model
7451392, Jun 30 2003 Microsoft Technology Licensing, LLC Rendering an HTML electronic form by applying XSLT to XML using a solution
7458074, Mar 30 2001 International Business Machines Corporation Method and apparatus for installing and upgrading an application in a computer system
7464092, Apr 04 2001 Alorica Inc Method, system and program for customer service and support management
7472254, Oct 10 2003 iOra, Ltd. Systems and methods for modifying a set of data objects
7478383, Mar 23 2004 Toshiba Corporation; Toshiba Tec Kabushiki Kaisha System and method for remotely securing software updates of computer systems
7490109, Mar 24 2003 Microsoft Technology Licensing, LLC System and method for offline editing of data files
7496837, Apr 29 2004 Microsoft Technology Licensing, LLC Structural editing with schema awareness
7496908, Jan 14 2004 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
7496910, May 21 2004 Microsoft Technology Licensing, LLC System for policy-based management of software updates
7500108, Mar 01 2004 Microsoft Technology Licensing, LLC Metered execution of code
7500234, Sep 30 2003 Hitachi, Ltd. System-updating method and computer system adopting the method
7506242, Jun 21 2000 Microsoft Technology Licensing, LLC System and method for integrating spreadsheets and word processing tables
7506243, Jun 21 2000 Microsoft Technology Licensing, LLC System and method for integrating spreadsheets and word processing tables
7509353, Nov 16 2004 Microsoft Technology Licensing, LLC Methods and systems for exchanging and rendering forms
7512896, Jun 21 2000 Microsoft Technology Licensing, LLC Task-sensitive methods and systems for displaying command sets
7516145, Mar 31 2003 Microsoft Technology Licensing, LLC System and method for incrementally transforming and rendering hierarchical data files
7516150, Oct 29 2004 CA, INC Update protection system and method
7516399, Sep 30 2004 Microsoft Technology Licensing, LLC Structured-document path-language expression methods and systems
7523147, Feb 24 2005 International Business Machines Corporation Method and system for managing inventory for a migration using history data
7523390, Jun 21 2000 Microsoft Technology Licensing, LLC Spreadsheet fields in text
7523399, Jun 03 1996 Rovi Technologies Corporation Downloading software from a server to a client
7526757, Jan 14 2004 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
7526762, Jun 30 2000 IOT INNOVATIONS LLC Network with mobile terminals as browsers having wireless access to the internet and method for using same
7533268, May 13 2004 Microsoft Technology Licensing, LLC Digital signature with an embedded view
7539686, Mar 12 2004 Microsoft Technology Licensing, LLC Tag-based schema for distributing update metadata in an update distribution system
7543005, Dec 30 2002 Amazon Technologies, Inc Web site content change management
7543183, Oct 06 1999 Dell Products L.P. Method and system for automated technical support for computers
7543228, Jun 27 2005 Microsoft Technology Licensing, LLC Template for rendering an electronic form
7546594, Dec 15 2003 Microsoft Technology Licensing, LLC System and method for updating installation components using an installation component delta patch in a networked environment
7546595, Oct 14 2004 Microsoft Technology Licensing, LLC System and method of installing software updates in a computer networking environment
7549115, Jun 21 2000 Microsoft Technology Licensing, LLC System and method for integrated spreadsheets and word processing tables
7549169, Aug 26 2004 CA, INC Alternated update system and method
7559058, May 11 2004 Microsoft Technology Licensing, LLC Efficient patching
7562346, Sep 02 2003 Microsoft Technology Licensing, LLC Software componentization for building a software product
7565649, Apr 02 2003 Panasonic Corporation Data reproduction device, video display apparatus and software update system and software update method which use them
7568101, May 13 2004 Microsoft Technology Licensing, LLC Digital signatures with an embedded view
7574481, Dec 20 2000 Microsoft Technology Licensing, LLC Method and system for enabling offline detection of software updates
7574587, Jan 14 2004 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
7574706, Dec 15 2003 Microsoft Technology Licensing, LLC System and method for managing and communicating software updates
7581177, Aug 01 2003 Microsoft Technology Licensing, LLC Conversion of structured documents
7581217, Oct 31 2001 Microsoft Technology Licensing, LLC Dynamic software update
7581218, Aug 22 2001 International Business Machines Corporation Transaction processing in a distributed data processing system
7584174, May 15 2003 Oracle America, Inc Update dependency control for multi-master replication
7584417, Nov 15 2004 Microsoft Technology Licensing, LLC Role-dependent action for an electronic form
7594219, Jul 24 2003 International Business Machines Corporation Method and apparatus for monitoring compatibility of software combinations
7594224, Oct 10 2003 Oracle International Corporation Distributed enterprise security system
7600006, Aug 31 2004 MITEL DELAWARE , INC Peer-to-peer distribution of firmware
7603547, Oct 10 2003 Oracle International Corporation Security control module
7610562, Jun 21 2000 Microsoft Technology Licensing, LLC Task-sensitive methods and systems for displaying command sets
7613733, Aug 19 1999 Dell Products L.P. Method and system for migrating stored data to a build-to-order computing system
7613996, Aug 15 2005 Microsoft Technology Licensing, LLC Enabling selection of an inferred schema part
7624356, Jun 21 2000 Microsoft Technology Licensing, LLC Task-sensitive methods and systems for displaying command sets
7631061, Sep 21 1998 Microsoft Technology Licensing, LLC Method and system for assigning and publishing applications
7647457, Apr 29 2004 International Business Machines Corporation Method and apparatus for hardware awareness of data types
7673227, Jun 21 2000 Microsoft Technology Licensing, LLC User interface for integrated spreadsheets and word processing tables
7673298, Jul 15 2004 Okuma Corporation Software object verification method for real time system
7673323, Oct 28 1998 Oracle International Corporation System and method for maintaining security in a distributed computer network
7676448, Mar 12 2004 Microsoft Technology Licensing, LLC Controlling installation update behaviors on a client computer
7676843, May 27 2004 Microsoft Technology Licensing, LLC Executing applications at appropriate trust levels
7689929, Jun 21 2000 Microsoft Technology Licensing, LLC Methods and systems of providing information to computer users
7692636, Sep 30 2004 Microsoft Technology Licensing, LLC Systems and methods for handwriting to a screen
7702668, Jun 16 2003 Microsoft Technology Licensing, LLC Asset composition
7702997, Jun 21 2000 Microsoft Technology Licensing, LLC Spreadsheet fields in text
7703091, Dec 31 2002 EMC IP HOLDING COMPANY LLC Methods and apparatus for installing agents in a managed network
7707071, Dec 30 1999 MIND FUSION, LLC Systems and methods for online selection of service providers and management of service accounts
7707573, Dec 31 2003 GOOGLE LLC Systems and methods for providing and installing software
7711775, Oct 24 2001 Microsoft Technology Licensing, LLC Method and apparatus for managing software component downloads and updates
7712022, Nov 15 2004 Microsoft Technology Licensing, LLC Mutually exclusive options in electronic forms
7712048, Jun 21 2000 Microsoft Technology Licensing, LLC Task-sensitive methods and systems for displaying command sets
7716077, Nov 22 1999 Accenture Global Services Limited Scheduling and planning maintenance and service in a network-based supply chain environment
7721190, Nov 16 2004 Microsoft Technology Licensing, LLC Methods and systems for server side form processing
7725834, Mar 04 2005 Microsoft Technology Licensing, LLC Designer-created aspect for an electronic form template
7739486, Feb 11 2003 Qualcomm Incorporated Electronic device supporting multiple update agents
7742999, Oct 25 2001 Meta Platforms, Inc Help center and print center applications
7743063, Jun 21 2000 Microsoft Technology Licensing, LLC Methods and systems for delivering software via a network
7774620, May 27 2004 Microsoft Technology Licensing, LLC Executing applications at appropriate trust levels
7774774, Oct 22 2003 Apple Inc Software setup system
7774775, Mar 10 2004 Oracle America, Inc Method and system for revising installation software
7779027, Jun 21 2000 Microsoft Technology Licensing, LLC Methods, systems, architectures and data structures for delivering software via a network
7779092, Apr 17 2002 DELL MARKETING L P Method and system to manage services for multiple managed computer systems
7779343, Jan 30 2006 Microsoft Technology Licensing, LLC Opening network-enabled electronic documents
7785204, Oct 14 1998 IGT Method for downloading data to gaming devices
7804609, Nov 07 2003 Microsoft Technology Licensing, LLC Methods and systems to connect network printers
7805719, Nov 17 2000 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P System and method for updating and distributing information
7814473, Oct 27 2004 Oracle International Corporation Feature usage based target patching
7818677, Jun 21 2000 Microsoft Technology Licensing, LLC Single window navigation methods and systems
7823147, Sep 22 2000 IVANTI, INC Non-invasive automatic offsite patch fingerprinting and updating system and method
7831638, Aug 19 1999 Dell Products L.P. Method and system for image management in a computing system
7840941, Sep 01 2006 Microsoft Technology Licensing, LLC Conflict resolution of software customizations based on product dependencies
7845010, Nov 01 2004 NTT DoCoMo, Inc Terminal control apparatus and terminal control method
7849169, Oct 18 1999 Apple Inc. Providing a reliable operating system for clients of a net-booted environment
7853609, Mar 12 2004 Microsoft Technology Licensing, LLC Update distribution system architecture and method for distributing software
7865477, Mar 28 2003 Microsoft Technology Licensing, LLC System and method for real-time validation of structured data files
7865579, Oct 18 1999 Apple Inc Method and apparatus for administering the operating system of a net-booted environment
7870096, Jun 16 2003 Microsoft Technology Licensing, LLC Asset composition
7873940, Apr 24 2006 ServiceNow, Inc Providing packages for configuring software stacks
7873957, Jul 27 2006 Microsoft Technology Licensing, LLC Minimizing user disruption during modification operations
7876902, Aug 31 2006 Microsoft Technology Licensing, LLC Distribution of encrypted software update to reduce attack window
7886093, Jul 31 2003 Qualcomm Incorporated Electronic device network supporting compression and decompression in electronic devices
7890946, May 11 2004 Microsoft Technology Licensing, LLC Efficient patching
7890952, Oct 07 2004 International Business Machines Corporation Autonomic peer-to-peer computer software installation
7900134, Jun 21 2000 Microsoft Technology Licensing, LLC Authoring arbitrary XML documents using DHTML and XSLT
7904801, Dec 15 2004 Microsoft Technology Licensing, LLC Recursive sections in electronic forms
7913159, Mar 28 2003 Microsoft Technology Licensing, LLC System and method for real-time validation of structured data files
7913246, Oct 27 2003 American Power Conversion Corporation System and method for updating a software program
7925621, Mar 24 2003 Microsoft Technology Licensing, LLC Installing a solution
7925635, Apr 23 2004 BMC SOFTWARE, INC System and method for collecting statistics related to software usage
7937651, Jan 14 2005 Microsoft Technology Licensing, LLC Structural editing operations for network forms
7937691, Sep 30 2003 International Business Machines Corporation Method and apparatus for counting execution of specific instructions and accesses to specific data locations
7950015, Sep 20 2002 International Business Machines Corporation System and method for combining services to satisfy request requirement
7951006, Oct 14 1998 IGT Method for downloading data to gaming devices
7957991, Nov 22 1999 Accenture Global Services Limited Technology sharing during demand and supply planning in a network-based supply chain environment
7970722, Nov 08 1999 International Business Machines Corporation System, method and computer program product for a collaborative decision platform
7970877, May 29 1998 Cisco Technology, Inc. System and method for interfacing with a component located in a network environment
7970968, Mar 25 2004 Sony Corporation Apparatus and method for controlling plural functional blocks using common command
7971139, Aug 06 2003 Microsoft Technology Licensing, LLC Correlation, association, or correspondence of electronic forms
7971187, Apr 24 2006 ServiceNow, Inc Configurable software stack
7979856, Jun 21 2000 Microsoft Technology Licensing, LLC Network-based software extensions
7983960, Dec 30 1999 MIND FUSION, LLC Systems and methods for online selection of service providers and management of service accounts
7987453, Mar 18 2004 International Business Machines Corporation Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data
7987459, Mar 16 2005 Microsoft Technology Licensing, LLC Application programming interface for identifying, downloading and installing applicable software updates
8001459, Dec 05 2005 Microsoft Technology Licensing, LLC Enabling electronic documents for limited-capability computing devices
8005777, Nov 08 1999 International Business Machines Corporation System, method and computer program product for a collaborative decision platform
8010515, Apr 15 2005 Microsoft Technology Licensing, LLC Query to an electronic form
8019725, Dec 15 2004 Apple Inc Software update management
8024783, Jan 22 2004 Nixon Peabody LLP Modular agent architecture
8029365, Mar 24 2005 LNW GAMING, INC Hierarchical multi-tiered system for gaming related communications
8032409, Nov 22 1999 Accenture Global Services Limited Enhanced visibility during installation management in a network-based supply chain environment
8037470, Oct 04 2000 ASM ASSEMBLY SYSTEMS GMBH & CO KG Manufacturing system software version management
8042102, Oct 09 2003 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operations in an application
8046683, Apr 29 2004 Microsoft Technology Licensing, LLC Structural editing with schema awareness
8046755, Dec 30 2005 SAP SE Deploying software based on a calculated deployment risk level
8074217, Jun 21 2000 Microsoft Technology Licensing, LLC Methods and systems for delivering software
8078960, Nov 26 2003 Microsoft Technology Licensing, LLC Rendering an HTML electronic form by applying XSLT to XML using a solution
8082300, Nov 06 1998 RAKUTEN GROUP, INC Web based extranet architecture providing applications to non-related subscribers
8087013, Nov 15 2006 International Business Machines Corporation Assisted migration in a data processing environment
8117552, Mar 24 2003 Microsoft Technology Licensing, LLC Incrementally designing electronic forms and hierarchical schemas
8117595, Mar 23 2004 Microsoft Technology Licensing, LLC Method for updating data in accordance with rights management policy
8141099, Jan 14 2004 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
8156487, May 11 2004 Microsoft Technology Licensing, LLC Efficient patching
8160988, Nov 08 1999 International Business Machines Corporation System, method and computer program product for a collaborative decision platform
8171116, Dec 11 2002 International Business Machines Corporation Configuring processing entities according to their roles in a data processing system with a distributed architecture
8171457, Mar 22 2004 International Business Machines Corporation Autonomic test case feedback using hardware assistance for data coverage
8191049, Jan 14 2004 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
8200975, Jun 29 2005 Microsoft Technology Licensing, LLC Digital signatures for network forms
8204969, Aug 05 2008 Canon Kabushiki Kaisha Method for retrieving updates via the internet
8219597, Dec 07 2007 Canon Kabushiki Kaisha Information processing apparatus and method
8225304, Mar 23 2004 Kabushiki Kaisha Toshiba; Toshiba Tec Kabushiki Kaisha System and method for remotely securing software updates of computer systems
8230417, Jun 08 2007 Adobe Inc Combined application and execution environment install
8250568, Mar 30 2001 International Business Machines Corporation Installing and upgrading an application in a computer system
8255880, Sep 30 2003 International Business Machines Corporation Counting instruction and memory location ranges
8260682, Dec 30 1999 MIND FUSION, LLC Systems and methods for online selection of service providers and management of service accounts
8266296, Oct 07 1998 COMMUNICATION INTERFACE TECHNOLOGIES LLC Application-layer evaluation of communications received by a mobile device
8271336, Nov 22 1999 Accenture Global Services Limited Increased visibility during order management in a network-based supply chain environment
8271651, Dec 31 2003 GOOGLE LLC Methods and systems for regulating resource usage
8271970, Oct 27 2005 Siemens Aktiengesellschaft Method for software distribution
8271973, Sep 09 2005 AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED Automated notification of software installation failures
8280865, Dec 30 2002 Amazon Technologies, Inc. Web site content change management
8291010, Oct 07 1998 COMMUNICATION INTERFACE TECHNOLOGIES LLC Virtual connection of a remote unit to a server
8303417, Mar 24 2005 LNW GAMING, INC Hiearchical multi-tiered system for gaming related communications
8321858, Dec 31 2003 GOOGLE LLC Systems and methods for providing software updates
8322155, Aug 15 2006 American Power Conversion Corporation Method and apparatus for cooling
8327656, Aug 15 2006 American Power Conversion Corporation Method and apparatus for cooling
8340131, May 28 2008 TELEFONAKTIEBOLAGET L M ERICSSON PUBL Efficient broadcast of data in a communication network
8346913, Oct 25 2005 Huawei Technologies Co., Ltd. Method and device for monitoring and upgrading software in device management
8359645, Mar 25 2005 Microsoft Technology Licensing, LLC Dynamic protection of unpatched machines
8364777, Jul 28 2003 Sharp Kabushiki Kaisha Content delivery server, communication terminal, content delivery system, content delivery method, content delivery program, terminal control program and storage medium containing the program
8365293, Jan 25 2005 REDPHONE SECURITY, INC Securing computer network interactions between entities with authorization assurances
8375108, Sep 12 2002 Computer Sciences Corporation System and method for updating network computer systems
8375381, Jul 30 2007 Adobe Inc Management user interface for application execution environment
8381037, Oct 09 2003 International Business Machines Corporation Method and system for autonomic execution path selection in an application
8402459, Feb 18 2009 Konica Minolta Business Technologies, Inc. License management system, license management computer, license management method, and license management program embodied on computer readable medium
8407687, Sep 22 2000 IVANTI, INC Non-invasive automatic offsite patch fingerprinting and updating system and method
8417926, Mar 31 2009 Red Hat, Inc.; Red Hat, Inc Systems and methods for providing configuration management services from a provisioning server
8424336, Dec 18 2006 Schneider Electric IT Corporation Modular ice storage for uninterruptible chilled water
8425287, Jan 23 2007 Schneider Electric IT Corporation In-row air containment and cooling system and method
8429253, Jan 27 2004 CA, INC Method and system for detecting changes in computer files and settings and automating the migration of settings and files to computers
8429522, Aug 06 2003 Microsoft Technology Licensing, LLC Correlation, association, or correspondence of electronic forms
8433898, Jan 25 2002 Comcast Cable Communications Management, LLC Trust information delivery scheme for certificate validation
8448160, Mar 16 2005 Microsoft Technology Licensing, LLC Application programming interface for identifying, downloading and installing applicable software updates
8448161, Jul 30 2007 Adobe Inc Application tracking for application execution environment
8458300, Apr 17 2002 Dell Marketing USA, L.P. Method and system to manage services for multiple managed computer systems
8464247, Jun 21 2007 Red Hat, Inc. Methods and systems for dynamically generating installation configuration files for software
8468515, Nov 17 2000 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P Initialization and update of software and/or firmware in electronic devices
8479189, Nov 17 2000 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P Pattern detection preprocessor in an electronic device update generation system
8487879, Oct 29 2004 Microsoft Technology Licensing, LLC Systems and methods for interacting with a computer through handwriting to a screen
8516583, Mar 31 2005 Microsoft Technology Licensing, LLC Aggregating the knowledge base of computer systems to proactively protect a computer from malware
8526940, Aug 17 2004 Qualcomm Incorporated Centralized rules repository for smart phone customer care
8533702, Jun 27 2002 International Business Machines Corporation Dynamically resolving fix groups for managing multiple releases of multiple products on multiple systems
8539469, May 11 2004 Microsoft Technology Licensing, LLC Efficient patching
8554732, Jul 30 2007 Adobe Inc Version management for application execution environment
8555273, Sep 17 2003 Qualcomm Incorporated Network for updating electronic devices
8560366, Nov 22 1999 Accenture Global Services Limited Technology sharing during demand and supply planning in a network-based supply chain environment
8560677, Feb 13 2009 Schneider Electric IT Corporation Data center control
8561058, Jun 20 2007 Red Hat, Inc. Methods and systems for dynamically generating installation configuration files for software
8566398, Nov 06 1998 RAKUTEN, INC Web based extranet architecture providing applications to non-related subscribers
8578361, Apr 21 2004 Qualcomm Incorporated Updating an electronic device with update agent code
8584115, Oct 05 2006 KYNDRYL, INC Automated operating system device driver updating system
8615619, Jan 14 2004 International Business Machines Corporation Qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
8626146, Oct 29 2003 QUALCOMM INCORPORATED, A DELAWARE CORPORATION Method, software and apparatus for performing actions on a wireless device using action lists and versioning
8655785, Feb 10 2008 SAFENET DATA SECURITY ISRAEL LTD Computer data product license installation / update confirmation
8671402, Nov 09 2009 Bank of America Corporation Network-enhanced control of software updates received via removable computer-readable medium
8689190, Sep 30 2003 International Business Machines Corporation Counting instruction execution and data accesses
8701101, Mar 30 2007 Malikie Innovations Limited System and method for managing upgrades for a portable electronic device
8713559, Nov 15 2010 Schneider Electric IT Corporation System and method for updating firmware
8732023, Nov 22 1999 Accenture Global Services Limited Increased visibility during order management in a network-based supply chain environment
8752044, Jul 27 2006 Qualcomm Incorporated User experience and dependency management in a mobile device
8762984, May 31 2007 Microsoft Technology Licensing, LLC Content distribution infrastructure
8769492, Mar 23 2004 Microsoft Technology Licensing, LLC Method for updating data in accordance with rights management policy
8769519, Dec 08 2011 Microsoft Technology Licensing, LLC Personal and pooled virtual machine update
8775572, Jun 23 2006 Microsoft Technology Licensing, LLC Public network distribution of software updates
8782664, Jan 14 2004 International Business Machines Corporation Autonomic hardware assist for patching code
8819072, Feb 02 2004 Microsoft Technology Licensing, LLC Promoting data from structured data files
8838635, Dec 15 2004 Apple Inc. Software update management
8838731, Oct 01 2002 Apple Inc. Method and apparatus for dynamically locating resources
8892641, Jul 28 2003 Sharp Kabushiki Kaisha Content delivery server, communication terminal, content delivery system, content delivery method, content delivery program, terminal control program and storage medium containing the program
8892993, Aug 01 2003 Microsoft Technology Licensing, LLC Translation file
8893110, Jun 08 2006 Qualcomm Incorporated Device management in a network
8893968, Jun 07 2011 SIGNIFY HOLDING B V Network inclusion of a networked light bulb
8918729, Mar 24 2003 Microsoft Technology Licensing, LLC Designing electronic forms
8935525, Jan 25 2002 Comcast Cable Communications Management, LLC Trust information delivery scheme for certificate validation
8938424, Oct 31 2012 CA, Inc. System and method of assessing the state of a database product for installation consistency
8938733, Nov 30 2010 International Business Machines Corporation Generating a customized set of tasks for migration of a deployed software solution
8949824, Sep 28 2012 Walmart Apollo, LLC Systems and methods for installing, managing, and provisioning applications
8972972, Sep 13 2012 Amazon Technologies, Inc Handshaking methodology and redundant data channel between servers during software upgrade
8972974, Nov 09 2009 Bank of America Corporation Multiple invocation points in software build task sequence
9002993, Mar 28 2011 SIGNIFY HOLDING B V Dynamic configuration of a client-server relationship
9015694, Oct 31 2012 Hewlett Packard Enterprise Development LP Cloud-based firmware distribution service
9021392, Jul 26 2010 SAP SE Managing extension projects with repository based tagging
9043784, Jan 12 2012 RED HAT INC Management of inter-dependent configurations of virtual machines in a cloud
9043869, Mar 31 2005 Microsoft Technology Licensing, LLC Aggregating the knowledge base of computer systems to proactively protect a computer from malware
9047582, Jun 18 2002 CA, INC Methods and systems for managing enterprise assets
9052976, Nov 08 2010 Change Healthcare Holdings, LLC Methods, apparatuses and computer program products for facilitating efficient deployment of software
9080802, Dec 18 2006 Schneider Electric IT Corporation Modular ice storage for uninterruptible chilled water
9081638, Jul 27 2006 Qualcomm Incorporated User experience and dependency management in a mobile device
9092286, Dec 20 2002 Qualcomm Incorporated System to automatically process components on a device
9092301, May 11 2004 Microsoft Technology Licensing, LLC Efficient patching
9115916, Aug 15 2006 Schneider Electric IT Corporation Method of operating a cooling system having one or more cooling units
9122550, May 20 2010 Wistron Corporation Method and device for program installation
9122558, Nov 09 2009 Bank of America Corporation Software updates using delta patching
9128792, Sep 28 2012 Walmart Apollo, LLC Systems and methods for installing, managing, and provisioning applications
9128799, Nov 09 2009 Bank of America Corporation Programmatic creation of task sequences from manifests
9134989, Jan 31 2002 Qualcomm Incorporated System and method for updating dataset versions resident on a wireless device
9141375, Jul 08 2003 Qualcomm Incorporated Update package generation based on analysis of bank dependency
9143560, Jun 19 2007 Qualcomm Incorporated Methods and apparatus for dataset synchronization in a wireless environment
9146731, Mar 15 2013 Brother Kogyo Kabushiki Kaisha Information processing apparatus, relay server, information relay method, non-transitory computer-readable medium storing information relay program, and communication system
9164755, Dec 08 2011 Microsoft Technology Licensing, LLC Personal and pooled virtual machine update
9176898, Nov 09 2009 Bank of America Corporation Software stack building using logically protected region of computer-readable medium
9210234, Dec 05 2005 Microsoft Technology Licensing, LLC Enabling electronic documents for limited-capability computing devices
9229917, Mar 28 2003 Microsoft Technology Licensing, LLC Electronic form user interfaces
9235491, Sep 28 2012 Walmart Apollo, LLC Systems and methods for installing, managing, and provisioning applications
9239821, Aug 01 2003 Microsoft Technology Licensing, LLC Translation file
9268534, Apr 30 2003 Amazon Technologies, Inc Managing the release of electronic content using a template without version logic
9268550, Mar 28 2013 Alcatel Lucent Method or image management in distributed cloud
9268760, Aug 06 2003 Microsoft Technology Licensing, LLC Correlation, association, or correspondence of electronic forms
9270732, Mar 14 2005 MOON GLOW, SERIES 82 OF ALLIED SECURITY TRUST I System and method for automatically uploading updates
9288064, Jan 25 2002 Comcast Cable Communications Management, LLC Trust information delivery scheme for certificate validation
9317269, Sep 28 2012 Walmart Apollo, LLC Systems and methods for installing, managing, and provisioning applications
9323913, Nov 06 1998 RAKUTEN, INC Web based extranet architecture providing applications to non-related subscribers
9325575, Oct 31 2012 Hewlett Packard Enterprise Development LP Zero touch provisioning
9348623, Jan 12 2012 Red Hat, Inc. Management of inter-dependent configurations of virtual machines in a cloud
9354904, Apr 24 2006 ServiceNow, Inc Applying packages to configure software stacks
9383987, Dec 31 2003 GOOGLE LLC Systems and methods for providing software updates
9386397, Oct 29 2003 Qualcomm Incorporated Method, software and apparatus for performing actions on a wireless device using action lists and versioning
9432481, Oct 01 2002 Apple Inc. Method and apparatus for dynamically locating resources
9507610, Jun 21 2000 Microsoft Technology Licensing, LLC Task-sensitive methods and systems for displaying command sets
9519517, Feb 13 2009 Schneider Electric IT Corporation Data center control
9542172, Feb 05 2013 Apple Inc.; Apple Inc Automatic updating of applications
9548891, Oct 30 2013 1E LIMITED Configuration of network devices
9568206, Aug 15 2006 Schneider Electric IT Corporation Method and apparatus for cooling
9591428, Oct 29 2003 Qualcomm Incorporated Method, software and apparatus for performing actions on a wireless device using action lists and versioning
9594547, Apr 17 2002 Dell Marketing USA, L.P. Method and system to manage services for multiple managed computer systems
9600264, Nov 30 2010 International Business Machines Corporation Generating a customized set of tasks for migration of a deployed software solution
9658841, Aug 30 2012 AVAYA LLC System and method for efficient software replication
9672028, Nov 19 2015 Ricoh Company, Ltd.; Ricoh Company, LTD Device management system, apparatus and method for notification and scheduling of firmware update
9678734, Sep 30 1999 Apple Inc. System and method for passive detection and context sensitive notification of upgrade availability for computer information
9690913, Feb 25 2008 International Business Machines Corporation License management in a networked software application solution
9696984, Aug 13 2013 Huawei Technologies Co., Ltd. Application upgrade method and apparatus
9720919, Oct 31 2012 CA, Inc. System and method of assessing the state of a database product for installation consistency
9740441, Dec 12 2008 AT&T Intellectual Property, L.P.; AT&T Intellectual Property I, LP System and method for distributing software updates
9740473, Aug 26 2015 Bank of America Corporation Software and associated hardware regression and compatibility testing system
9767424, Oct 16 2013 SAP SE Zero downtime maintenance with maximum business functionality
9778718, Feb 13 2009 Schneider Electric IT Corporation Power supply and data center control
9800571, Nov 06 1998 RAKUTEN GROUP, INC Web based extranet architecture providing applications to non-related subscribers
9830410, Dec 22 2011 Schneider Electric IT Corporation System and method for prediction of temperature values in an electronics system
9864597, Dec 31 2003 GOOGLE LLC Systems and methods for providing software updates
9881275, Jun 07 2011 SIGNIFY HOLDING B V Network inclusion of a networked light bulb
9916150, Jun 23 2006 Microsoft Technology Licensing, LLC Public network distribution of software updates
9922345, Nov 22 1999 Accenture Global Services Limited Increased visibility during order management in a network-based supply chain environment
9952103, Dec 22 2011 Schneider Electric IT Corporation Analysis of effect of transient events on temperature in a data center
9977668, Feb 05 2013 Apple Inc. Automatic updating of applications
RE48001, May 31 2001 Qualcomm Incorporated Safe application distribution and execution in a wireless environment
Patent Priority Assignee Title
4558413, Nov 21 1983 Xerox Corporation Software version management system
5155847, Aug 03 1988 DOT ASSETS NO 9 LLC Method and apparatus for updating software at remote locations
5473772, Apr 02 1991 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
5581764, Apr 30 1993 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P Distributed computer network including hierarchical resource information structure and related method of distributing resources
5752042, Jun 07 1996 International Business Machines Corporation Server computer for selecting program updates for a client computer based on results of recognizer program(s) furnished to the client computer
5778231, Dec 20 1995 Oracle America, Inc Compiler system and method for resolving symbolic references to externally located program files
5797016, Oct 29 1996 CA, INC Regeneration agent for back-up software
5809251, Oct 09 1996 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P Remote installation of software by a management information system into a remote computer
5845090, Feb 14 1994 GOOGLE LLC System for software distribution in a digital computer network
5845293, Aug 08 1994 Microsoft Technology Licensing, LLC Method and system of associating, synchronizing and reconciling computer files in an operating system
5859969, Jan 10 1995 Fujitsu Limited Remote installation system and method
5867714, Oct 31 1996 NCR Corporation System and method for distributing configuration-dependent software revisions to a computer system
5870610, Jun 28 1996 ENTERPRISE SYSTEMS TECHNOLOGIES S A R L Autoconfigurable method and system having automated downloading
5881236, Apr 26 1996 Hewlett-Packard Company System for installation of software on a remote computer system over a network using checksums and password protection
5933647, Jan 24 1997 NORTONLIFELOCK INC System and method for software distribution and desktop management in a computer network environment
5983241, Jul 19 1995 Fuji Xerox Co., Ltd. File management system and file management method
5991771, Jul 20 1995 Oracle International Corporation Transaction synchronization in a disconnectable computer and network
5999740, Nov 08 1996 International Computers Limited Updating mechanism for software
5999947, May 27 1997 PURE DATA SYSTEMS, LLC Distributing database differences corresponding to database change events made to a database table located on a server computer
6006034, Sep 05 1996 FLEXERA SOFTWARE, INC Systems and methods for automatic application version upgrading and maintenance
GB2321322,
WO9222870,
WO9425923,
WO9807085,
///
Executed onAssignorAssigneeConveyanceFrameReelDoc
Jul 17 1998DONOHUE, SEAMUSInternational Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0094770588 pdf
Sep 22 1998International Business Machines Corporation(assignment on the face of the patent)
Aug 25 2017International Business Machines CorporationFINJAN BLUE, INC ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0446770133 pdf
Date Maintenance Fee Events
Jul 12 2004M1551: Payment of Maintenance Fee, 4th Year, Large Entity.
Sep 02 2008M1552: Payment of Maintenance Fee, 8th Year, Large Entity.
Oct 15 2012REM: Maintenance Fee Reminder Mailed.
Dec 31 2012M1553: Payment of Maintenance Fee, 12th Year, Large Entity.
Dec 31 2012M1556: 11.5 yr surcharge- late pmt w/in 6 mo, Large Entity.


Date Maintenance Schedule
Mar 06 20044 years fee payment window open
Sep 06 20046 months grace period start (w surcharge)
Mar 06 2005patent expiry (for year 4)
Mar 06 20072 years to revive unintentionally abandoned end. (for year 4)
Mar 06 20088 years fee payment window open
Sep 06 20086 months grace period start (w surcharge)
Mar 06 2009patent expiry (for year 8)
Mar 06 20112 years to revive unintentionally abandoned end. (for year 8)
Mar 06 201212 years fee payment window open
Sep 06 20126 months grace period start (w surcharge)
Mar 06 2013patent expiry (for year 12)
Mar 06 20152 years to revive unintentionally abandoned end. (for year 12)