2011-12-30 4 views
20

Sto cercando di estrarre il contenuto del file di un file setup.exe InstallShield. (Il mio piano è quello di usarlo in uno strumento di back-office, quindi questo deve essere fatto programmaticamente senza alcuna interazione dell'utente.)Estrarre a livello di contenuto di InstallShield setup.exe

È possibile?
(la ricerca iniziale sembra indicare che fallirà.)

Se è possibile avere una soluzione generica, per tutte le versioni recenti di InstallShield sarebbe la soluzione migliore.
Altrimenti, se una soluzione funziona solo per alcune versioni di InstallShield, sarebbe un passo in avanti. (Probabilmente sarebbe possibile dedurre quale versione InstallShield un setup.exe è, cercando in risorse di versione del file exe.

ho found that alcune versioni InstallShield supportano /b o /extract_all. Tuttavia non v'è alcun buon modo di sapere, semplicemente lanciando l'exe e sperando che si estrarre e terminerà ordinata piuttosto che visualizzare finestre di dialogo GUI non sembrare una buona soluzione. quindi io sono quindi alla ricerca di un modo più stabile.
Idee benvenuto.

+0

È questo per qualsiasi setup.exe generato da qualsiasi versione di InstallShield indipendentemente dal tipo di progetto o per un setup.exe specifico? –

+0

Grazie a @Christopher. Tentativo di migliorare la domanda. – leiflundgren

risposta

30

Non esiste un modo supportato per eseguire questa operazione, ma non è necessario esaminare i file relativi a ciascun programma di installazione per capire come installarli effettivamente dopo averli estratti? Supponendo che tu possa dedicare del tempo a capire quale riga di comando si applica, qui ci sono alcuni parametri candidati che normalmente ti permettono di estrarre un'installazione.

MSI Based (non può tradursi in un'immagine utilizzabile per un'installazione InstallScript MSI):

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

    o, per estrarre anche i prerequisiti (per le versioni in cui opera),

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

InstallScript based:

  • setup.exe /s /extract_all

Suite base (potrebbe non essere ovvio come installare i file risultanti):

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

FWIW Michael lavora per InstallShield. Inoltre sto pensando che potresti essere in grado di dedurre che tipo di setup.exe è cercando risorse incorporate o esaminando dipendenze DLL. Vedo un MSI setup.exe ha una dipendenza su MSI.dll. Sto indovinando un EXE InstallScript non. –

+1

Vedere [** simile risposta qui **] (http://stackoverflow.com/a/24987512/129130) con un [collegamento a un file pdf] (http://www.itninja.com/static/090770319967727eb89b428d77dcac07 .pdf) con le righe di comando di setup.exe comuni. –

+0

Controlla la mia risposta qui: http://superuser.com/a/180980/47628 per gli strumenti che potrebbero funzionare con alcune impostazioni IS basate su MSI non precedenti. – bshea

8

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

Usage : isxunpack.exe come utente stallshield.exe

Estrarrà nella stessa cartella.

+0

Questo può essere fatto a livello di programmazione tramite ShellExecute(). – Motes

+2

Questo è stato l'unico programma che ha funzionato per me nel decomprimere un programma di installazione ISv12. Questo programma ha segnalato un problema, ma ha comunque estratto tutto. – TGP1994

+0

Ottimo strumento, grazie per la condivisione - funziona bene per il mio attuale programma di installazione, mentre i suggerimenti menzionati da @MichaelUrman purtroppo non lo hanno fatto. – Till

4

Inizia con:

setup.exe /? 

E dovresti vedere una finestra di dialogo con alcune opzioni visualizzate.

+0

Non funziona più volte –

1

Il programma gratuito e open source denominato cabextract elencherà ed estrarrà il contenuto non solo.CAB-file, ma gli archivi di Macrovision anche:

% 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 decomprimerà tutto ciò che contiene i file cabinet Microsoft, ma in genere InstallShield non lo fa, nonostante i file denominati "data1.cab". Invece, per decomprimere i file "cabina" di InstallShield, utilizzare il programma [unshield] (http://sourceforge.net/projects/synce/files/Unshield/0.6/) che fa parte del progetto SynCE. –

+1

Synce sembra essere abbandonato in questi giorni, [unshield è ora ospitato su github] (https://github.com/twogood/unshield) –

2

Su Linux v'è unshield, che ha funzionato bene per me (anche se l'interfaccia grafica comprende deterrenti personalizzati come la patente richieste chiave). È incluso nei repository di tutte le principali distribuzioni (arch, suse, debian e fedora) e la sua origine è disponibile al https://github.com/twogood/unshield