2011-12-30 10 views
20

Estoy tratando de extraer el contenido del archivo InstallShield setup.exe-file. (Mi plan es usarlo en una herramienta administrativa, así que esto debe hacerse de forma programática sin ninguna interacción del usuario.)Extracto mediante programación de contenido de InstallShield setup.exe

¿Esto es posible?
(La investigación inicial parece indicar que fallará)

Si es posible tener una solución genérica, para todas las versiones recientes de InstallShield sería lo mejor.
De lo contrario, si una solución solo funciona para algunas versiones de InstallShield sería un paso en el camino. (Probablemente sería posible deducir qué versión de InstallShield un setup.exe es examinado los recursos de versión del archivo EXE.

I found that algunas versiones de InstallShield apoyan /b o /extract_all. Sin embargo no hay una buena manera de saber, simplemente lanzar el exe y la esperanza de que va a extraer y terminar ordenada en lugar de mostrar cuadros de diálogo GUI no parece ser una buena solución. Así que estoy por lo tanto, en busca de una manera más estable.
ideas son bienvenidas.

+0

Esto es para cualquier setup.exe generado por cualquier versión de InstallShield, independientemente del tipo de proyecto o para un setup.exe específico? –

+0

Gracias @Christopher. Intentó mejorar la pregunta. – leiflundgren

Respuesta

30

No hay una forma admitida de hacerlo, pero ¿no tendrá que examinar los archivos relacionados con cada instalador para descubrir cómo instalarlos realmente después de extraerlos? Suponiendo que pueda dedicar tiempo a determinar qué línea de comando se aplica, aquí hay algunos parámetros candidatos que normalmente le permiten extraer una instalación.

MSI Based (no puede resultar en una imagen utilizable para una instalación InstallScript MSI):

  • setup.exe /a /s /v"/qn TARGETDIR=\"choose-a-location\""

    o, para extraer también requisitos previos (para las versiones en las que trabaja),

  • setup.exe /a"choose-another-location" /s /v"/qn TARGETDIR=\"choose-a-location\""

InstallScript basado:

  • setup.exe /s /extract_all

suite basada (puede no ser obvio cómo instalar los archivos resultantes):

  • setup.exe /silent /stage_only ISRootStagePath="choose-a-location"
+1

FWIW Michael trabaja para InstallShield. También estoy pensando que podría inferir qué tipo de setup.exe es buscando recursos incrustados o examinando dependencias de DLL. Veo un MSI setup.exe tenía una dependencia en MSI.dll. Supongo que un EXE de InstallScript no lo haría. –

+1

Vea una [** respuesta similar aquí **] (http://stackoverflow.com/a/24987512/129130) con un [enlace a un archivo pdf] (http://www.itninja.com/static/090770319967727eb89b428d77dcac07 .pdf) con las líneas de comando setup.exe comunes. –

+0

Compruebe mi respuesta aquí: http://superuser.com/a/180980/47628 para ver las herramientas que pueden funcionar con algunas configuraciones de IS basadas en MSI anteriores. – bshea

8

http://www.compdigitec.com/labs/files/isxunpack.exe

Uso : isxunpack.exe yourin stallshield.exe

Se extraerá en la misma carpeta.

+0

Esto se puede hacer mediante programación a través de ShellExecute(). – Motes

+2

Ese fue el único programa que funcionó para mí al desempaquetar un instalador ISv12. Este programa reportó un problema, pero de todos modos extrajo todo. – TGP1994

+0

Gran herramienta, gracias por compartir: funciona bien para mi instalador actual de inversión, mientras que las sugerencias mencionadas por @MichaelUrman lamentablemente no lo hicieron. – Till

4

Inicio con:

setup.exe /? 

Y debería ver un cuadro emergente de diálogo con algunas opciones mostradas.

+0

No funciona muchas veces –

1

El programa gratuito y de código abierto llamado cabextract mostrará y extraerá los contenidos no solo de.cab-archivos, sino también archivos de Macrovision:

% cabextract /tmp/QLWREL.EXE 
Extracting cabinet: /tmp/QLWREL.EXE 
    extracting ikernel.dll 
    extracting IsProBENT.tlb 
    .... 
    extracting IScript.dll 
    extracting iKernel.rgs 

All done, no errors. 
+1

cabextract descomprimirá todo lo que contenga archivos contenedores de Microsoft, pero normalmente InstallShield no lo hace, a pesar de tener archivos llamados "data1.cab". En su lugar, para descomprimir los archivos "cab" de InstallShield, utilice el programa [unshield] (http://sourceforge.net/projects/synce/files/Unshield/0.6/) que forma parte del proyecto SynCE. –

+1

SynCE parece estar abandonado en estos días, [unshield ahora está alojado en github] (https://github.com/twogood/unshield) –

2

En Linux existe unshield, que funcionaba bien para mí (incluso si la interfaz gráfica de usuario incluye elementos de disuasión personalizados como indicaciones clave de licencia). Está incluido en los repositorios de todas las distribuciones principales (arch, suse, debian y fedora) y su fuente está disponible en https://github.com/twogood/unshield

Cuestiones relacionadas