65.9K
CodeProject 正在变化。 阅读更多。
Home

用于在提交到 CodeProject 之前剥离 zip 文件中不需要的文件的工具

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.77/5 (29投票s)

2004年5月20日

CPOL

3分钟阅读

viewsIcon

111056

downloadIcon

1219

CPZipStripper 工具(带源代码)

图 1 - 红色标记的文件将被去除

引言

CPZipStripper 是一个简单的工具,我在 CP 上编辑和提交文章时一直在使用它,它的作用是从 ZIP 文件中删除不需要的文件 - 比如 debug 和 obj 文件夹中的文件、suo 文件、pdb 文件、aps 文件等等。它是一个一键式工具 - 所以你不需要浪费时间在 WinZip 或其他类似的工具中打开 ZIP 文件,然后手动删除不需要的文件。

如果文章作者在将 ZIP 文件发送给我们之前使用此工具,那将会非常好,这样编辑收到的邮件大小将会大大减少。

安装

将 release.zip 中的三个文件解压缩到您选择的任何永久文件夹中:-

  • CPZipStripper.exe - 这是主可执行文件(针对 FW 1.1 的 .NET IL exe)
  • CPZipStripperCfg.xml - 配置文件
  • ICSharpCode.SharpZipLib.dll - 我用于访问 ZIP 文件的 DLL (SharpZipLib)

现在只需运行 CPZipStripper.exe 一次并退出。 就这样。

使用该工具

您可以将 ZIP 文件拖放到程序窗口中,或者右键单击 ZIP 文件并选择“使用 ZipStrip 打开”选项,但要添加上下文菜单项,您至少需要运行该程序一次 - 因为它没有单独的安装程序。

图 2 - Explorer 中 ZIP 文件的上下文菜单项

按钮

  • 修改配置 - 这将在您的 Windows XML 编辑器中打开配置 XML 文件 - 如果您没有,它将报告错误。 如果是这样,请在记事本中手动打开 XML 文件并进行更改。

    • extensions 节点列出了所有需要删除的扩展名
    • paths 节点列出了您想要删除的所有路径(因此,如果您在那里有 debug,则会删除任何提取路径包含 debug 的文件)
    • files 节点列出了您要删除的任何特定文件名
  • 刷新列表框 - 如果 ZIP 文件已更改或您已对 XML 配置文件进行了修改,请单击“刷新列表框”按钮
  • 去除不需要的文件 - 这将删除所有不需要的文件(在列表框中以红色显示)并将 ZIP 文件替换为干净的文件,但也会备份旧文件。
  • 退出程序 - 请谨慎使用此按钮,因为它会关闭程序 ;-)

有趣的要点

以下是我学到的一些奇怪的事情 :-)

处理拖放比我想象的要容易得多。 首先,您需要将 FormAllowDrop 属性设置为 true。 然后只需处理 DragEnterDragDrop 事件。

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;
}

如果您对一个通用函数感兴趣,该函数将允许您为特定文件类型添加上下文菜单项:-

请参阅我的博客条目:一个简单的 C# 函数,用于在资源管理器中添加上下文菜单项,这是该函数。

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;
}

结论

UI 没什么好看的,但该工具对我有用。 如果任何人有任何建议/反馈,请通过文章论坛告诉我。

结论后记(dan g 的工具)

虽然我的工具旨在从 ZIP 文件中删除不需要的文件,但 dan g 在 CP 上发表了一篇精彩的文章,描述了一种 3 合 1 工具,可用于打包 VC++ 和 .NET 项目文件。 我强烈建议大家看看那个:-

毕竟,预防胜于治疗,不是吗?

© . All rights reserved.