Click here to Skip to main content
15,879,490 members
Articles / Programming Languages / C#
Article

Iterate and Extract Cabinet File

Rate me:
Please Sign up or sign in to vote.
2.95/5 (14 votes)
24 May 2004CPOL 78.8K   2.1K   12   7
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:

C#
[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)


Written By
France France
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

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

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

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