Patent Publication Number: US-7913249-B1

Title: Software installation checker

Description:
FIELD OF THE INVENTION 
     The present invention relates to a software tool for testing and monitoring software installation, and reporting testing results. 
     BACKGROUND OF THE INVENTION 
     Our daily work and life is becoming more and more related to computers and software. From time to time, new software is added to and existing software is upgraded in existing networked computers. Whether the newly-added or upgraded software operates reliably depends, for the most part, on whether the software is properly installed at the beginning. Hence, a mechanism needs to be designed for testing and monitoring software installation in the networked computers by a combination of desktop and server software, and reporting the testing results to a system administrator so that any problems arising during the installation can be detected and fixed promptly. 
     SUMMARY OF THE INVENTION 
     Therefore, an object of the present invention is to build up a software tool for testing and monitoring whether software applications are properly installed in networked computers, and reporting the testing results to a network server so that installation problems can be detected and fixed promptly. 
     In accordance with an aspect of the present invention, a software installation checker comprises an executable stub which is installed in the networked computers and is used to obtain a bootstrapper from a server at run time. 
     In accordance with another aspect of the present invention, a software installation checker comprises a bootstrapper which is used to prepare an engine for execution. 
     In accordance with a yet another aspect of the present invention, a software installation checker comprises an engine which performs the installation check. 
     In accordance with a further aspect of the present invention, a software installation checker comprises a collector which instructs the engine what tasks will be carried out. 
     In accordance with a yet further aspect of the present invention, a software installation checker comprises a user interface which is used for querying and reporting on the gathered data. 
     In according with a still further aspect of the present invention, a software installation checker comprises a database which is used for storing the data collected during the check. 
     The above and other objects and features of the present invention will be apparent in the following detailed description of the present invention when read in conjunction with the accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       In order to facilitate a fuller understanding of the present invention, reference is now made to the accompanying drawings. These drawings should not be construed as limiting the present disclosure, but are intended to be exemplary only. 
         FIG. 1  is a block diagram illustrating an embodiment of a software installation checker. 
         FIG. 2  is a diagram illustrating exemplary display contents of the data collected during an installation check by a user interface in accordance with one embodiment of the present invention. 
         FIG. 3  is a flowchart showing a software installation checking process in accordance with one embodiment of the present invention. 
         FIG. 4  is a diagram illustrating software installation checking sequences in accordance with one embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       FIG. 1  is a block diagram illustrating an embodiment of a software installation checker  100 . The software installation checker comprises a stub  101 , a bootstrapper  102 , an engine  103 , a collector  104 , a database  105 , and a user interface  106 . 
     The stub is an executable application which is the only installed component of the software installation checker on a networked computer. The stub can be (but is not limited to) a small C# application, and is installed as a part of an infrastructure package which supports software applications in a networked computer. According to another approach, the stub can also be installed with an individual software application, in which it only checks installation of that particular software. 
     The bootstrapper is a class existing in a library (e.g., DLL) which is fetched and downloaded from a known uniform resource location (URL) via a request by the stub. The stub is configured with a list of URLs so that the bootstrapper can be fetched from any of the sites. The bootstrapper is used to unpack any data it finds in the library (e.g., the engine) into a temporary folder created in a desktop user&#39;s local profile and pass control to it. 
     The engine is an executable application and can perform a number of checking tasks. For example, modifying a target computer; getting information on files in a directory such as filename, size, and an MD5checksum; getting information from a location in a registry; getting information about a installed software; getting information about Microsoft Office application configuration; getting a specific file; and getting environment variables. Furthermore, within a particular installation check, each of the above checking tasks could be run separately or in combination. 
     The collector is a server component which tells the engine what tasks to run on the designated computer and collects the checking results. 
     The database is a server component used for storing the data collected during the check. In a preferred embodiment, a HSQLDB pure Java database is used. 
     The user interface is a server component which presents and reports the data collected during the check to a system administrator. The user interface can configure display contents using different set of rules. The display contents can be added to or modified without rerunning the check on the designated computer. 
     It should be understood that the collector is a separate component from the user interface. The user interface contains predefined rules to processing the collected data, which could be updated without interrupting the upload of data. 
       FIG. 2  is a diagram illustrating exemplary display contents of the data collected during an installation check by a user interface in accordance with one embodiment of the present invention. The Op, App and Version fields in the displayed screen are used to describe why the check was run. For example, when the installed software application to be checked is an infrastructure package named GPS, Op is set to “install”, App to “gps”, and Version to whatever the version is. If a desktop user decides to manually check an installation, then Op is set to “check”, App to “gps”, and Version is blank. 
       FIG. 3  is a flowchart showing a software installation checking process in accordance with one embodiment of the present invention.  FIG. 4  is a diagram illustrating software installation checking sequences in accordance with one embodiment of the present invention. The process of  FIG. 3  is described in connection with the sequences of  FIG. 4  in order to set forth the process in a concrete fashion easily understood by the person of ordinary skills. 
     As set forth in step  200  of  FIG. 3 , a stub is pre-installed in each networked computer as a part of an infrastructure to support software applications or included in the installer of an individual software application. When the stub is activated and run by a system administrator or a desktop user  201 , it makes a request to a known uniform resource location (URL) with parameters which reflect specific information about the run of the check (namely, the application ID, the version, and the operation control), and fetches and downloads a library (e.g., DLL)  202  (also as shown in  FIG. 4 ). The library comprises a class with a method. The class is looked for by the stub once it has the library. Then the Stub runs the method on the class, passing to the class the information (namely, the application ID, the version, and the operation control) as well as the server from which the library was fetched  203 . 
     The implementation of the class in the library is to embed a bootstrapper, which unpacks any data found in the library including an engine into a temporary folder created in the user&#39;s local profile and passes control to the engine  204 . To determine which tasks are run, the engine calls a collector which is a functional unit of the server  205  (also as shown in  FIG. 4 ). The collector instructs the engine what tasks to run on the designated computer (as shown in  FIG. 4 ). The engine then performs the check  206 . Once the check is completed, the collected data and information are sent back to the collector, stored in the database of the server, and presented in pre-designed reporting forms via a user interface of the server  207  (also as shown in  FIG. 4 ). Based on these reported data, the system administrator could promptly find and fix installation errors  208 . 
     Although an illustrative embodiment of the present invention, and various modifications thereof, have been described in detail herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to this precise embodiment and the described modifications, and that various changes and further modifications may be effected therein by one skilled in the art without departing from the scope or spirit of the invention as defined in the appended claims.