Click here to Skip to main content
11,629,614 members (80,091 online)
Click here to Skip to main content

A tool to strip zips of unwanted files before submitting to CodeProject

, 19 May 2004 CPOL 79K 1.1K 34
Rate this:
Please Sign up or sign in to vote.
The CPZipStripper tool with source code

Fig. 1 - The red colored files will get stripped

Introduction

The CPZipStripper is a simple tool I've been using when editing and submitting articles on CP, and all it does is to remove unwanted files from the zips - like debug and obj folder files, suo files, pdb files, aps files etc. to name a few. It's a one-click tool - so you don't have to waste time opening the zip in WinZip or some such tool and then manually deleting unwanted files.

It would be very nice if article authors would use this tool on their zips before sending it to us, so that the size of the mails received by the editors will be considerably lesser.

Installation

Unzip the three files in release.zip to any permanent folder of your choice :-

  • CPZipStripper.exe - This is the main executable (.NET IL exe targetted at FW 1.1)
  • CPZipStripperCfg.xml - Configuration file
  • ICSharpCode.SharpZipLib.dll - the DLL that I use for accessing the zip files (SharpZipLib)

Now just run CPZipStripper.exe once and exit. That's all.

Using the tool

You can either drag/drop a zip into the program window or right click a zip file and choose the "Open with ZipStrip" option, but for the context menu item to get added, you'll need to run the program at least once - as it does not have a separate installer.

Fig. 2 - Context menu item for zip files in Explorer

The buttons

  • Modify Config - This will open the config XML file in your windows XML editor - if you don't have one, it will report an error. If so, manually open the XML file in Notepad and make your changes.

    • The extensions node lists all extensions that need to be deleted
    • The paths node lists all paths that you want to be deleted (thus if you have debug in there, any file whose extract path contains debug is deleted)
    • The files node lists any specific filenames that you want deleted
  • Refresh Listbox - If the zip file has changed or you have made modifications to the XML config file, please hit the "Refresh Listbox" button
  • Strip Unwanted files - This will remove all the unwanted files (shown in red in the listbox) and will replace the zip with a clean file, but also backs up the old file.
  • Exit Program - Use this one with case, as it closes the program Wink | ;-)

Interesting points

Here are some odd things I learned Smile | :)

Handling drag/drop was really easier than I expected it to be. First you need to set the Form's AllowDrop property to true. Then just handle the DragEnter and DragDrop events.

private void MainForm_DragDrop(object sender, 
    System.Windows.Forms.DragEventArgs e)
{
    Array arr = (Array)e.Data.GetData(DataFormats.FileDrop);
    if(arr != null)
    {
        //Doing it asynchronously else Explorer will freeze too                
        BeginInvoke(new DroppedFileHandler(FilterZip),
            new object[] {arr.GetValue(0).ToString()});
    }            
}
private void MainForm_DragEnter(object sender, 
    System.Windows.Forms.DragEventArgs e)
{
    //To change the mouse cursor if there are any files
    e.Effect = e.Data.GetDataPresent(DataFormats.FileDrop) ? 
        DragDropEffects.Copy : DragDropEffects.None;
}

If you are interested in a generic function that will let you add a context menu item for a specific file type :-

See my blog entry : A simple C# function to add context menu items in Explorer and here's the function.

private bool AddContextMenuItem(string Extension, 
 string MenuName, string MenuDescription, 
 string MenuCommand)
{
  bool ret = false;
  RegistryKey rkey = Registry.ClassesRoot.OpenSubKey(
    Extension);
  if(rkey != null)
  {
    string extstring = rkey.GetValue("").ToString();
    rkey.Close();                         
    if( extstring != null )
    {
      if( extstring.Length > 0 )
      {
        rkey = Registry.ClassesRoot.OpenSubKey(extstring,true);
        if(rkey != null)
        {
          string strkey = "shell\\" + MenuName + "\\command";
          RegistryKey subky = rkey.CreateSubKey(strkey);
          if(subky != null)
          {
            subky.SetValue("",MenuCommand);
            subky.Close();
            subky = rkey.OpenSubKey("shell\\" + MenuName, true);
            if(subky != null)
            {
              subky.SetValue("",MenuDescription);
              subky.Close();
            }                 
            ret = true;
          }
          rkey.Close();
        }
      }
    }
  }
  return ret;
}

Conclusion

The UI is not much to look at, but the tool's worked for me. Let me know if anyone has any suggestions/feedback through the article forum.

Post-Conclusion (dan g's tool)

While my tool is meant for stripping unwanted files from zip files, dan g has an excellent article here on CP, describing a 3-in-1 tool that can be used to package VC++ and .NET project files. I strongly urge people to take a look at that one :-

After all, prevention is better than cure, eh?

License

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

Share

About the Author

Nish Nishant
United States United States
Nish Nishant is a Software Architect/Consultant based out of Columbus, Ohio. He has over 15 years of software industry experience in various roles including Lead Software Architect, Principal Software Engineer, and Product Manager. Nish is a recipient of the annual Microsoft Visual C++ MVP Award since 2002 (13 consecutive awards as of 2014).

Nish is an industry acknowledged expert in the Microsoft technology stack. He authored
C++/CLI in Action for Manning Publications in 2005, and had previously co-authored
Extending MFC Applications with the .NET Framework for Addison Wesley in 2003. In addition, he has over 140 published technology articles on CodeProject.com and another 250+ blog articles on his
WordPress blog. Nish is vastly experienced in team management, mentoring teams, and directing all stages of software development.

Contact Nish : You can reach Nish on his google email id voidnish.

Website and Blog

You may also be interested in...

Comments and Discussions

 
Questionnice Pin
CIDev15-Feb-13 3:56
memberCIDev15-Feb-13 3:56 
GeneralI've just published an improved version on codeproject Pin
dmihailescu21-Feb-07 5:27
memberdmihailescu21-Feb-07 5:27 
GeneralDirClean Pin
Bassam Abdul-Baki18-Oct-05 8:14
memberBassam Abdul-Baki18-Oct-05 8:14 
QuestionIsn't This In The Wrong Section ? Pin
Rick York25-Jun-05 8:06
memberRick York25-Jun-05 8:06 
AnswerRe: Isn't This In The Wrong Section ? Pin
Nishant Sivakumar25-Jun-05 8:46
staffNishant Sivakumar25-Jun-05 8:46 
GeneralMultiple Files Pin
click.ok7-Mar-05 15:09
memberclick.ok7-Mar-05 15:09 
Smile | :) Nice code, congratulations!

If I place ".bmp" in extension and I select 20 bmp files in explorer and execute the command, the explorer will open 20 instances of my program. How I do to these 20 bmp files will be, instead, 20 args of the command line???

Regards
GeneralGood idea, but... Pin
Scott Robins21-May-04 2:21
memberScott Robins21-May-04 2:21 
GeneralRe: Good idea, but... Pin
Nishant S9-Dec-04 3:47
staffNishant S9-Dec-04 3:47 
QuestionWhy this vote rating ? Pin
Stephane Rodriguez.21-May-04 1:00
memberStephane Rodriguez.21-May-04 1:00 
AnswerRe: Why this vote rating ? Pin
Nishant S21-May-04 1:17
staffNishant S21-May-04 1:17 
GeneralRe: Why this vote rating ? Pin
Stephane Rodriguez.21-May-04 1:31
memberStephane Rodriguez.21-May-04 1:31 
AnswerRe: Why this vote rating ? Pin
T1TAN26-May-04 8:29
memberT1TAN26-May-04 8:29 
AnswerRe: Why this vote rating ? Pin
Mircea Puiu10-Dec-04 5:47
memberMircea Puiu10-Dec-04 5:47 
GeneralZipStudio Article on CodeProject Pin
Willem Fourie20-May-04 20:15
memberWillem Fourie20-May-04 20:15 
GeneralAre article authors really so dumb ... Pin
X. Y.20-May-04 13:29
sussX. Y.20-May-04 13:29 
GeneralRe: Are article authors really so dumb ... Pin
Nishant S20-May-04 16:41
staffNishant S20-May-04 16:41 
GeneralRe: Are article authors really so dumb ... Pin
.dan.g.20-May-04 19:38
member.dan.g.20-May-04 19:38 
GeneralRe: Are article authors really so dumb ... Pin
Nishant S20-May-04 20:58
staffNishant S20-May-04 20:58 
GeneralRe: Are article authors really so dumb ... Pin
DavidCrow15-Aug-05 3:15
memberDavidCrow15-Aug-05 3:15 
GeneralAdding a context menu Pin
Karby20-May-04 12:11
memberKarby20-May-04 12:11 
GeneralRe: Adding a context menu Pin
Nishant S20-May-04 17:39
staffNishant S20-May-04 17:39 
GeneralRe: Especially for folks in Africa... Pin
Nishant S20-May-04 17:41
staffNishant S20-May-04 17:41 

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 | Terms of Use | Mobile
Web01 | 2.8.150723.1 | Last Updated 20 May 2004
Article Copyright 2004 by Nish Nishant
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid