Estoy creando archivos divididos usando el siguiente código:
string filename = "FileName.pdf"; using (ZipFile zip = new ZipFile()) { zip.UseZip64WhenSaving = Zip64Option.Default; zip.CompressionLevel = Ionic.Zlib.CompressionLevel.Default; using (FileStream stream = new FileStream(temp, FileMode.Open)) { zip.AddEntry(filename, stream); zip.MaxOutputSegmentSize = settings.AttachmentSize * (1024 * 1024); zip.Save(zipFileName); } } El código anterior genera 3 archivos: file.zip, file.z01 and file.z02 . Cuando hago clic derecho en ese archivo zip y selecciono Extract All (sin usar WinRAR u otro software de compresión para extraer, solo el zip integrado de Windows) me da el siguiente error:
No se puede utilizar el mismo volumen como origen y como destino


Lo extraño es que solo sucede la primera vez que intento extraer los archivos, las extracciones posteriores están bien, por lo que debe ser cómo se comprimieron los archivos en primer lugar.
ACTUALIZAR 1
Lo mismo sucede incluso si extraigo a una carpeta diferente
Ha habido discusiones con respecto a este problema en el sitio de DotNetZip Codeplex, pero parece que el problema aún no se ha resuelto.
http://dotnetzip.codeplex.com/discusiones/239172
http://dotnetzip.codeplex.com/discusiones/371005
ACTUALIZAR 2
Mirando el documento de la propiedad MaxOutputSegmentSize , se cita:
No creo que Windows Explorer pueda extraer un archivo dividido.
Sin embargo, no hay más explicaciones de por qué. Considero que esto es un falso positivo ya que, como se mencionó anteriormente,
solo sucede la primera vez que intento extraer los archivos, las extracciones posteriores están bien
Estoy usando Windows 8.1 de 64 bits.
Lo primero que siempre querrá hacer al buscar la razón por la cual el software falla es ubicar la fuente del mensaje de error. Lo haces usando Google primero . El segundo éxito (ahora mismo) es bueno, alguien descompiló los ejecutables de Windows y localizó esta cadena específica como ID de recurso #10209 en un archivo llamado zipfldr.dll con una notificación de derechos de autor de Microsoft.
Esa es una combinación excelente, zipfldr.dll es la extensión de espacio de nombres de shell que Windows usa para mostrar el contenido de un archivo .zip como si fuera una carpeta. Puede verlo en Regedit.exe, vaya a HKEY_CLASSES_ROOT\CLSID\ {E88DCCE0-B7B3-11d1-A9F0-00AA0060FA31} para el registro principal. La clave de registro HKEY_CLASSES_ROOT\SystemFileAssociations\ .zip\CLSID la asocia con un archivo .zip.
Así que tienes un hecho duro, realmente es la extensión Explorer la que se cae. Extremadamente poco se puede hacer al respecto, por supuesto. Solo queda la duda de que podría ser la biblioteca Zip que usa la que busca a tientas el contenido de los archivos distribuidos y, por lo tanto, hace que la extensión se caiga. Eso se reduce significativamente al ver que más de una biblioteca activa este error, las probabilidades de que tanto Ionic como Dotnetzip tengan exactamente el mismo error son bastante bajas. No cero, los programadores tienden a echar un vistazo al código de otros programadores para inspirarse. El hecho de que este error sea falso pone el clavo en el ataúd, es de esperar que el contenido incorrecto del archivo zip active un error repetidamente.
Es posible que pueda aplicar ingeniería inversa al problema subyacente, lo haría con el Monitor de procesos de SysInternals. Verá que Explorer lee y escribe archivos. Probablemente en el directorio TEMP, supongo que obtendría un error como este si ya existe un archivo .zip en ese directorio. TEMP es una carpeta muy desordenada en la mayoría de las máquinas, demasiados programas no se limpian correctamente después de sí mismos. Incluye bibliotecas zip, una teoría atractiva que no está respaldada por pruebas :)
Si eso no funciona, entonces el último recurso es Microsoft. Tienen un número de teléfono 1-800 donde puede obtener soporte para problemas con sus productos. Lo he usado varias veces, siempre resolvieron mi problema y me reembolsaron la tarifa inicial. Sin embargo, este es un problema de Windows, un producto que tiene mil millones de usuarios. En el mejor de los casos, obtendrá una solución alternativa, una solución de software real es extremadamente improbable. No del todo imposible, se ha hecho. Pero hay muchas probabilidades de que su solución alternativa recomendada sea "usar una utilidad de terceros como Winzip". No es lo que quieres oír.
Mueva el archivo zip a una carpeta diferente o intente usar 7zip para extraer los archivos.