In the drawings, like reference characters generally refer to the same parts throughout the different views. Also, the drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the principles of the invention.
The invention relates generally to computer system maintenance, and more particularly to a utility that searches a customer's computer system to determine a maintenance level for each software program on the customer's computer system, and assists the customer in automatically maintaining each software program. The maintenance level of a particular software program is a list of the updates, patches, and fixes that have been downloaded and installed for that particular software program.
Referring to
In some embodiments, the customer computer system 105 may be a desk top computer system, a laptop computer, personal data assistant (PDA), or any other computing device that includes a processor or central processing unit (CPU), random access memory (RAM), a mass storage device (e.g., hard disk), and is capable of executing software programs.
In a preferred embodiment, the maintenance utility is software program that is downloaded and installed on the customer computer system 105. The programming language that the maintenance utility is written in is irrelevant to its function. However, the maintenance utility can be implemented in a standard high level language such as C, C++, JAVA, PLX, etc.
The maintenance utility, when executed, functions transparently to monitor other executing software programs. When a particular software program is executing (i.e., loaded and running in RAM) on the customer computer system 105, the maintenance utility searches or scans an active storage area (i.e., RAM) on the customer's computer system 105 to determine the particular maintenance level of a software program. The maintenance level (i.e., version, revision, release level, etc.) of a software program is a list of the updates, patches, or fixes to known errors that have been downloaded and installed for that particular software program.
Referring to
When a particular software program is executed, the maintenance utility determines the maintenance level of the particular software program by searching or scanning (in active storage) various software product modules associated with the software program (e.g., dynamic link libraries), or headers (i.e., eyecatcher) in the software code (i.e. executable files) for a revision history or code timestamp (Step 210). If there is no header, the maintenance utility can check module length, build date, time, file size, or other attribute that varies with revision. The maintenance utility can also search the program instructions of the executable code. For example, the latest patch or code change may have changed three lines of source code that resulted in ten lines of assembler instructions being altered at a particular offset into a particular module. The hexadecimal representation of this section of the module in a memory dump file can be compared to an assembly listing of the module to determine if altered lines of code are consistent with the new maintenance level. If they are not, the maintenance utility can go back to the second oldest patch or code change and search and compare again to see if this patch/code change has been applied. All code changes are (by common programming standard) applied in chronological order of their release date, and the maintenance level corresponds to the newest level of patch or code change that has been installed. Therefore, once the newest level of patch or code change is determined, the maintenance level is known.
The maintenance utility also searches the mass storage device (e.g., hard disk) of the customer computer system 105 to obtain a list of the updates have been downloaded and compares the list to the maintenance level to determine if there are any updates that have been downloaded but not installed (Step 215). In another embodiment, the maintenance utility also searches a memory dump file or a temporary data file that is created by the software program and stored on the customer's computer system 105 to determine the particular version of the software program.
This method of determining the maintenance level of a software program differs significantly from existing methods in that existing methods involve searching a database stored on the customer computer, such as the Microsoft Windows® registry. A problem with this method is that an entry corresponding to a particular update in a database is only an indication that the particular update was downloaded and installed. The update may have been installed incorrectly, or installed correctly but not activated, such as by a system reset, for example. Determining the maintenance level using the method of the instant invention allows a customer to know exactly what updates have been downloaded, which downloaded updates have been installed, and which installed updates have been properly activated.
If the database or registry that tracks maintenance updates indicates that a code change or patch has been applied, but the search executed by the maintenance utility described above determines that code change or patch has not been applied, then the patch or code change is not properly activated. If these two sources agree, then the code change or patch has been properly activated.
In other embodiments, for products that do not use a database or registry to track updates, the source code stored in mass storage is compared to its representation in memory (RAM) that is currently loaded (during execution). The maintenance utility will flag any difference and the determine the maintenance level of the two sources. The proper activation of the update is then product specific and the varies by source but will generally involve reloading the program from mass storage to memory (RAM) and may, or may not, require a restart of the application and/or the software subsystem.
The maintenance utility next searches a software maintenance database (e.g., software maintenance database 140, 145, or 150) of the software provider that supplied the particular software program for updates that are not listed in the maintenance level (including updates that have been downloaded but not installed). The maintenance utility then produces a list of updates that are available for the software program (Step 220). An update includes an updated version of the particular software program, a patch for the particular version of the software program, or a fix to a known error in the particular version of the software program that has not already been downloaded an installed.
In one embodiment, the when the customer purchases the maintenance utility, a license to access the software maintenance databases (e.g., software maintenance database 140, 145, or 150) of the participating software providers is included. In other embodiments, the customer purchases the maintenance utility and purchases a separate license to access each software maintenance database for the programs the customer wants to maintain. In some embodiments, a license includes registration and access code that allows the maintenance utility to access the updates on a software maintenance databases (e.g., software maintenance database 140, 145, or 150). Registration can occur at the time the maintenance utility is installed. The maintenance utility would transmit the proper access code (or password) to access a software maintenance database.
In still other embodiments, the program executing on the customer computer system 105 is registered with a unique Id that is associated with a customer number and customer computer system identifier (the customer may have multiple systems, each of which would be handled uniquely as they may not be at the same levels). The unique Id is used to authenticate the proprietary database behind an appropriate firewall where the customer's license information and system records are kept. The software maintenance databases (e.g., 140, 145, and 150) are similarly protected to insure their integrity and accuracy.
If any updates are available, the maintenance utility automatically initiates downloading of the updates to the customer computer system 105 (via a TCP/IP communication protocol) and installs the update (Step 225).
After any updates have been installed, the maintenance utility provides a message (e.g., a pop-up window) including the status of the most recent updates and any specific instructions regarding activating the updates (Step 230), such as requiring a computer system reboot, for example.
In another embodiment, the maintenance utility provides a status of the software program maintenance level before downloading any updates. The status includes a list of any available updates for the version of the software program, whether the available updates, if any, have been downloaded, whether the downloaded updates, if any, have been installed, and whether the installed updates, if any, have been activated. The status also includes a list of bad updates and whether they have been downloaded and installed on the customer computer system 105. A bad update is an update, patch, or fix to a known error that includes an error, and should not be installed.
The maintenance utility then allows a customer (or system administrator) to select the actions he/she wants executed. For example, if there are any updates that have not been downloaded, the customer can instruct the maintenance utility to download any or all of them. If there are updates that have been downloaded to the customer computer system 105, but not installed, the customer can instruct the maintenance utility to install them. If there are updates that have been downloaded and installed, but not properly activated, the customer can instruct the maintenance utility to properly activate the updates. If there are bad/faulty updates that have been previously installed, the customer can instruct the maintenance utility to uninstall the bad/faulty updates.
Referring to
If the error is a known error and there is an available fix for the known error, the maintenance utility downloads and installs the available fix for the known error (325). If the error is a known error and there is no available fix, the maintenance utility reports the error to the software provider (Step 330)
In another embodiment, before downloading the available fix for the known error, the maintenance utility will notify the user via email, pager, instant message, etc. that a fix for the known error has been found. Thereafter, the customer can instruct the maintenance utility to download the fix at any time. In still another embodiment, the maintenance utility displays a status of the error maintenance. The status of the error maintenance includes the name of the software program, the error the occurred, the status of the error (i.e., known or unknown), the available fix for the error, if any, and the severity of the error and how critical the fix is. The customer then has the option of selecting which fixes he/she wants to download and install.
Referring to
First, the customer enters the description/symptoms of the error (Step 405). Next, the maintenance utility searches the software maintenance database (140, 145, or 150) of the software provider that provides the software to determine if the error is a known error (Step 410). If the error is a known error, the maintenance utility determines if there is an available fix for the known error (415). If the error is an unknown error, the maintenance utility reports the error to the software provider (e.g., via email or other communication method) (Step 420).
If the error is a known error and there is an available fix for the known error, the maintenance utility downloads and installs the available fix for the known error (425). If the error is a known error and there is no available fix, the maintenance utility reports the error to the software provider (Step 430)
Referring again to
Variations, modifications, and other implementations of what is described herein may occur to those of ordinary skill in the art without departing from the spirit and scope of the invention. Accordingly, the invention is not to be defined only by the preceding illustrative description.