Hola a todos:
Gracias por vuestra ayuda. En especial quiero dar las gracias a Antonio Fco. Ramos de Córdoba (España) por su colaboración.
El problema planteado resulta muy fácil de comprobar. Solamente hay que compilar el proyecto SETUP1.VBP que incluye VB-6 y efectuar, empleando el Asistente de empaquetado y distribución, la instalación de cualquier aplicación compilada (un simple Form con un botón) para descubrir que dicha instalación falla estrepitosamente. Aunque no se haya modificado el proyecto SETUP1.VBP original, suministrado por MS como Kit de herramientas de instalación.
Lo que he podido averiguar, hasta el momento, es que dicho problema se encuentra en la declaración y posterior llamada a "ExtractFileFromCab":
Declare Function ExtractFileFromCab Lib "vb6stkit.dll" (ByVal Cab As
String, ByVal File As String, ByVal Dest As String) As Long
Que creo debería ser algo así como:
Declare Function ExtractFileFromCab Lib "vb6stkit.dll" (ByVal Cab As String, ByVal File As String, ByVal Dest As String, ByVal iCab As Long, ByVal sSrc As String) As Long
Es decir, faltan dos argumentos en la declaración "iCab" (número de archivos Cab) y "sSrc" (la ruta de los archivos).
Por tanto la llamada debería ser algo así:
ExtractFileFromCab GetShortPathName(gsCABNAME), sFile.strSrcName, gsTEMPDIR & sFile.strDestName, gintCabs, gstrSrcPath
El último argumento es una variable global ya utilizada. Y para el penúltimo se puede añadir una nueva variable global al basSetup1 como:
Global gintCabs As Long
Luego, de forma similar a gstrAppName, asignarle en frmSetup1 el número de ficheros CABs mediante:
gintCabs = CInt(ReadIniFile(gstrSetupInfoFile, gstrINI_BOOT, gstrINI_CABS))
Con esto parece que ya funciona sin problemas la extracción de los archivos CAB. Seguimos trabajando... ¿Os funciona?
Esperemos que no aparezcan después más Bugs en el proyecto SETUP1, original de MS ;-).
Un saludo a todos,
Andrés García
andres@yecla.com
Yecla - Murcia - España