Deploying Multiple cab files at once

I have developed my application and created the .cab file for this application. I followed the tutorial on creating an MSI file and custominstaller and this works fine. My problem comes from the fact that my application must also install .NET framework 2.0 and the SQLMobile .Cab file.

I am wanting to package all of these together and be able to deploy them at one time from a users PC. I am not wanting to make the user click on each cab file to execute them.

Can anyone point me in the direction of a good tutorial to accomplish this, or give me a good idea on how to do it.

Thanks for any help



Answer this question

Deploying Multiple cab files at once

  • jamesIEDOTNET

    Yes, you add them and repeat the same thing you've done with the first INI for each INI you have.

    Sample which does the right thing with one INI can be found here. You can do something like this:

     

    // Run CeAppMgr.exe to install the files to the device
        System.Diagnostics.Process.Start(appMgrPath,
            "\"" + Path.Combine(installPath, CEAPPMGR_INI_FILE) + "\"");

    // Run CeAppMgr.exe to install the files to the device
        System.Diagnostics.Process.Start(appMgrPath,
            "\"" + Path.Combine(installPath, CEAPPMGR_INI_FILE_1) + "\"");

    // Run CeAppMgr.exe to install the files to the device
        System.Diagnostics.Process.Start(appMgrPath,
            "\"" + Path.Combine(installPath, CEAPPMGR_INI_FILE_2) + "\"");

    // Run CeAppMgr.exe to install the files to the device
        System.Diagnostics.Process.Start(appMgrPath,
            "\"" + Path.Combine(installPath, CEAPPMGR_INI_FILE_3) + "\"");

    ...

     

    }

    You can also register all INIs with CeAppMgr and then invoke them. MSDN has description of that.< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />



  • My Name is Adam

    You best bet is deploy CABs one by one via CeAppMgr and INI files.

    Nested CABs is rather theoretical possibility – I’ve never seen and practical implementation.



  • Lorry Craig

    I tried this a couple of times and it did absolutely nothing. as long as there is only one, it works fine. but it seems to do nothing. It doesnt even install the initial system that was installing before I made that change. Is there a link to registering all INIs information.

  • palmqvist

    This seemed to work. Thank you.

    Now I have to check to see if the user has an SD card in, and if so, install pictures on it. Can you force the installation to install onto an SD card. Or better yet, force a cab file to use the SD card.
    and if so, how do you determine if it is called SD Card or Storage Card. 


  • Jamie Thomson

    It probably would work if you add some code to wait for CeAppMgr to exit before running next INI.

    Here's the search query for the link, I believe it's the first one in the list.

    http://search.msdn.microsoft.com/search/default.aspx siteId=0&tab=0&query=register+INI+CeAppMgr



  • NetPochi

    These functions are indeed in optional setup DLL which lives inside a CAB file and runs on device while CAB is installed. So it's irrelevant to the desktop side installer. There's sample code for CAB setup DLL in WM SDK (C++ as it must be native).



  • Shodin

    Please try this:

    System.Diagnostics.Process.Start(appMgrPath, "\"" + Path.Combine(installPath, ceappmgr_INI_File_NET) + "\"").WaitForExit();

    In VB it looks like this:

    System.Diagnostics.Process.Start(appMgrPath, "\"" + Path.Combine(installPath, ceappmgr_INI_File_NET) + "\"").WaitForExit()

    By the way, you can create installer DLL in VB if you having issues with C#.



  • Lukke

  • Steve Russell

    Ok, I have gone through a good deal of msdn pages and have not found a good example of how to do this. Do I just add multiple INI files to my msi project.
  • GRK

    I was playing with the idea of doing this from installerDLL from the before mentioned method

    System.Diagnostics.Process.Start(appMgrPath, "\"" + Path.Combine(installPath, ceappmgr_INI_File_NET) + "\"");
    System.Diagnostics.Process.Start(appMgrPath, "\"" + Path.Combine(installPath, ceappmgr_INI_File2) + "\"");
    System.Diagnostics.Process.Start(appMgrPath,"\"" + Path.Combine(installPath, CEAPPMGR_INI_FILE) + "\"");


    This is working to an extent. It sometimes gives me an error and sometimes installs 1 or 2 or all 3 cab files. What I want to do is pause the system in between the starts and check the process continually until it is finished then start the next one. I have never written an C# code, so I will need some help. How do I check to see if a process is still active and running or done. also how would I pause the installerDLL. something like untilll process is stopped do nothing. Once the process is stopped, start the next one.

  • Karthy

    Could you provide full code for the deployment stages

    Please

    maybe email me @ jason.jones@cornerkey.com

    or even maybe try and answer this quetsion hehe

    http://forums.microsoft.com/MSDN/ShowPost.aspx PostID=1232744&SiteID=1

    Many Thanks in advance!!!


  • ridvan

    CAB installer would determine if storage card is available on device upon installation and user would have the opportunity to install on to it.



  • Peter K

    Can I use installer.dll to do what I am wanting to do.  If I create different .cab projects and different .INI files and use them in the installer.dll.   would this work to do what I want it to do.

    I have seen people talking about the setup.dll file.    If this is my best option.  Is there anywhere that I may be able to get some sample code to try to do it that way.


  • Always Learning

    I have looked at a great deal of information on the Install_Init and Install_Exit functions and that seems like where I need to be working. The problem is, I have no idea where those two functions are, are they in the installerDLL or somewhere else. I have also never seen, that I know of, and source code examples for this. can someone explain Install_Init and Install_Exit functions to me and where to find/use them.

  • Deploying Multiple cab files at once