Ayuda con la creación de paquete para ejecutar aplicación de programa en otros ordenadores

Muy buenas, soy un programador novel que hice una aplicación, el problema surge cuando hago el paquete y la instalo, el caso es que en mi pc funciona perfectamente el install.exe, pero si lo intento en otro equipo, me pide el .lst y el .cab, y el gran problema es que el .cab me ocupa 16 Mb (y la aplicación la quiero modificar, por lo tanto será más grande). Entonces me gustaría saber si eso es normal, y si lo es, me gustaría saber si no hay ninguna forma de que no haga falta el .cab
Muchas gracias.
Saludos.

2 Respuestas

Respuesta
1
Veamos, no es corta la respuesta.
EL .cab no es ni más ni menos que un archivo comprimido en formato cab. La el ratio de compresión es muy pequeño y por eso el volumen que tiene.
De todos modos, una mayor compresión no te daría más que uno o dos megas menos que los que ocupa el fichero.
El hecho es que dicho archivo, solo contiene lo siguiente (lo puedes comprobar con el winzip)
*.dll :-> Libreria de Visualbasic (Si no la añadiste en referencias, es que es obligatoria.)
*.ocx :-> Controles de VB (los que introduces en las ventanas.)
*.Exe :-> Programa ejecutable linkado definitivo e instaladores de otras referencias. (como las mdac o Office en general si los usas.)
El hecho es que si la máquina destino tiene alguna de esas Dlls/OCX/programas instalados no necesitas que estén en la aplicación que instala. Por ejemplo, es común que los ocx como Mscomctl.ocx estén en todos los Windows y del mismo modo, si haces referencia a cualquier producto de Office, no es necesario instalarlos si ya estaban previamente en la máquina instalados.
Posibles soluciones :
1.- Una vez generado el archivo .CAB ábrelo con winzip y apunta las librerías. Luego mediante prueba y error, decide que librerías no quieres instalar y generate tu tu propio instalable. Para ello solo tienes que copiar las librerías .DLL y OCX al directorio que quieras (normalmente System32) y luego registrarlas. Para registrar una librería Manualmente se usa el comando regsvr32. Ejecutalo desde el prompt de MsDos y te saldrán las opciones del mismo (Normalmente
regsvr32 path\libreria.dll
para registrar y
regsvr32 /u path\libreria.dll
para deregistrar)
2.- La otra opción es eliminar los comandos que usas de ciertas librerías para
Proceder a la eliminación de las mismas. Cuando usas algo como un Datagrid, el OCX msdatgrd.ocx estará incluido en tu archivo .CAB el DATAGRID, es un control fácilmente substituido por unas lineas de código si no usas todas sus funcionalidades, así liberas los 260,920 kb que ocupa.
Para saber Definitivamente que librerías has añadido, mira sencillamente las casillas marcadas en el Menu :
Project (o proyecto en la version en Español) y en el mismo el las casillas de References o Components. (Referencias -normalmente dlls- o Componentes -Normalmente Ocx.-)
Respuesta
1
La razón por la cual el archivo .CAB es tan grande, es porque en este archivo se guardan todas las DLL y OCX, además de otros archivos necesarios para que tu aplicación se ejecute. Entre estos archivos se encuentra el RunTime de Visual Basic (Msvbvm60.dll), la que ya pesa más de un mega. Además, debes considerar que por cada referencia o control que agregues a tu proyecto, esto puede involucrar una o más librerías, ya que para que algunas DLL se ejecuten correctamente, necesitan de otras DLL (DLL dependientes, las que generalmente se encuentran en un archivo .DEP). El PDW (Package Deployment Wizard, el que hace los instaladores) comprime todos los archivos necesarios, y si estos ya se encuentran en el equipo destino, verifica las versiones y mantiene la más reciente.
Ahora, existen otros programas que construyen instaladores que no necesitan el famoso archivo .CAB (como el Setup Factory de Indigo Rose), pero el ejecutable que construyen (setup.exe o install.exe) llevan dentro los archivos necesarios, es decir, el archivo .CAB está dentro del ejecutable.
Si te quedan dudas, me contactas por aquí mismo.
Suerte!
TCV

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas