{
  "WorkItem": {
    "AffectedComponent": {
      "Name": "",
      "DisplayName": ""
    },
    "ClosedComment": "fixed in changeset 41293. ",
    "ClosedDate": "2009-08-24T13:03:04.287-07:00",
    "CommentCount": 0,
    "Custom": null,
    "Description": "I found a problem concerning the extraction of an archive using the Extract method of the ZipEntry class. I passed the argument extractExistingFile at the Extract method\n with the value InvokeExtractProgressEvent in order to popup a window asking the user whether he wants overwrite the file. Whatever the delegate retrieves from the Cancel property, a ZipException is throw with the message \"The file already exists\". This is not the expected behaviour.\n \nThis is an excerpt of my test program:\nMain function\n              using (ZipFile zip = ZipFile.Read(buffer))\n                {\n                    zip.ExtractProgress += new EventHandler<ExtractProgressEventArgs>(zip_ExtractProgress);\n                    foreach (ZipEntry entry in zip.Entries)\n                    {\n                        if (entry.IsDirectory)\n                            continue;\n                        index = entry.FileName.LastIndexOf('/');\n                        if (index > 0)\n                        {\n                            filename = entry.FileName.Substring(index + 1);\n                            entry.FileName = filename;\n                        }\n                        else\n                            filename = entry.FileName;\n                        entry.Extract(outputPath,ExtractExistingFileAction.InvokeExtractProgressEvent);\n                    }\n                }\n \n[..]\n                void zip_ExtractProgress(object sender, ExtractProgressEventArgs e)\n         {\n            if (e.EventType == ZipProgressEventType.Extracting_ExtractEntryWouldOverwrite)\n            {\n                ZipEntry entry = e.CurrentEntry;\n                ExctractionCancelationEventArgs args = new ExctractionCancelationEventArgs(e.CurrentEntry.FileName, e.Cancel);\n                if (ExtractionWouldOverwrite != null)\n                {\n                    //Custom event which retrieve from the user whether he wants overwrite the file or not\n                    ExtractionWouldOverwrite(this, args);\n                    e.Cancel = args.Cancel;\n \n                    //Code I have added to solve the issue\n                    if (!e.Cancel)\n                        entry.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;\n                    else\n                        entry.ExtractExistingFile = ExtractExistingFileAction.DontOverwrite;\n                }\n            }\n           }\n \nBy the way, this is a great library. Good job.\n \nRegards\n \nJérémie",
    "LastUpdatedDate": "2013-05-16T05:32:10.973-07:00",
    "PlannedForRelease": "",
    "ReleaseVisibleToPublic": false,
    "Priority": {
      "Name": "Low",
      "Severity": 50,
      "Id": 1
    },
    "ProjectName": "DotNetZip",
    "ReportedDate": "2009-08-21T02:31:03.84-07:00",
    "Status": {
      "Name": "Closed",
      "Id": 4
    },
    "ReasonClosed": {
      "Name": "Unassigned"
    },
    "Summary": "Extracting files with InvokeExtractProgressEvent throws always an exception",
    "Type": {
      "Name": "Issue",
      "Id": 3
    },
    "VoteCount": 1,
    "Id": 8602
  },
  "FileAttachments": [],
  "Comments": [
    {
      "Message": "good catch.  There were two problems:  #1, Cancel wasn't working.  #2, the documentation was unclear. ",
      "PostedDate": "2009-08-24T13:02:48.45-07:00",
      "Id": -2147483648
    },
    {
      "Message": "",
      "PostedDate": "2009-08-24T13:03:04.287-07:00",
      "Id": -2147483648
    },
    {
      "Message": "",
      "PostedDate": "2013-02-21T18:44:03.873-08:00",
      "Id": -2147483648
    },
    {
      "Message": "",
      "PostedDate": "2013-05-16T05:32:10.973-07:00",
      "Id": -2147483648
    }
  ]
}