Extrahieren von MSI-Dateien unter Linux

23

Siehe auch: Wie extrahiere ich Dateien aus dem MSI-Paket?

Um den Inhalt eines MSI-Installationsprogramms unter Linux zu extrahieren, kann ich entweder msiexecmit Wein oder mit verwenden 7zip.

Letztere bewahrt Verzeichnisse und Dateinamen jedoch nicht nur teilweise. Gibt es eine Möglichkeit, MSI-Dateien ordnungsgemäß zu extrahieren, ohne sie verwenden zu müssen wine?


edit: das Problem mit Microsofts Infer.NET zu veranschaulichen, hier ist eine Liste der Dateien , die 7zip produziert und hier ein , dass msiexec erzeugt (wobei letzteres ist das, was ich will)

Michael Schubert
quelle
Sie können diesen Artikel für Ubuntu verwenden und hoffen, dass er Ihnen hilft. Und versuchen Sie auch Jsmsix.exe .
Avirk
Danke, ich habe den Artikel bereits gelesen und er behebt die 7zip-Probleme nicht (auch nicht in Kombination mit zB cabextract). Jsmsix würde es weiterhin erfordern, wineda Sie keine ausführbaren Windows-Dateien nativ ausführen können.
Michael Schubert
Vor welchem ​​Problem stehen Sie, 7zipkönnen Sie es erklären?
Avirk
hat ein Beispiel hinzugefügt
Michael Schubert
2
Was ich tun möchte, ist ein Buildscript für Archlinux zu erstellen, für das ein eingerichteter Wein eine ziemlich umfangreiche Abhängigkeit darstellt, nur um in der Lage zu sein, etwas zu installieren, das ausschließlich von Mono abhängen sollte.
Michael Schubert

Antworten:

9

Lessmsi hilft Ihnen nicht sofort, arbeitet aber an einer nativen Linux-Version. Die Verzeichnisstruktur bleibt so erhalten, wie Sie es möchten. Es lohnt sich daher zu prüfen, ob dies ein langfristiges Problem für Sie ist. Leider scheint die .msi-Unterstützung unter Linux recht spärlich zu sein, sodass lessmsi oder msiexec über wine Ihre einzige unmittelbare Option sein könnten, selbst wenn (wie Sie sagten) wine eine ziemlich starke Abhängigkeit für das Extrahieren von Archiven darstellt.

ChimneyImp
quelle
Das scheint in der Tat die beste Lösung zu sein, wenn man Wein verwendet und auf lessmsi für Linux wartet.
Michael Schubert
4
Zu Ihrer Information: In der neuesten Version von lessmsi ist es mir gelungen, den Cab-Extraktionscode auf libmspack umzustellen, eine portable Bibliothek, die auch unter Linux laufen sollte. So haben wir kürzlich einen konkreten Schritt in Richtung Linux-Unterstützung gemacht. Ich hoffe, bald eine portable msi lib zu verwenden, die alles portabel macht.
Scott Willeke
-1. Die Linux-Version existiert nach vielen Jahren immer noch nicht, und da die Frage lautete, ob es eine Möglichkeit gibt, MSI-Dateien richtig zu extrahieren, ohne Wein zu verwenden, ist dies nicht die Antwort. Ich habe stattdessen msiextract aus dem msitools-Paket ( sudo apt install msitoolsin Ubuntu) verwendet, wie in der Antwort von user2834 empfohlen.
Lissanro Rayen
19

Probieren Sie msiextract aus: https://live.gnome.org/msitools

Und offene Bugs!

user2834
quelle
Es wurde kein Paket für 14.04 gefunden und für dessen Erstellung sind viele Tools / Bibliotheken und Fähigkeiten erforderlich. Aufgeben
Harry
1
Es ist in Debian und Ubuntu WILLY: launchpad.net/ubuntu/+source/msitools . Sie können dann einfach "msiextract file.msi" aufrufen und das wars, es sind keine weiteren Fähigkeiten erforderlich.
User2834
Funktioniert hier und behält Dateinamen und Pfade bei. Vielen Dank.
Simon A. Eugster
1

Sie können die Software cabextract ausprobieren - zumindest Ubuntu hat Pakete dafür, ich würde erwarten, dass sie auch in anderen populären Distributionen zu finden ist.

Unksi
quelle
4
Vielen Dank für den Hinweis, aber cabextract speichert Dateinamen und Verzeichnisse nicht einmal teilweise (daher ist die Leistung schlechter als bei 7zip).
Michael Schubert
Das MSI-Format besteht aus mehreren Ebenen: Auf der obersten Ebene handelt es sich um ein Festplatten-Image, bei dem die Datenblöcke über die gesamte MSI-Datei verteilt sind. Wenn Sie das Datenträgerabbild dekodieren, enthält es mehrere Dateien, einschließlich einer CAB-Datei und Datenbankdateien. cabextract findet CAB-Dateikopfzeilen im MSI-Image. Da die vollständige CAB-Datei jedoch nicht zusammenhängend ist, kann sie nicht extrahiert werden. 7zip kann das Disk-Image und dann die CAB-Datei extrahieren , kann jedoch nicht die Datenbankdateien lesen, die die CAB-Dateieinträge wie lessmsi ihren tatsächlichen Installationspfaden zuordnen.
Stuart Caie