Abstract:
Methods, systems and computer program products for multi-platform installation of a customized install package (CIP). In one embodiment of the invention, a multi-platform component installation package is provided which includes components sufficient to assemble complete installation images for installation onto different specified target systems of respective different platform types, and selected ones of the components are assembled together so as to assemble a complete installation image for installation onto a specific one of the different specified target systems.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    1. Field of the Invention 
         [0002]    The present invention relates to the field of application installation and more particularly to application installers. 
         [0003]    2. Description of the Related Art 
         [0004]    Though often overlooked, application installation is a prerequisite to interacting with a software application. Specifically, in most circumstances, an application can be properly executed only subsequent to the completion of a successful installation process. At the minimum, a typical software application installation requires a transfer of files to the file structure of a computing system, and the configuration of the computing system to particularly interact with the software application. Ordinarily, the configuration of the computing system includes the addition or modification of registry settings, the addition or modification of entries to one or more initialization files, or both. 
         [0005]    Typically, software programs include as a component installer logic having program code enabled to substantially automate the installation process. In addition, computer operating systems occasionally incorporate installer logic for use in installing drivers or other software. Likewise, many commercial software offerings are provided with companion updater logic supporting self-updating operations. Generally, the updater logic can be included as a component of the software program itself, or the updater logic can be provided externally as a third-party tool. 
         [0006]    The provision of an updating process is desirable because software programs are frequently modified by end users, for example by applying bug fixes or enhancements (such as new versions of the software). There are many different processes for installing and/or updating software programs. Some processes are entirely automated and substantially invisible to the user, while other processes are better characterized as interactive. Some processes are known to be complex while other processes are viewed to be simpler in nature. 
         [0007]    Software programs used to install new software, to install updates to software, and to uninstall (remove) software are referred to herein as “installer applications”. The term “installer applications” is intended to encompass both stand-alone software programs that can be used to install a variety of software applications (for example, such as installers that may be provided with an operating system), as well as software programs that are adapted to install only a single software application (and may be integrated with the installation file package for that software application). Installer applications, when run, implement a software installation process. 
         [0008]    The great disparity in the nature of different installer applications provides for challenges in the computing enterprise. Specifically, from the development and deployment perspective, each new application generally requires a custom installer for each target platform. Furthermore, most installers only can support a single platform type and the presence of multiple platforms within the enterprise, therefore, requires multiple different installers. Consequently, the deployment of a maintenance update in the enterprise to multiple different platforms (including different supporting operating systems) can require the execution of multiple different installers. 
       BRIEF SUMMARY OF THE INVENTION 
       [0009]    Embodiments of the present invention address deficiencies of the art in respect to multiple platforms and provide a novel and non-obvious method, system and apparatus for multi-platform installation of a customized install package (CIP). In one embodiment of the invention, a software installation method can be provided. The method can include providing a multi-platform component installation package including components sufficient to assemble complete installation images for installation onto different specified target systems of respective different platform types. For instance, the multi-platform component installation package can be provided from a single media source. The method further can include assembling selected ones of the components to assemble a complete installation image for installation onto a specific one of the different specified target systems. 
         [0010]    In one aspect of the embodiment, the method further can include grouping a set of install launchers each specific to a different platform type; further grouping a set of component maps each specific to a different platform type, and storing both common components common to all platform types and native components each specific to a particular platform type. In consequence, the grouping and storing can form the component installation package. Optionally, an installer and a corresponding component map can be selected for a particular platform type of a target system and persisted along with the requisite common and native components for the particular platform type for subsequent use for other target systems of the same platform type. 
         [0011]    In another aspect of the embodiment, tailoring the multi-platform component installation package according to the particular platform type for installation onto the specified target system can include determining the particular platform type for the specified target system and selecting each of an install launcher and a component map for the particular platform type. For example, determining the particular platform type for the specified target system can include detecting an operating system type for the specified target system, or receiving an indication of the platform type for the specified target system. In any event, both the common components and native components for the particular platform type further can be selected for installation onto the specified target system in locations specified by the selected component map utilizing the selected install launcher. 
         [0012]    In another embodiment of the invention, a software installation data processing system can be provided. The system can include a single install factory tool including program code enabled to assemble into a complete installation image for installation a specific specified target system, selected components from among a multiplicity of components for multiple target systems of corresponding different platform types. In one aspect of the embodiment, the program code can be embodied within a multi-platform plug-in. 
         [0013]    As such, in another aspect of the embodiment, the system further can include a single platform plug-in including program code enabled to generate a single installation image corresponding to a specific target platform type. Finally, in yet another aspect of the embodiment, the data processing system can be provided with access to one or more repositories comprising a set of install launchers each specific to a particular platform type, common components for all platform types and native components specific to a particular platform type, and a set of component maps each specific to a particular platform type. 
         [0014]    Additional aspects of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The aspects of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed. 
     
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         [0015]    The accompanying drawings, which are incorporated in and constitute part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown, wherein: 
           [0016]      FIG. 1  is a pictorial illustration of an installation data processing system configured for multi-platform software installation; 
           [0017]      FIG. 2  is a schematic illustration of an installation data processing system configured for multi-platform software installation; 
           [0018]      FIG. 3  is a flow chart illustrating a process for multi-platform software installation. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0019]    Embodiments of the present invention provide a method, system and computer program product for multi-platform software installation. In accordance with an embodiment of the present invention, a complete installation image for an application can be generated from a single installer for different disparate target platforms from a single media source according to a specified platform identity for a target computing system Once the installation image has been generated, the installation image can be copied to permanent storage accessible by the target computer system. In this way, the process of installing software in a multi-platform heterogeneous environment can be reduced to a single installer and a single media source for all installation packages for all target platforms. 
         [0020]    In illustration,  FIG. 1  is a pictorial illustration of an installation data processing system configured for multi-platform software installation. The system can include a host computing device  120  in which an installation image for a software application can be generated. The host computing device can include an install factory tool  130  coupled to each of a multi-platform plug-in  140 A and a single platform plug-in  140 B. The install factory tool  130  further can be coupled to a one-to-one component map  150 A and a multi-platform component map  150 B. The one-to-one component map  150 A can map the identity and location of a component for installation in single platform media  110 A to an installation location in one of the target platforms  180 A,  180 B,  180 N. Likewise, the multi-platform component map  150 B can map the identity and location of a component for installation in a multi-platform media  110 B to an installation location in one or more of the target platforms  180 A,  180 B,  180 N. 
         [0021]    The install factory tool  130  can include program code enabled to process single platform media  110 A and multi-platform media  110 B. In this regard, the install factory tool  130  can process single platform media  110 A conventionally through the single platform plug-in  140 B to conventionally generate individual single platform images  160  for installation onto a corresponding one of the target platforms  180 A,  180 B,  180 N. In this regard, the install factory tool  130  can select components for inclusion in the single platform image  160  along with a one-to-one mapping  150 A of components to component locations in the corresponding one of the target platforms  180 A,  180 B,  180 N. 
         [0022]    In addition to the single platform media  110 A, however, the install factory  130  further can process a multi-platform media  110 B through multi-platform plug-in  140 A to generate a single, multi-platform image  170 . In the latter circumstance, the multi-platform media  110 A can act as a single source of installation for multiple different ones of the target platforms  180 A,  180 B,  180 N. In this regard, the install factory tool  130  can select components for inclusion in the multi-platform image  170  along with a multi-platform mapping  150 B of components to component locations in the correspondingly different ones of the target platforms  180 A,  180 B,  180 N. 
         [0023]    In further illustration of the operation of the installation data processing system of  FIG. 1 ,  FIG. 2  is a schematic illustration of an installation data processing system configured for multi-platform software installation. As shown in  FIG. 2 , the installation process can be bi-furcated into an image generation process and an image deployment process. In the image generation process, installation images may be generated for installation onto multiple, different ones of a set of disparate target platforms. 
         [0024]    Specifically, multiple different install launchers  210 A,  210 B,  210 N can be grouped behind a single install launcher interface  210  in the single media source. A repository  220  can be established to include both common components  230  common to all installation images for all different target platforms, and also native components  240  that are specific to particular installation images for specific target platforms. Optionally, each of the native components  240  can be referenced according to file name, target platform and target platform architecture to provide a readily identifiable association between the native components  240  and the target platform. 
         [0025]    Finally, a component mapping  250  can be established containing component maps  250 A,  250 B,  250 N for different, respective target platforms. At install time, a platform type for a target system  260  can be specified in response to which a corresponding one of the install launchers  210 A,  210 B,  210 N can be selected for grouping an installation image for the specified platform type. Subsequently, the requisite components among the common components  230  can be selected for grouping into an installation image along with those native components  240  specific to the specified platform type. Finally, a pertinent one of the component mappings  250 A,  250 B,  250 N can be selected mapping the components in the installation image to the proper location in the target system  260 . Thereafter, the installation image can be moved to the target system and installed onto the target system. 
         [0026]    In yet further illustration of a platform specific software installation,  FIG. 3  is a flow chart illustrating a process for multi-platform software installation. Beginning in block  310 , a multi-platform component install package can be retrieved, optionally from a single media source, and loaded for processing onto a target platform having a specific platform type. In block  320 , the platform type can be determined, for example by software and/or hardware detection methods, or by way of user input, and in block  330 , an install launcher for the detected platform type can be located in the single media source and loaded for operation. 
         [0027]    In blocks  340 A and  340 B, the common components common to all platform types and native components specific to the detected platform type can be retrieved for installation onto the target platform. Thereafter, in block  350 , a map for the detected platform can be retrieved. Finally, in block  360 , the files making up the retrieved components can be written to the target platform at locations specified according to the retrieved mapping. In this way, multiple different platform types can be accommodated via a single install factory tool. 
         [0028]    Embodiments of the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, and the like. Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. 
         [0029]    For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD. 
         [0030]    A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.