Estrarre file msi usando Linux


23

Correlati: Come estrarre i file dal pacchetto MSI?

Per estrarre il contenuto di un programma di installazione MSI usando Linux, posso usare sia msiexeccon wine sia usare 7zip.

Tuttavia, quest'ultimo non conserva le directory e i nomi dei file solo in parte. Esiste un modo per estrarre correttamente i file MSI senza doverlo utilizzare wine?


modifica: per illustrare il problema con Infer.NET di Microsoft, ecco un elenco di file che 7zip produce e qui quello che msiexec produce (dove quest'ultimo è quello che voglio)


Puoi usare questo articolo per Ubuntu sperando che ti possa aiutare. E prova anche Jsmsix.exe .
avirk,

Grazie, ho già letto l'articolo e non risolve i problemi di 7zip (né in combinazione con ad esempio cabextract). Jsmsix richiederebbe comunque wineperché non è possibile eseguire in modo nativo eseguibili di Windows.
Michael Schubert,

Quale problema stai affrontando 7zippuoi spiegare?
avirk,

ha aggiunto un esempio
Michael Schubert,

2
Quello che mi piacerebbe fare è creare un buildscript per Archlinux, per il quale un set up wine è una dipendenza piuttosto voluminosa solo per poter installare qualcosa che dovrebbe dipendere esclusivamente da mono.
Michael Schubert,

Risposte:


9

Sebbene non ti aiuti immediatamente, lessmsi sta lavorando su una versione nativa di Linux. Conserva la struttura delle directory come desideri, quindi vale la pena controllare se questo sarà un problema a lungo termine per te. Sfortunatamente, il supporto .msi su Linux sembra piuttosto scarso, quindi lessmsi o msiexec attraverso wine potrebbero essere la tua unica opzione immediata, anche se (come hai detto) wine è una dipendenza piuttosto pesante per l'estrazione degli archivi.


Questa in effetti sembra essere la soluzione migliore, usando wine e aspettando lessmsi per Linux.
Michael Schubert,

4
Cordiali saluti: Nell'ultima versione di lessmsi sono riuscito a spostare il codice di estrazione della cabina su libmspack che è una libreria portatile che dovrebbe funzionare anche su Linux. Quindi di recente abbiamo fatto un passo concreto verso il supporto di Linux. Presto spero di usare una lib portatile msi, che renderà tutto portatile.
Scott Willeke,

-1. La versione Linux non esiste ancora dopo molti anni, e poiché la domanda era: esiste un modo per estrarre correttamente i file MSI senza dover usare wine, questa non è la risposta. Ho usato invece msiextract dal pacchetto msitools ( sudo apt install msitoolsin Ubuntu) come raccomandato nella risposta dell'utente2834.
Lissanro Rayen,

19

Prova msiextract, https://live.gnome.org/msitools

E bug aperti!


Non è stato trovato alcun pacchetto per 14.04 e la sua costruzione richiede anche molti strumenti / librerie e competenze. Rinunciare
harry

1
è in debian e ubuntu willy: launchpad.net/ubuntu/+source/msitools . Puoi quindi semplicemente chiamare "msiextract file.msi" e il gioco è fatto, non sono necessarie ulteriori competenze.
user2834

Funziona qui e conserva nomi e percorsi dei file. Grazie.
Simon A. Eugster,

1

Puoi provare un software chiamato cabextract - almeno Ubuntu ha dei pacchetti per esso, mi aspetto che si possa trovare anche da altre distro popolari.


4
Grazie per il suggerimento, ma cabextract non conserva nemmeno parzialmente nomi di file e directory (quindi ha prestazioni peggiori di 7zip).
Michael Schubert,

Il formato MSI è composto da più livelli: al livello superiore è un'immagine del disco, con blocchi di dati sparsi all'interno del file .msi. Se si decodifica l'immagine del disco, contiene diversi file, incluso un file CAB e file di database. cabextract trova le intestazioni dei file CAB all'interno dell'immagine .msi, ma poiché il file .cab completo non è contiguo, non può estrarlo. 7zip può estrarre l'immagine del disco e quindi il file CAB, ma non sa come leggere i file del database, che associano le voci del file CAB ai loro veri percorsi di installazione, come lessmsi.
Stuart Caie,
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.