แตกไฟล์ msi โดยใช้ Linux


21

ที่เกี่ยวข้อง: วิธีแยกไฟล์จากแพ็คเกจ MSI?

เพื่อแยกเนื้อหาของตัวติดตั้ง MSI โดยใช้ Linux ฉันสามารถใช้msiexecกับไวน์หรือใช้7zipก็ได้

อย่างไรก็ตามหลังไม่ได้เก็บไดเรกทอรีและชื่อไฟล์ในบางส่วนเท่านั้น มีวิธีการแยกไฟล์ MSI อย่างถูกต้องโดยไม่ต้องใช้wineหรือไม่?


แก้ไข:แสดงให้เห็นถึงปัญหาเกี่ยวกับไมโครซอฟท์ Infer.NET, ที่นี่คือรายการของไฟล์ที่ 7zip ผลิตและที่นี่หนึ่งที่ msiexec ผลิต (ที่หลังเป็นสิ่งที่ฉันต้องการ)


คุณสามารถใช้บทความนี้สำหรับ Ubuntuหวังว่ามันจะช่วยคุณได้ และยังพยายามJsmsix.exe
avirk

ขอบคุณฉันอ่านบทความแล้วและไม่สามารถแก้ไขปัญหา 7zip ได้ (ไม่ได้ใช้ร่วมกับเช่น cabextract) Jsmsix ยังคงต้องการwineเพราะคุณไม่สามารถเรียกใช้โปรแกรมปฏิบัติการ Windows ได้
Michael Schubert

คุณ7zipสามารถอธิบายปัญหาอะไรที่คุณกำลังเผชิญอยู่
avirk

เพิ่มตัวอย่าง
Michael Schubert

2
สิ่งที่ฉันต้องการจะทำคือสร้าง buildscript สำหรับ Archlinux ซึ่งการติดตั้งไวน์นั้นค่อนข้างต้องพึ่งพาอย่างมากเพื่อให้สามารถติดตั้งบางสิ่งที่ควรขึ้นอยู่กับโมโน
Michael Schubert

คำตอบ:


9

แม้ว่ามันจะไม่ช่วยคุณในทันที แต่lessmsiก็กำลังทำงานบน Linux เวอร์ชันดั้งเดิมอยู่ มันเก็บรักษาโครงสร้างไดเรกทอรีตามที่คุณต้องการดังนั้นมันจึงคุ้มค่าที่จะตรวจสอบว่านี่จะเป็นปัญหาระยะยาวสำหรับคุณหรือไม่ โชคไม่ดีที่การสนับสนุน. msi บน Linux นั้นค่อนข้างกระจัดกระจายดังนั้น lessmsi หรือ msiexec ผ่านไวน์อาจเป็นทางเลือกเดียวของคุณแม้ว่าไวน์ (ตามที่คุณพูด) ไวน์เป็นสิ่งที่ต้องพึ่งพาอย่างมากสำหรับการแยกไฟล์เก็บถาวร


นั่นน่าจะเป็นทางออกที่ดีที่สุดโดยใช้ไวน์และรอ lessmsi สำหรับ Linux
Michael Schubert

4
FYI: ในรุ่นล่าสุดของ lessmsi ฉันจัดการเพื่อย้ายรหัสการดึงข้อมูล cab ไปยัง libmspack ซึ่งเป็นไลบรารีแบบพกพาที่ควรทำงานบน linux ด้วย ดังนั้นเราจึงใช้ขั้นตอนที่เป็นรูปธรรมในการสนับสนุน linux เมื่อเร็ว ๆ นี้ เร็ว ๆ นี้ฉันหวังว่าจะใช้ lib msi แบบพกพาซึ่งจะทำให้ทุกอย่างพกพา
Scott Willeke

-1 รุ่น Linux ยังคงไม่มีอยู่หลังจากหลายปีและเนื่องจากมีคำถามว่ามีวิธีการแยกไฟล์ MSI อย่างถูกต้องโดยไม่ต้องใช้ไวน์นี่ไม่ใช่คำตอบ ฉันใช้ msiextract แทนจากแพ็คเกจ msitools ( sudo apt install msitoolsใน Ubuntu) ตามที่แนะนำในคำตอบโดย user2834
Lissanro Rayen

17

ลองใช้ msiextract https://live.gnome.org/msitools

และเปิดบั๊ก!


ไม่พบแพ็คเกจสำหรับ 14.04 และการสร้างมันยังต้องการเครื่องมือ / libs และทักษะจำนวนมาก เลิก
แฮร์รี่

1
มันอยู่ในเดเบียนและอูบุนตู willy: launchpad.net/ubuntu/+source/msitools จากนั้นคุณสามารถเรียก "msiextract file.msi" และนั่นคือมันไม่จำเป็นต้องมีทักษะเพิ่มเติม
2834

ทำงานที่นี่และเก็บรักษาชื่อไฟล์และพา ธ ขอบคุณ
Simon A. Eugster

1

คุณสามารถลองใช้ซอฟต์แวร์ที่เรียกว่าcabextract - atleast Ubuntu มีแพ็คเกจให้ฉันคาดหวังให้พบได้จาก distros ยอดนิยมอื่น ๆ เช่นกัน


4
ขอบคุณสำหรับคำแนะนำ แต่ cabextract ไม่ได้อนุรักษ์ชื่อไฟล์และไดเรกทอรีบางส่วนเอาไว้ (ดังนั้นมันจึงทำงานได้แย่กว่า 7zip)
Michael Schubert

รูปแบบ MSI มีหลายเลเยอร์: ที่ระดับบนสุดจะเป็นดิสก์อิมเมจโดยมีบล็อคข้อมูลกระจายอยู่ทั่วในไฟล์. msi หากคุณถอดรหัสดิสก์อิมเมจจะมีไฟล์หลายไฟล์รวมถึงไฟล์. cab และไฟล์ฐานข้อมูล cabextract ค้นหาส่วนหัวไฟล์ CAB ในอิมเมจ. msi แต่เนื่องจากไฟล์. cab แบบเต็มไม่ต่อเนื่องจึงไม่สามารถแตกไฟล์ออกได้ 7zip สามารถแตกไฟล์อิมเมจดิสก์จากนั้นไฟล์ CAB แต่ไม่รู้วิธีอ่านไฟล์ฐานข้อมูลซึ่งแม็พรายการไฟล์ CAB กับพา ธ การติดตั้งจริงเช่นเดียวกับ lessmsi
Stuart Caie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.