Trích xuất tập tin msi bằng Linux


23

Liên quan: Làm thế nào để giải nén tập tin từ gói MSI?

Để trích xuất nội dung của trình cài đặt MSI bằng Linux, tôi có thể sử dụng msiexecvới rượu hoặc sử dụng 7zip.

Tuy nhiên, sau này không bảo tồn các thư mục và tên tệp chỉ một phần. Có cách nào để giải nén tập tin MSI đúng cách mà không phải sử dụng winekhông?


chỉnh sửa: để minh họa vấn đề với Infer.NET của Microsoft, đây là danh sách các tệp mà 7zip tạo ra và đây là một tệp mà msiexec tạo ra (trong đó cái sau là thứ tôi muốn)


Bạn có thể sử dụng bài viết này cho Ubuntu hy vọng nó sẽ giúp bạn. Và cũng thử Jsmsix.exe .
avirk

Cảm ơn, tôi đã đọc bài viết và nó không giải quyết được các vấn đề 7zip (không kết hợp với ví dụ như cabextract). Jsmsix vẫn sẽ yêu cầu winevì bạn không thể chạy các tệp thực thi Windows nguyên bản.
Michael Schubert

Vấn đề bạn đang đối mặt với 7zipbạn có thể giải thích?
avirk

đã thêm một ví dụ
Michael Schubert

2
Những gì tôi muốn làm là tạo một bản dựng cho Archlinux, trong đó một loại rượu được thiết lập là một phụ thuộc khá cồng kềnh chỉ để có thể cài đặt một cái gì đó chỉ phụ thuộc vào mono.
Michael Schubert

Câu trả lời:


9

Mặc dù nó sẽ không giúp bạn ngay lập tức, nhưng lowmsi đang làm việc trên phiên bản Linux gốc. Nó bảo tồn cấu trúc thư mục như bạn muốn, vì vậy, đáng để kiểm tra xem đây có phải là vấn đề lâu dài đối với bạn không. Thật không may, hỗ trợ .msi trên Linux có vẻ khá thưa thớt, vì vậy lessmsi hoặc msiexec thông qua rượu vang có thể là lựa chọn ngay lập tức của bạn, ngay cả khi (như bạn đã nói) rượu là một phụ thuộc khá nặng nề để trích xuất tài liệu lưu trữ.


Đó thực sự có vẻ là giải pháp tốt nhất, sử dụng rượu vang và chờ đợi ít hơn cho Linux.
Michael Schubert

4
FYI: Trong bản phát hành mới nhất của lessmsi, tôi đã xoay sở để chuyển mã trích xuất cab sang libmspack, một thư viện di động cũng nên chạy trên linux. Vì vậy, chúng tôi đã thực hiện một bước cụ thể đối với hỗ trợ linux gần đây. Tôi hy vọng sẽ sớm sử dụng một libi ms di động, nó sẽ làm cho mọi thứ di động.
Scott Willeke

-1. Phiên bản Linux vẫn không tồn tại sau nhiều năm và vì câu hỏi đặt ra là có cách nào để giải nén đúng cách các tệp MSI mà không phải sử dụng rượu vang, đây không phải là câu trả lời. Tôi đã sử dụng thay thế msiextract từ gói msitools ( sudo apt install msitoolstrong Ubuntu) như được đề xuất trong câu trả lời của user2834.
Lissanro Rayen

19

Hãy dùng thử msiextract, https://live.gnome.org/msitools

Và mở lỗi!


Không có gói nào được tìm thấy cho 14.04 và việc xây dựng nó cũng cần rất nhiều công cụ / libs và kỹ năng. Từ bỏ
quấy rối

1
đó là trong debian và ubfox willy: launchpad.net/ubfox/+source/msitools . Sau đó, bạn có thể chỉ cần gọi "msiextract file.msi" và đó là nó, không cần thêm kỹ năng.
dùng2834

Hoạt động ở đây, và bảo tồn tên tệp và đường dẫn. Cảm ơn.
Simon A. Eugster

1

Bạn có thể dùng thử phần mềm có tên cabextract - ít nhất Ubuntu có các gói cho nó, tôi hy vọng nó cũng sẽ được tìm thấy từ các bản phát hành phổ biến khác.


4
Cảm ơn gợi ý, nhưng cabextract thậm chí không bảo tồn một phần tên tệp và thư mục (vì vậy nó hoạt động kém hơn 7zip).
Michael Schubert

Định dạng MSI có nhiều lớp: ở cấp cao nhất là hình ảnh đĩa, với các khối dữ liệu nằm rải rác bên trong tệp .msi. Nếu bạn giải mã hình ảnh đĩa, nó chứa một số tệp, bao gồm tệp .cab và tệp cơ sở dữ liệu. Cabextract tìm thấy các tiêu đề tệp CAB bên trong hình ảnh .msi, nhưng vì tệp .cab đầy đủ không liền kề, nên không thể trích xuất nó. 7zip có thể trích xuất hình ảnh đĩa và sau đó là tệp CAB, nhưng nó không biết cách đọc các tệp cơ sở dữ liệu, ánh xạ các mục nhập tệp CAB theo đường dẫn cài đặt thực sự của chúng, giống như lessmsi.
Stuart Caie
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.