CROSS-REFERENCE TO RELATED APPLICATIONS

N/A

BACKGROUND

Original equipment manufacturers (OEMs) such as Dell, HP, Lenovo, etc. oftentimes provide device updates in the form of update packages. An update package is usually in the form of a self-extracting executable file (e.g. an .exe file) that includes multiple related components. For example, an update package for a display device may include a graphics driver, an audio driver and a control application. A primary reason for bundling the multiple related components into a single update package is to ensure that all of the related components will be installed/updated to the latest versions so that no incompatibilities will exist.

Even with the bundling of related components into a single update package, incompatibilities will inevitably occur. For example, during the installation process, some failure may occur after some of the components have installed correctly while others have not (e.g., when one driver's INF file(s) are installed and another driver's INF file(s) are not). In such cases, the device may end up relying on both old and new components for its functionality—components that may not be compatible. Regardless of the reason, any partial installation of an update package will likely degrade the end user experience and lead to support calls.

BRIEF SUMMARY

The present invention extends to methods, systems, and computer program products for recovering the last successful device update on a computing system. An update tool can be employed to detect whether an update package is installed successfully. When an update package is successfully installed, the update tool can define a last successful device update that associates the update package with the device that the update package targets. In contrast, when the update package does not install successfully, the update tool can access the last successful device update for the targeted device and use it to obtain and install the previous update package that the last successful device update represents. In this way, the related components for a device can be rolled back to a common state to prevent incompatibilities that may otherwise exist due to the failed installation.

In some embodiments, the present invention is implemented by an update tool as a method for recovering a last successful device update on a computing system. The update tool receives a first update package that targets a device on the computing system. The first update package includes multiple related components for the device. The update tool detects that installation of the first update package has failed. In response, the update tool accesses a last successful device update that is defined for the device and identifies a second update package that is defined in the last successful device update. The update tool then causes the second update package to be installed on the computing system. The second update package also includes the multiple related components for the device.

In some embodiments, the present invention is implemented as computer storage media storing computer executable instructions which when executed on a computing system implement an update tool that is configured to recover a last successful device update on a computing system. The update tool receives a first update package that targets a device on the computing system. The first update package includes multiple related components for the device. The update tool detects that installation of the first update package has completed successfully. In response, the update tool creates a last successful device update that associates the first update package with the device. The update tool receives a second update package that targets the device. The second update package includes the multiple related components for the device. The update tool detects that installation of the second update package has failed. In response to the failed installation, the update tool accesses the last successful device update to identify the first update package and causes the first update package to be installed on the computing system.

In some embodiments, the present invention is implemented as a computing system that includes one or more processors and computer storage media storing computer executable instructions which when executed by the one or more processors implement an update tool. The update tool is configured to detect when an update package is installed successfully and, in response, define a last successful device update that associates the update package with a device that the update package targets. The update tool is also configured to detect when an update package is not installed successfully and, in response, employ the last successful device update to retrieve and install the update package that the last successful device update associates with the device.

This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter.

