Crear un archivo CAB

Esta sección describe la creación de archivos CAB para distribuir controles ATL y MFC a través de Internet. Si necesita más información sobre los archivos CAB, vea Cabinet File Reference en la documentación de Platform SDK (en MSDN Library/Setup and System Administration/Setup/Setup API/Overview/Cabinet Files).

Para crear un archivo CAB:

  1. Cree un archivo INF.
  2. Ejecute la herramienta CABARC.

Crear un archivo INF

El archivo INF es un archivo de texto que especifica los archivos (como DLLs u otros OCX) que deben estar presentes o descargarse para poder ejecutar el control. Un archivo INF permite reunir todos los archivos necesarios en un archivo CAB comprimido. De forma predeterminada, los archivos con igual número de versión que los archivos existentes en el disco duro del usuario no se descargan. Para obtener más información sobre los archivos INF y sus opciones correspondientes, incluido cómo crear archivos INF independientes de la plataforma, vea About INF Files y Using INF Files en la documentación de Platform SDK (en MSDN Library/Setup and System Administration/Setup/Setup API/Overview/Setup Applications).

A modo de ejemplo, el archivo INF siguiente puede utilizarse para crear un archivo CAB para el control ATL Polygon. Se puede generar POLYGON.DLL descargando los archivos del ejemplo ATL Polygon del CD de Visual C++ y generando una versión MinSize. Si va a generar una versión MinSize del control Polygon, necesitará la DLL adicional ATL.DLL. Puesto que ATL.DLL necesita ser registrada antes que POLYGON.DLL, coloque ATL.DLL en primer lugar en el archivo INF:

; Sample INF file for POLYGON.DLL
[version] 
; version signature (same for both NT and Win95) do not remove
signature="$CHICAGO$"
AdvancedINF=2.0  

[Add.Code]
polygon.dll=polygon.dll
atl.dll=atl.dll

; needed DLL
[atl.dll]
file-win32-x86=thiscab
FileVersion=2,00,0,7024
DestDir=11
RegisterServer=yes 

[polygon.dll]
file-win32-x86=thiscab
clsid={4CBBC676-507F-11D0-B98B-000000000000} 
FileVersion=1,0,0,1 
RegisterServer=yes  
; end of INF file

Dicho archivo INF especifica que ATL.DLL, con la versión especificada, debe estar instalado en el sistema. Si ATL.DLL no existe aún en el equipo, se descargará del archivo CAB creado mediante este INF. "thiscab" es una palabra clave que alude al archivo CAB que contiene este INF. También se puede descargar una DLL necesaria desde una ubicación HTTP especificando una ruta de acceso absoluta o relativa, por ejemplo:

file-win32-x86=http://example.microsoft.com/mydir/NEEDED.DLL 

La palabra clave "file-win32-x86" identifica la plataforma como específica de los procesadores x86.

Puede obtener el número de versión de un archivo haciendo clic con el botón secundario en el archivo en el Explorador de Windows. Seleccione Propiedades en la lista que aparece y a continuación haga clic en la ficha Versión en el cuadro de diálogo que se muestra. A veces tendrá que insertar un 0 extra en la versión de archivo. Por ejemplo, el número de versión de ATL.DLL aparece como 2.00.7024 en el cuadro de diálogo. Esto se convierte en 2, 00, 0, 7024 en el archivo INF.

"DestDir" corresponde al directorio donde se cargará el archivo: 11 especifica el directorio del sistema, WINDOWS/SYSTEM o WINNT/SYSTEM32; 10 especifica el directorio de Windows, WINDOWS o WINNT. Si no se especifica ningún valor para DestDir (caso habitual), el código se instala en el directorio OCCACHE fijado.

El valor "clsid" es el id. de clase del control que se va a instalar.

Una vez creado el archivo INF, ejecute la herramienta CABARC (disponible en el directorio Mssdk\Bin) para crear el archivo CAB. Deberá ejecutar CABARC en el directorio que contiene sus archivos de origen. En la línea de comandos, sitúe los archivos de origen en el orden en que aparecen en el archivo INF y a éste en último lugar. Por ejemplo, para crear un archivo CAB para el control Polygon del archivo INF anterior, utilice el siguiente comando:

C:\MSSDK\BIN\CABARC -s 6144 POLYGON.CAB ATL.DLL POLYGON.DLL POLYGON.INF

El archivo POLYGON.CAB contiene una versión comprimida de ATL.DLL y POLYGON.DLL, así como la información necesaria para extraerlos mediante el archivo POLYGON.INF.

Si desea conocer mejor cómo analizar y extraer archivos de componentes a partir de archivos CAB, vea el ejemplo CabView en el sitio Web Code Center de MSDN Online, en la dirección https://msdn.microsoft.com/visualc/downloads/samples.asp (haga clic en el vínculo "CabView").

Los archivos DLL que es necesario incluir en un control MFC son MSVCRT.DLL, MFC42.DLL y OLEPRO32.DLL.

Ejecutar la herramienta CABARC

La herramienta CABARC está disponible en el directorio Mssdk\Bin. Por ejemplo:

C:\MSSDK\BIN\CABARC -s 6144 n MYCTL.CAB NEEDED1.DLL NEEDED2.DLL MYCTL.OCX MYCTL.INF

CABARC crea un archivo CAB denominado MYCTL.CAB.

Se debe ejecutar CABARC en el directorio que contiene los archivos de origen (INF, OCX y DLL). Los archivos que se almacenarán en el archivo CAB deben enumerarse en la línea de comandos en el mismo orden en que aparecen en el archivo INF. En el ejemplo anterior, el archivo INF debe incluir NEEDED1.DLL en primer lugar, después NEEDED2.DLL y a continuación MYCTL.OCX.

La opción -s reserva espacio en el archivo CAB para la firma de código. El comando n especifica que se desea crear un archivo CAB. Para obtener una lista de los comandos y opciones de CABARC, escriba únicamente CABARC en la línea de comandos:

C:\MSSDK\BIN\CABARC

Vea también

Crear archivos CAB firmados para controles MFC y ATL