La herramienta de extracción de archivos CAB puede entrar en un bucle infinito cuando intenta extraer un archivo que es mayor que 2 GB

Exención de responsabilidades de contenido KB retirado

Este artículo se refiere a productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Síntomas

Cuando utiliza la herramienta de extracción de archivos CAB (Extract.exe) del Kit de desarrollo de Software (CAB SDK) de Microsoft archivador para intentar extraer un archivo que es mayor que 2 gigabytes (GB) de un archivo CAB, la herramienta de extracción de archivos CAB puede entrar en un bucle infinito.

Causa

Archivos CAB tienen un límite interno en el tamaño de los archivos incluidos. Este límite interno es de aproximadamente 2 GB. Sin embargo, el SDK de CAB no exige este límite interno. Por lo tanto, puede utilizar el SDK de CAB para crear un archivo CAB que contiene un archivo que es mayor que 2 GB.

Este comportamiento se produce cuando intenta extraer un archivo que es mayor que 2 GB de un archivo CAB, porque la herramienta de extracción de archivos CAB no se puede extraer un archivo que es mayor que el límite interno de 2 GB.

Solución alternativa

Para evitar este comportamiento, divida el archivo mayor que 2 GB en archivos más pequeños y, a continuación, incluir estos archivos en un conjunto Multi-CAB. Para hacer esto mediante el SDK de CAB, siga estos pasos:
  1. Crear un archivo de directiva (.ddf) en la carpeta que contiene el archivo que es mayor que 2 GB. Para ello, utilice un editor de texto como el Bloc de notas para crear un archivo de texto denominado MyDirectiveFile.ddf que contiene el texto siguiente:
    .Set CabinetNameTemplate=Test*.cab ; Test1.cab, Test2.cab, and so on..Set MaxDiskSize=1.44M       
    .Set Cabinet=on
    .Set Compress=on
    C:\Test\Test.txt ; The path of the file that is larger than 2 GB
    .Set DestinationDir=C:\Test
  2. Agregue la carpeta que contiene la herramienta de extracción de archivos CAB y la avanzada creación herramienta de archivos CAB (Makecab.exe) a la variable de entorno path . Para ello, ejecute el comando siguiente en un símbolo del sistema:
    set path = % path %; FolderPath
    Nota: FolderPath es un marcador de posición para la ruta de acceso de la carpeta que contiene los archivos Extract.exe y Makecab.exe.
  3. En un símbolo del sistema, cambie a la carpeta que contiene el archivo Test.txt.
  4. Utilice la herramienta de creación de archivo de CAB avanzado para crear un archivo CAB múltiple establecido para el archivo de Test1.txt. Para ello, ejecute el comando siguiente en un símbolo del sistema:
    MAKECAB /F MyDirectiveFile.ddf
    Carpetas que se denominan disk1, disk2 etc. se crean en la carpeta actual. Cada carpeta contiene un archivo CAB.
  5. Utilice la herramienta de extracción de archivos CAB para extraer el archivo Test.txt. Para ello, ejecute el comando siguiente en el símbolo del sistema:
    Extract /A disk1\Test1.cab/l Prueba1 Test.txt
    Después de algún tiempo, recibirá el siguiente mensaje en la ventana de símbolo del sistema:
    Extracción de Test1\Test.txt
    Extracto necesidades armario de archivos 'Test2.cab' de 'Disco 2'.
    Especifique la ruta donde este archivo puede ser
    encontrar y presione ENTRAR:
  6. Escriba la ruta de acceso de la carpeta disk2 y, a continuación, presione ENTRAR. Después de algún tiempo, recibirá un mensaje similar al mensaje que recibió en el paso 5.

    Este nuevo mensaje en el que se le pide que proporcione la ruta de acceso del archivo CAB siguiente que forma parte de la CAB múltiple.
  7. Escriba la ruta de acceso del archivo CAB siguiente en el conjunto Multi-CAB y, a continuación, presione ENTRAR.

    Después de algún tiempo, recibirá un mensaje similar al mensaje que recibió en el paso 6.
  8. Repita el paso 7 hasta que se han extraído todos los archivos CAB en el conjunto Multi-CAB.

Estado

Este comportamiento es por diseño.

Más información

Pasos para reproducir el comportamiento

  1. Cree una carpeta en la carpeta raíz de la unidad C del equipo. Nombre de la carpeta de prueba.
  2. En la carpeta de prueba, cree un archivo de texto es mayor que 2 GB. Nombre del archivo Test.txt.
  3. Utilice la herramienta de creación de archivo de CAB avanzado para crear un archivo CAB para el archivo Test.txt. Para ello, siga estos pasos:
    1. En un símbolo del sistema, cambie a la carpeta C:\Test.
    2. Ejecute el comando siguiente para crear un archivo CAB para el archivo Test.txt:
      MAKECAB Test.txt TestCAB.cab
  4. Utilice la herramienta de extracción de archivos CAB para intentar extraer el archivo Test.txt desde el archivo CAB TestCAB.cab. Para ello, siga estos pasos:
    1. En el símbolo del sistema, ejecute el siguiente comando:
      Extraer TestCAB.cab Test.txt
      Recibirá el mensaje siguiente en la ventana de símbolo del sistema:
      Extraer Test.txt -> prueba.txt
      Extraer el archivo contenedor de necesidades '' de ''.
      Especifique la ruta donde este archivo puede ser
      encontrar y presione ENTRAR:
    2. Escriba la ruta de acceso de la carpeta que contiene el archivo CAB TestCAB.cab y, a continuación, presione ENTRAR. Recibirá el siguiente mensaje:
      ERROR: No se pudo encontrar el archivo contenedor C:\Test
      Extraer el archivo contenedor de necesidades '' de ''.
      Especifique la ruta donde este archivo puede ser
      encontrar y presione ENTRAR:
      Si proporciona la ruta de nuevo, recibirá este mensaje de nuevo. Este comportamiento es un bucle infinito.

Referencias

Para obtener información adicional, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:

168941 INFO: preguntas más frecuentes acerca de los archivos CAB

310618 archivador de Microsoft Software Development Kit

Propiedades

Id. de artículo: 836160 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios