Come estraggo i file da un pacchetto MSI?


192

Abbiamo alcune vecchie patch da cui vogliamo ottenere i file ma non desideriamo perdere tempo a installarli su una macchina.

Qualcuno può consigliare un modo per estrarre i file da un pacchetto di installazione MSI?


Puoi fornire ulteriori informazioni sull'esatto pacchetto di installazione MSI che desideri estrarre, i dettagli del tuo sistema operativo ecc.
Firee,

Risposte:


212

Per prima cosa, accedi a un prompt dei comandi con privilegi elevati, per fare ciò:

  1. Fai clic sul pulsante Start.

  2. Fai clic su Tutti i programmi.

  3. Vai in Accessori.

  4. Fare clic con il tasto destro del mouse su Prompt dei comandi.

  5. Seleziona Esegui come amministratore.

  6. Quando viene visualizzato il prompt UAC, fare clic su Continua.

Una volta che hai il tuo prompt dei comandi elevato, inserisci quanto segue:

msiexec /a drive:\filepath\to\MSI\file /qb TARGETDIR=drive:\filepath\to\target\folder

utilizzando le posizioni desiderate per riempire i percorsi file sopra menzionati. Esempio:

msiexec /a c:\testfile.msi /qb TARGETDIR=c:\temp\test

5
un altro veloce Google ha scoperto questo: legroom.net/software/uniextract Preferirei usare i built-in ma sembra un'utilità accettabile.

5
Per quanto ho capito (da msiexec /?), Questo comando installerà effettivamente il programma in quella posizione; Non penso che questo sia ciò che il richiedente originale aveva in mente.

8
@ user6738 L'ho provato e non installa il software. Il software non si trova nell'Appwiz né può essere disinstallato tramite l'MSI e segnala che non è installato. Estrae veramente i file dal mio test.
Adam Caviness,

17
Ho eseguito questo su un computer Win8.1 bloccato (laptop di lavoro) e va notato che i diritti di amministratore NON sono necessari per estrarre i .msifile.
MattDMo

5
Bella risposta! L'ho inserito in un extractMSI.cmdfile: msiexec /a %1 /qb TARGETDIR="%~d1%~p1%~n1" || pausee l'ho aggiunto alle opzioni "Apri con ..." del file msi
Tobias Kienzler,

75

Usa 7Zip .
Disimballerà MSI, CAB, un po 'di EXE e molti altri pacchetti per te. Non sono necessari privilegi di amministratore per eseguire questo.

-MODIFICARE-

Ed è open source, quindi nessun messaggio fastidioso ti supplica di acquistare le cose


13
e dopo averlo provato, msiexec fa un lavoro migliore (preservando le directory, nominando i file correttamente, ecc.)
Michael Schubert,

Questo non ha funzionato per me su win7 x64 con 7-Zip a 32 bit. C'è un modo particolare (non trascinare la selezione) che devi dire per aprire il file?
ebyrob

Ci dovrebbe essere un'opzione di 7zip nel menu contestuale quando fai clic con il pulsante destro del mouse sul file - ti darà la possibilità di estrarre i file
Shekhar

7
Vedo un sacco di cose con un punto esclamativo davanti invece dei file effettivi. Suppongo che qualcosa sia cambiato o che abbia un file MSI dispari. Ho provato 7-Zip 9.20.
mlt

@MichaelSchubert - dipende. Se stai utilizzando un computer non Windows, 7Zip è una buona opzione poiché la versione da riga di comando è disponibile anche per altri sistemi. Dipende dal caso d'uso, direi.
Per Lundberg,

46

C'è anche lessmsi che è completamente gratuito e open source.

Non ci sono pubblicità o messaggi fastidiosi, manterrà correttamente la struttura della directory e i nomi dei file, ha una sofisticata interfaccia a riga di comando , nonché un'interfaccia utente grafica che consente di navigare tra i file e visualizzare tabelle MSI interne e altri attributi MSI.


7
Grazie! Questo mi ha aiutato a estrarre da un MSI che non si estrae con il comando msiexec che dice "l'installazione
dell'amministratore

1
questo ha aiutato .. msiexec non ha estratto per qualche motivo ..
Abdul Hameed,

23

Esiste il supporto MSI integrato per l'estrazione dei file (installazione admin)

MSI o Windows Installer hanno il supporto integrato per questo - l'estrazione di file da un file MSI. Questa si chiama installazione amministrativa . Fondamentalmente è inteso come un modo per creare un punto di installazione di rete da cui è possibile eseguire l'installazione su molti computer di destinazione. Ciò garantisce che i file di origine siano sempre disponibili per qualsiasi operazione di riparazione.

Si noti che eseguire un'installazione da amministratore anziché utilizzare uno strumento zip per estrarre i file è molto diverso! Quest'ultimo non regolerà il layout dei media della tabella multimediale in modo che il pacchetto sia impostato per utilizzare file di origine esterni, il che è il modo corretto. Preferisci sempre eseguire l'installazione dell'amministratore effettiva su qualsiasi estrazione zip hacky. Per quanto riguarda la compressione, in realtà ci sono tre diversi algoritmi di compressione utilizzati per i file cab all'interno del formato di file MSI: MSZip, LZX e Storing (non compresso). Tutti questi sono gestiti correttamente eseguendo un'installazione da amministratore.


Le installazioni amministrative hanno molti usi

Si consiglia di leggere di più sulle installazioni di amministrazione poiché è un concetto utile e ho scritto un post su StackOverflow: qual è lo scopo dell'installazione amministrativa avviata usando msiexec / a? .

In sostanza l'installazione dell'amministratore è importante per:

  • Estrazione e controllo dei file di installazione
  • Distribuzione tramite software di gestione dei sistemi, ad esempio SCCM (evita enormi file MSI memorizzati nella cache in C: \ Windows \ Installer poiché i file vengono estratti da cabine interne)
  • Reimballaggio dell'applicazione aziendale
  • Operazioni di riparazione, modifica e autoriparazione
  • Patch e aggiornamenti
  • Annuncio MSI (la funzione " Esegui da sorgente ")
  • Numerosi altri dettagli minori

Si prega di leggere il post stackoverflow collegato sopra per maggiori dettagli. È un concetto abbastanza importante per gli amministratori di sistema , i pacchetti applicativi , gli sviluppatori di installazione , i gestori delle versioni e persino l'utente medio per vedere cosa stanno installando ecc ...


Admin-install, procedura pratica

È possibile eseguire l'installazione dell'amministratore in diversi modi a seconda di come viene fornito il programma di installazione. Essenzialmente viene consegnato come file MSI o racchiuso in un file setup.exe .

Esegui questi comandi da un prompt dei comandi con privilegi elevati e segui le istruzioni nella GUI per le righe di comando interattive:

  • File MSI :

    msiexec /a File.msi
    

    che deve essere eseguito con la GUI, puoi farlo anche in silenzio:

    msiexec /a File.msi TARGETDIR=C:\MyInstallPoint /qn
    
  • file setup.exe :

    setup.exe /a
    

Un file setup.exe può anche essere un'installazione di tipo legacy (non MSI) o il temuto tipo di file MSI Installscript, un tipo di progetto InstallShield con buggy ben noto con formato MSI ibrido non conforme agli standard. È essenzialmente un MSI con una GUI personalizzata e più avanzata, ma è anche pieno di bug.

Per file legacy setup.exe l' / a farà nulla, ma si può provare l' / extract_all: interruttore [percorso] come spiegato in questo pdf . È un buon riferimento per l'installazione non presidiata e altre cose. Un'altra risorsa è questo elenco di parametri della riga di comando di InstallShield setup.exe .

I file patch MSI (* .MSP) possono essere applicati a un'immagine di amministrazione per estrarre correttamente i suoi file. 7Zip sarà anche in grado di estrarre i file, ma non saranno formattati correttamente.

Infine, se non funziona diversamente, puoi ottenere i file di installazione estratti pulendo la cartella temporanea sul tuo sistema, avvia interattivamente setup.exe e attendi che venga visualizzata la prima finestra di dialogo. Nella maggior parte dei casi il programma di installazione avrà estratto un mucchio di file in una cartella temporanea. A volte i file sono semplici, altre volte in formato CAB, ma Winzip, 7Zip o persino Universal Extractor (non hanno testato questo prodotto) - potrebbero essere in grado di aprirli.


Vedi anche questa risposta: superuser.com/questions/307678/…
Stein Åsmul

Lo stesso post su stackoverflow: stackoverflow.com/a/24987512/129130 (dovrei eliminarne uno, ma entrambi sono stati annullati e sono stati uniti di recente).
Stein Åsmul,

8

Consiglierei UniExtract per rendere la soluzione di Neoice ancora più semplice. Fa la stessa cosa, è solo più automatizzato e consente diversi metodi per estrarre i file MSI, non solo un'installazione amministrativa (come sta usando la sua soluzione).

UniExtract può anche gestire i pacchetti di exe con WISE o InstallShield, nonché una varietà di altri formati compressi. Oh, ed è gratuito.

Universal Extractor è un programma che fa esattamente ciò che dice: estrae i file da qualsiasi tipo di archivio, che si tratti di un semplice file zip, di un programma di installazione o persino di un pacchetto di Windows Installer (.msi).



1

puoi usare Orca questa app fa parte di Platform SDK, ma puoi anche scaricarla da qui http://astebner.sts.winisp.net/Tools/Orca.zip


3
Orca è migliore per l'estrazione di metadati come file, cartelle e tabelle di registro. In genere non è molto utile per estrarre i file effettivi (completamente inutili se i file non sono memorizzati nella tabella binaria).
Synetech,

1

lessmsiè davvero la scelta migliore qui, in quanto ti offre la scelta esatta di quali file estrarre e dove dovrebbero andare. Inoltre, può essere facilmente installato utilizzando il apt-getframework per Windows, chiamato Choclatey. Il lessmsisito Web sopra è stato spostato e può anche essere trovato / scaricato su GitHub . Inoltre puoi trovare molti altri strumenti e informazioni relative a MSI QUI. : (Mi dispiace, non posso pubblicare più di 2 link!)


1

Aggiungi PeaZip all'elenco. Ha funzionato come un campione


Si prega di leggere Come posso raccomandare il software per alcuni suggerimenti su come dovresti raccomandare il software. Per lo meno dovresti fornire più di un semplice link, ad esempio alcune informazioni aggiuntive sul software stesso, ad esempio come può essere utilizzato per risolvere il problema nella domanda.
DavidPostill




0

Le configurazioni di InstallShield .exe (come le chiamate) sono disponibili in molti modi ed è generalmente possibile estrarre i file da essi.

Un file Setup.exe di InstallShield può contenere programmi di installazione non msi vecchi o legacy o nuovi programmi di installazione msi.

Se setup.exe esegue il wrapping di un'installazione MSI, è possibile specificare setup.exe / a e verrà eseguita l'installazione dell'amministratore dell'MSI, che consente di specificare e stampare il percorso per i file.

Se setup.exe è un'installazione legacy di InstallShield, può o meno supportare l'estrazione di file tramite l' opzione / extract_all: [percorso] . Si prega di consultare qui (aggiornato a luglio 2011, il link Acresso non era più valido, aggiornato di nuovo a febbraio 2014, indicando ora itninja).

Si noti inoltre che un altro modo per ottenere questi file è quello di ripulire la cartella temporanea sul sistema, avviare interattivamente setup.exe e quindi attendere che venga visualizzata la prima finestra di dialogo. Nella maggior parte dei casi il programma di installazione avrà estratto un mucchio di file in una cartella temporanea. A volte i file sono semplici, altre volte in formato CAB, ma Winzip, 7Zip o persino Universal Extractor (non hanno testato questo prodotto) - potrebbero essere in grado di aprirli.


I miei requisiti per farlo sono passati ora - ma proverò quello che mi suggerirai ad un certo punto per vedere se avrebbe funzionato. Grazie per aver risposto.
Martin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.