Витяг msi-файлів за допомогою Linux


23

Пов'язане: Як витягти файли з пакета MSI?

Щоб витягнути вміст інсталятора MSI за допомогою Linux, я можу або використовувати msiexecз вином, або використовувати 7zip.

Однак останні не зберігають каталоги та назви файлів лише частково. Чи є спосіб правильно витягнути MSI-файли без використання wine?


редагувати: щоб проілюструвати проблему з Infer.NET Microsoft, ось список файлів, які виробляє 7zip, і ось один, який створює msiexec (де останній - те, що я хочу)


Ви можете використовувати цю статтю для Ubuntu сподіваюсь, що вона вам допоможе. А також спробуйте Jsmsix.exe .
avirk

Дякую, я вже прочитав статтю, і це не вирішує проблеми 7zip (ні в поєднанні, наприклад, з cabextract). Jsmsix все ще потребуватиме, wineтому що ви не можете запускати виконавчі файли Windows.
Майкл Шуберт

Яке питання ви стикаєтесь, чи 7zipможете ви пояснити?
avirk

додав приклад
Майкл Шуберт

2
Що я хотів би зробити, це створити сценарій складання для Archlinux, для якого налаштоване вино є досить об'ємною залежністю, щоб мати можливість встановити щось, що повинно залежати виключно від моно.
Майкл Шуберт

Відповіді:


9

Хоча це не допоможе вам одразу, lessmsi працює над рідною версією Linux. Він зберігає структуру каталогів, як ви хочете, тому варто перевірити, чи це буде для вас довгостроковою проблемою. На жаль, підтримка .msi в Linux виглядає досить рідко, тому меншеmsi або msiexec через вино може бути вашим єдиним негайним варіантом, навіть якщо (як ви сказали) вино є досить важкою залежністю для вилучення архівів.


Це дійсно здається найкращим рішенням, використовуючи вино та чекаючи меншеmsi для Linux.
Майкл Шуберт

4
FYI: В останньому випуску lessmsi мені вдалося перенести код вилучення кабіни на libmspack, який є портативною бібліотекою, яка також повинна працювати на Linux. Тому нещодавно ми зробили конкретний крок до підтримки Linux. Незабаром я сподіваюся використовувати портативний msi lib, який зробить все портативним.
Скотт Віллеке

-1. Версія Linux досі не існує через багато років, і оскільки питання, чи є спосіб правильно витягнути файли MSI без використання вина, це не є відповіддю. Я використав замість msiextract з пакету msitools ( sudo apt install msitoolsв Ubuntu), як рекомендується у відповіді користувачем2834.
Ліссанро Рейен

19

Спробуйте msiextract, https://live.gnome.org/msitools

І відкриті помилки!


Не знайдено жодного пакету для 14.04, і для його створення також потрібно багато інструментів / ліфтів та навичок. Підніматись
поспішайте

1
це в debian і ubuntu willy: launchpad.net/ubuntu/+source/msitools . Потім ви можете просто зателефонувати "msiextract file.msi", і це все, більше навичок не потрібно.
користувач2834

Тут працює і зберігає назви файлів та шляхи. Спасибі.
Саймон А. Егстер

1

Ви можете спробувати програмне забезпечення під назвою cabextract - у atleast Ubuntu є пакети для нього, я б очікував, що його можна знайти і в інших популярних дистрибутивах.


4
Дякуємо за підказку, але cabextract навіть частково не зберігає назви файлів і каталогів (тому він працює гірше, ніж 7zip).
Майкл Шуберт

Формат MSI є декількома шарами: на верхньому рівні це зображення диска, з блоками даних, розкиданими по всьому файлу .msi. Якщо ви декодуєте зображення диска, воно містить кілька файлів, включаючи .cab файл та файли бази даних. cabextract знаходить заголовки файлів CAB всередині .msi-зображення, але оскільки повний .cab-файл не є суміжним, він не може його витягнути. 7zip може витягти образ диска, а потім файл CAB, але він не знає, як читати файли бази даних, які відображають записи файлів CAB в їх справжні контури установки, як це робить меншеmsi.
Стюарт Кей
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.