Click here to Skip to main content
Click here to Skip to main content

Iterate and Extract Cabinet File

, 24 May 2004
Rate this:
Please Sign up or sign in to vote.
Iterate and extract Cabinet File

Introduction

The .NET Framework doesn't provide us with Cabinet File functionality through the programming interface. However, the Setupapi.dll enables us to handle cabinet files except for compressing. This TCabinet class encapsulates some functions of the Setupapi.dll in order to iterate and extract a cabinet file.

Background

TCabinet class encapsulates the following functions in setupapi.dll:

[DllImport("SetupApi.dll", CharSet=CharSet.Auto)]
public static extern bool SetupIterateCabinet(string cabinetFile, 
                    uint reserved, PSP_FILE_CALLBACK callBack, uint context); 

public delegate uint PSP_FILE_CALLBACK(uint context, uint notification, 
                                       IntPtr param1, IntPtr param2);


private uint CallBack(uint context, uint notification, IntPtr param1, 
                     IntPtr param2)
{
    uint rtnValue = SetupApiWrapper.NO_ERROR;
    switch (notification)
    { 
        case SetupApiWrapper.SPFILENOTIFY_FILEINCABINET:
            rtnValue = OnFileFound(context, notification, param1, param2);
            break;
        case SetupApiWrapper.SPFILENOTIFY_FILEEXTRACTED:
            rtnValue = OnFileExtractComplete(param1);
            break;
        case SetupApiWrapper.SPFILENOTIFY_NEEDNEWCABINET:
            rtnValue = SetupApiWrapper.NO_ERROR;
        break;
    }
    return rtnValue;
}

History

  • 25th May, 2004: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

aplaxas

France France
No Biography provided

Comments and Discussions

 
GeneralThanks so much its working fine for me. Pinmembershahshi24-Aug-10 21:22 
GeneralThe system cannot find the file specified Pinmembermikey22217-Oct-09 13:07 
GeneralEssential!!! PinmemberRakshun29-Aug-09 8:04 
GeneralSomething is wrong!It cannot open the 2nd cab file. Pinmemberwinxp8455-Jan-09 10:12 
GeneralError opening second cab PinmemberXtravar24-Oct-08 7:53 
QuestionSome Questions! Pinmemberlilish18-Dec-06 9:07 
GeneralA little more work required PinmemberColin Angus Mackay25-May-04 9:55 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web01 | 2.8.140721.1 | Last Updated 25 May 2004
Article Copyright 2004 by aplaxas
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid