Extraire des fichiers msi sous Linux


23

Connexe: Comment extraire des fichiers du package MSI?

Pour extraire le contenu d'un programme d'installation MSI sous Linux, je peux soit utiliser msiexecavec wine, soit utiliser 7zip.

Cependant, ce dernier ne conserve que partiellement les répertoires et les noms de fichiers. Existe-t-il un moyen d'extraire correctement les fichiers MSI sans avoir à utiliser wine?


edit: pour illustrer le problème avec Infer.NET de Microsoft, voici une liste des fichiers que 7zip produit et ici celui que msiexec produit (où ce dernier est ce que je veux)


Vous pouvez utiliser cet article pour Ubuntu en espérant qu'il vous aidera. Et essayez également Jsmsix.exe .
avirk

Merci, j'ai déjà lu l'article et il ne résout pas les problèmes de 7zip (ni en combinaison avec par exemple cabextract). Jsmsix nécessiterait toujours winecar vous ne pouvez pas exécuter les exécutables Windows en mode natif.
Michael Schubert

Quel problème rencontrez 7zip-vous pouvez-vous expliquer?
avirk

a ajouté un exemple
Michael Schubert

2
Ce que je voudrais faire, c'est créer un buildscript pour Archlinux, pour lequel un set up wine est une dépendance assez volumineuse juste pour pouvoir installer quelque chose qui devrait dépendre uniquement de mono.
Michael Schubert

Réponses:


9

Bien que cela ne vous aide pas immédiatement, lessmsi travaille sur une version native de Linux. Il préserve la structure du répertoire comme vous le souhaitez, il vaut donc la peine de vérifier si cela va être un problème à long terme pour vous. Malheureusement, la prise en charge de .msi sous Linux semble assez clairsemée, donc lessmsi ou msiexec via wine pourrait être votre seule option immédiate, même si (comme vous l'avez dit) wine est une dépendance assez lourde pour l'extraction d'archives.


Cela semble en effet être la meilleure solution, en utilisant wine et en attendant lessmsi pour Linux.
Michael Schubert

4
FYI: Dans la dernière version de lessmsi, j'ai réussi à déplacer le code d'extraction de cab vers libmspack qui est une bibliothèque portable qui devrait également fonctionner sur Linux. Nous avons donc fait un pas concret vers le support Linux récemment. J'espère bientôt utiliser une bibliothèque msi portable, qui rendra tout portable.
Scott Willeke

-1. La version Linux n'existe toujours pas après de nombreuses années, et comme la question était de savoir comment extraire correctement les fichiers MSI sans avoir à utiliser wine, ce n'est pas la réponse. J'ai utilisé à la place msiextract du paquet msitools ( sudo apt install msitoolsdans Ubuntu) comme recommandé dans la réponse de user2834.
Lissanro Rayen

19

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

Et ouvrez les bugs!


Aucun package n'a été trouvé pour la version 14.04 et sa construction nécessite également de nombreux outils / bibliothèques et compétences. Abandonner
Harry

1
c'est dans debian, et ubuntu willy: launchpad.net/ubuntu/+source/msitools . Vous pouvez alors simplement appeler "msiextract file.msi" et c'est tout, plus de compétences nécessaires.
user2834

Fonctionne ici et préserve les noms de fichiers et les chemins d'accès. Merci.
Simon A. Eugster

1

Vous pouvez essayer un logiciel appelé cabextract - au moins Ubuntu a des packages pour cela, je m'attendrais à ce qu'il soit également trouvé dans d'autres distributions populaires.


4
Merci pour cet indice, mais cabextract ne conserve même pas partiellement les noms de fichiers et les répertoires (il fonctionne donc moins bien que 7zip).
Michael Schubert

Le format MSI est composé de plusieurs couches: au niveau supérieur, c'est une image disque, avec des blocs de données dispersés tout autour du fichier .msi. Si vous décodez l'image disque, elle contient plusieurs fichiers, dont un fichier .cab et des fichiers de base de données. cabextract trouve des en-têtes de fichier CAB à l'intérieur de l'image .msi, mais comme le fichier .cab complet n'est pas contigu, il ne peut pas l'extraire. 7zip peut extraire l'image du disque puis le fichier CAB, mais il ne sait pas lire les fichiers de base de données, qui mappent les entrées du fichier CAB à leurs vrais chemins d'installation, comme le fait lessmsi.
Stuart Caie
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.