Search code examples
crystal-reportsinstallationwindows-installersetup-projectcab

How can I create an MSI from a CAB file?


I need to push out a Crystal Reports Active X Print Control to my users, as they do not have access to their own machines to install it themselves. Ideally I'd like to do this via an MSI that I can push out via group policy.

Below is the .inf file from within the CAB. From what I've read, I believe I can repackage this in a "setup project" in Visual Studio, but I'm looking for some advice on how to go about that.

[version]
    signature="$CHICAGO$"   
    AdvancedINF=2.0   
[Add.Code]
    PrintControl.dll=PrintControl.dll
    csprintdlg.dll=csprintdlg.dll
    pvlocale-1-0.dll=pvlocale-1-0.dll   
    xerces-c_2_7.dll=xerces-c_2_7.dll
    msvcr80.dll=msvcr80.dll
    Microsoft.VC80.CRT.manifest=Microsoft.VC80.CRT.manifest
    LCIDTable.xml=LCIDTable.xml
[PrintControl.dll]
    file-win32-x86=thiscab   
    CLSID={B7DA1CA9-1EF8-4831-868A-A767093EA685}
    FileVersion=13,0,0,99
    RegisterServer=yes 
[pvlocale-1-0.dll]
    file-win32-x86=thiscab  
    FileVersion=13,0,0,99
[csprintdlg.dll]
    file-win32-x86=thiscab  
    FileVersion=13,0,0,99
[xerces-c_2_7.dll]
    file-win32-x86=thiscab  
    FileVersion=14,0,0,716
[msvcr80.dll]
    file-win32-x86=thiscab
    FileVersion=8,0,50727,4053
[Microsoft.VC80.CRT.manifest]
    file-win32-x86=thiscab
[LCIDTable.xml]
    file-win32-x86=thiscab

Solution

  • MSI packages can deploy CABs only if the CAB information is stored in the MSI database (files and folders). So the recommended approach would be to extract the CAB content and add it in a MSI manually.