The field of invention relates generally to computing systems, and, more specifically, to mitigating problems arising from incompatible software.
The average computer has many applications installed and possibly running on it. However, some of these applications may be incompatible with the software which is running on the computer. Furthermore, these incompatible applications may prevent the computer from being usable once new or upgraded software is installed.
Mechanisms for mitigating problems arising from incompatible software are described herein. In one embodiment, a process can be provided to obtain an incompatibility list from an external source. The incompatibility list can identify non-priority software which is incompatible with priority software to be installed or already installed on a system. A determination can be made as to whether the non-priority software from the incompatibility list resides on the system. One or more files may be associated with the non-priority software identified in the incompatibility list. If these one or more files reside on the system, they can be automatically quarantined. Systems, methods, and machine readable storage media which perform or implement one or more embodiments are also described.
Other features of the present invention will be apparent from the accompanying drawings and from the detailed description which follows.
The present invention is illustrated by way of example and not limited in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
In the following detailed description of embodiments of the invention, reference is made to the accompanying drawings in which like references indicate similar elements, and in which is shown by way of illustration specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, mechanical, electrical, functional, and other changes may be made without departing from the scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.
Third party software can affect the stability of an operating system. If incompatibilities between third party software and a new version of an operating system are discovered after the physical media containing the operating system installation program has gone to manufacturing or after the operating system has otherwise been released for distribution, it is possible to mitigate the problem by retrieving an up-to-date list of the problematic software (e.g., through a network connection), and quarantining files associated with that software. In embodiment, one or more of the quarantined files can be identified in the retrieved list.
While one illustrative example described herein identifies and quarantines third party software that are incompatible with operating system software, the embodiments described herein can be applied to identify and quarantine any software that is incompatible with any other software to be installed or already installed on a computing system. As used herein, the software that is quarantined has a lower priority relative to the software to which the quarantined software is incompatible. Accordingly, the description herein will use the terms “non-priority software” and “priority software” respectively to reflect the relative priority. It should be understood that, while a particular software may be considered priority software in one instance, the same software may be considered non-priority software in another instance when it is incompatible with software having a higher priority. Priorities can be based on any number of factors and specific to each situation.
In one embodiment, if a network is available, the incompatibility list can be downloaded over a network. In one embodiment, priority software to be installed on a computing system can be downloaded over the network concurrently with an incompatibility list that identifies non-priority software.
In one embodiment, if a network is not available, a computing system can obtain the incompatibility list from installation media on which the priority software also is stored or can use a pre-existing incompatibility list stored in a location accessible to the system (e.g., stored in local memory).
Main memory 120 encompasses all volatile or non-volatile storage media, such as dynamic random access memory (DRAM), static RAM (SRAM), or flash memory. Main memory 120 includes storage locations that are addressable by the processing unit(s) 110 for storing computer program code and data structures for determining and quarantining incompatible applications. Such computer program code and data structures also may be stored in non-volatile storage 130. Non-volatile storage 130 includes all non-volatile storage media, such as any type of disk including floppy disks, optical disks such as CDs, DVDs and BDs (Blu-ray Disks), and magnetic-optical disks, magnetic or optical cards, or any type of media, and may be loaded onto the main memory 120. Those skilled in the art will immediately recognize that the term “computer-readable storage medium” or “machine readable storage medium” includes any type of volatile or non-volatile storage device that is accessible by a processor (including main memory 120 and non-volatile storage 130).
Processing unit(s) 110 is coupled to main memory 120 and non-volatile storage 130 through bus 140. Processing unit(s) 110 includes processing elements and/or logic circuitry configured to execute the computer program code and manipulate the data structures. It will be apparent to those skilled in the art that other processing and memory means, including various computer readable storage media, may be used for storing and executing computer program code pertaining to mitigate problems arising from incompatible software.
Processing unit(s) 110 can retrieve instructions from main memory 120 and non-volatile storage 130 via bus 140 and execute the instructions to perform operations described below. Bus 140 is coupled to I/O controller 150. I/O controller 150 is also coupled to network interface 160. Network interface 160 can connect to a network to download an incompatibility list that identifies non-priority software incompatible with priority software to be installed or already installed on computer system 100.
Bus 140 is further coupled to I/O controller(s) 170. I/O controller(s) 170 are coupled to I/O peripherals 180, which may be mice, keyboards, modems, disk drives, optical drives, printers and other devices which are well known in the art.
Pre-existing incompatibility list 220 can identify non-priority software which is incompatible with priority software. In one embodiment, the priority software can already be installed on the system. In an alternate embodiment, the priority software can be software which is to be installed on the system. The non-priority software identified in the incompatibility list can be file names, application names, or other designations that identify incompatible software that needs to be quarantined. Software can be applications or portions thereof, other executables, drivers, or text files to be used by executable software. As used herein, the term “software” can be used in the singular or plural form.
In one embodiment, the non-priority software can include software which prevents the priority software from booting or logging on. In one embodiment, the priority software can be an operating system. In one embodiment, pre-existing incompatibility list 220 can be located in memory 210. In an alternate embodiment, pre-existing incompatibility list 220 can be located in operating system 230. In yet another alternate embodiment, pre-existing incompatibility list 220 can be stored on the installation media on which the priority software also is stored. In this embodiment, the incompatibility list can identify non-priority software incompatible with priority software to be installed at the time the priority software was released.
Incompatibility list downloader 240 obtains an incompatibility list to be used in the quarantining process from an external source. In one embodiment, incompatibility list downloader 240 can determine if a network is available. In this embodiment, if a network is available, incompatibility list downloader 240 can download an incompatibility list over the network. In one embodiment, the incompatibility list can reflect non-priority software which has been tested and found to be incompatible with the priority software. In one embodiment, the priority software can be downloaded over the network concurrently with the incompatibility list.
In one embodiment, if a network is not available, incompatibility list downloader 240 can obtain the incompatibility list from pre-existing incompatibility list 220. In an alternate embodiment, incompatibility list downloader 240 can obtain the incompatibility list from operating system 230. In yet another alternate embodiment, if a network is not available, incompatibility list downloader 240 can obtain the incompatibility list from the installation media on which the priority software also is stored. The obtaining of the incompatibility list is described below in conjunction with
Upon receiving a completion notice from incompatibility list downloader 240, software installer 250 can install the priority software. In an alternate embodiment, no completion notice is sent from incompatibility list downloader 240. In this embodiment, software installer 250 can install the priority software without waiting for a completion notice. In one embodiment, prior to installing the priority software, software installer 250 can remove any previous software which will be overwritten with the priority software to be installed. In an alternate embodiment, software installer 250 can install priority software which is new on the system. In another alternate embodiment, software installer 250 can update or overwrite software which is already installed on the system. In certain embodiments, software installer 250 can be optional if the priority software is already installed on the system and does not need to be updated or overwritten.
Upon successful installation of the priority software by software installer 250 or if the priority software is already installed on the system, application quarantiner 260 can quarantine the portion of data 270 associated with the incompatible non-priority software. In one embodiment, the quarantined portion of data 270 can be based on the incompatibility list obtained by incompatibility list downloader 240. The quarantine process is described below in conjunction with
Referring to
In one embodiment, if a network is available, the process continues to block 530. At block 530, an incompatibility list can be downloaded over the network. In one embodiment, the priority software can be downloaded over the network concurrently with the incompatibility list. In one embodiment, once the incompatibility list is downloaded over the network, the incompatibility list can overwrite a pre-existing incompatibility list. In an alternate embodiment, the incompatibility list can augment a pre-existing incompatibility list. In another alternate embodiment, the incompatibility list can change or be merged with a pre-existing incompatibility list. Once the incompatibility list has been downloaded, the process proceeds to block 540.
At block 540, the downloaded incompatibility list can be authenticated and/or verified. In one embodiment, the authentication and verification can be done using the process described below in conjunction with
At block 550, the process installs the priority software. In one embodiment, the priority software can be an operating system. In one embodiment, prior to installing the priority software, any previous software which will be overwritten with the priority software can be removed. In an alternate embodiment, the priority software can be updated or overwritten without being removed. In another alternate embodiment, the priority software can be new to the system. In certain embodiments, block 550 can be optional if the priority software is already installed on the system and does not need to be updated or overwritten. Upon the completion of the installation of the priority software, the process proceeds to block 560.
At block 560, a determination is made as to whether the non-priority software from the incompatibility list resides on the system. If the non-priority software does not reside on the system, the process ends. In one embodiment, if the non-priority software resides on the system, a determination can be made as to whether an update exists for the non-priority software which cures the incompatibility. The process for curing an incompatibility is described below in conjunction with
At block 570, a file associated with the non-priority software residing on the system is quarantined based on the incompatibility list. In one embodiment, the non-priority software identified in the incompatibility list is comprised of one or more files and is a subset of the one or more quarantined files. In one embodiment, a quarantined file can be relocated to a quarantine location on the system, such that the system does not access or run the file during normal operation. In an alternate embodiment, the name of the quarantined file can be modified to include a descriptor which indicates that the quarantined file is quarantined. In another alternate embodiment, the quarantined file can be modified to include a designator in the file contents to indicate that the quarantined file has been quarantined. In yet another alternate embodiment, the metadata associated with the quarantined file can be modified to include a designator to indicate that the quarantined file has been quarantined. In these alternate embodiments, the system cannot access or run the quarantined file during normal operations. The process then ends.
Method 500 illustrates one implementation of quarantining incompatible software. In alternate embodiments, the order in which the blocks of method 500 are performed can be modified without departing from the scope of the invention. In one embodiment, method 500 can install the priority software prior to quarantining incompatible software. In an alternate embodiment, method 500 can quarantine the incompatible software prior to installing the priority software. In yet another embodiment, the determination of whether a network is available can be made after the priority software is installed.
Referring to
At block 620, a determination is made as to whether the downloaded incompatibility list passes a version check. In one embodiment, the version check can determine whether a version number of the downloaded incompatibility list compares in a predetermined manner (e.g., greater than) to a version number of a pre-existing incompatibility list. In an alternate embodiment, the version check can determine whether a time stamp of the downloaded incompatibility list compares in a predetermined manner (e.g., is later than) to a time stamp of a pre-existing incompatibility list. If the downloaded incompatibility list does not pass the version check, the process continues to block 630. If the downloaded incompatibility list passes the version check, the process continues to block 640.
At block 630, the incompatibility list update installation is aborted and the process ends. In one embodiment, as part of aborting the installation, a pre-existing incompatibility list can be obtained from storage. In an alternate embodiment, as part of aborting the installation, the incompatibility list can be obtained from the installation media on which the priority software also is stored. The process then ends.
At block 640, the downloaded incompatibility list is stored in the system. In one embodiment, once the incompatibility list is downloaded over the network, the incompatibility list can overwrite a pre-existing incompatibility list. In an alternate embodiment, the incompatibility list can augment a pre-existing incompatibility list. In another alternate embodiment, the incompatibility list can change or be merged with a pre-existing incompatibility list. The process then ends.
Referring to
At block 720, the priority software is installed. In one embodiment, the priority software can be an operating system. In one embodiment, prior to installing the priority software, any previous software which will be overwritten with the priority software can be removed. In an alternate embodiment, the priority software can be updated or overwritten without being removed. In another alternate embodiment, the priority software can be new to the system. In certain embodiments, block 720 can be optional if the priority software is already installed on the system and does not need to be updated or overwritten. Upon a successful installation of the priority software, the process proceeds to block 730.
At block 730, the user can be notified that a file associated with the non-priority software has been quarantined. In one embodiment, the user can be notified that the file has been quarantined after the system has been restarted. In one embodiment, the user can be notified only once of the quarantined files. In an alternate embodiment, the user can be notified of the quarantined files each time the system boots.
In certain embodiments, block 730 is optional and is not performed. In certain embodiments, if block 730 is omitted, the process ends after block 720.
Referring to
At block 820, the update for the non-priority software which cures the incompatibility is installed. The process then ends.
Method 800 can be performed prior to quarantining one or more files associated with the non-priority software or can be performed once the one or more files associated with the non-priority software have been quarantined.
The methods as described herein are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the present invention as described herein. Furthermore, it is common in the art to speak of software, in one form or another (e.g., program, procedure, process, application, module, logic, etc.), as taking an action or causing a result. Such expressions are merely a shorthand way of saying that execution of the software by a computer causes the processor of the computer to perform an action or produce a result. It will be further appreciated that more or fewer processes may be incorporated into the methods 500, 600, 700, and 800 in
It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.