มีเครื่องมือหรือกลไกในการเรียกคืนคุณสมบัติสาธารณะที่มีอยู่จากไฟล์ Windows MSI หรือไม่
ผู้ค้าบางรายที่จัดหาไฟล์ MSI ไม่ได้จัดทำเอกสารเหล่านี้ด้วยตัวเองดังนั้นฉันอยากรู้ว่ามีวิธีการเปิดเผยข้อมูลเหล่านี้หรือไม่โดยไม่มีซอร์สโค้ด
มีเครื่องมือหรือกลไกในการเรียกคืนคุณสมบัติสาธารณะที่มีอยู่จากไฟล์ Windows MSI หรือไม่
ผู้ค้าบางรายที่จัดหาไฟล์ MSI ไม่ได้จัดทำเอกสารเหล่านี้ด้วยตัวเองดังนั้นฉันอยากรู้ว่ามีวิธีการเปิดเผยข้อมูลเหล่านี้หรือไม่โดยไม่มีซอร์สโค้ด
คำตอบ:
Lessmsiจัดเตรียมบรรทัดคำสั่งรวมถึงแอปพลิเคชันแบบโต้ตอบสำหรับการดึงข้อมูลคุณลักษณะใด ๆ จาก. msi
แบบโต้ตอบเปิด. msi จากนั้นไปที่มุมมองตารางและเลือกหรือพิมพ์ "คุณสมบัติ" อย่างไรก็ตามในขณะนี้ให้ชื่อคุณสมบัติมันไม่ได้ให้ค่าที่ถูกต้องสำหรับคุณสมบัติดังกล่าว (หรือฉันไม่ได้ค้นพบสถานที่ที่เหมาะสมที่จะมอง)
บรรทัดคำสั่งเพื่อแสดงรายการตารางคุณสมบัติที่คอนโซล (frustratingly ไม่สามารถจับภาพด้วยการ> output.csv
เปลี่ยนเส้นทางแบบง่าย)
lessmsi l -t Property ...\path\to\setup.msi
ระบุว่า MSI เก็บไฟล์คุณสมบัติสาธารณะในฐานข้อมูลภายในคุณสามารถค้นหาได้โดยใช้ VBScript และ SQL
นี่คือตัวอย่างสคริปต์ที่จะส่งคืนคุณสมบัติทั้งหมดที่เก็บไว้ในไฟล์ MSI เป็นแบบแผนที่จะใช้อักษรตัวใหญ่เพื่อกำหนดคุณสมบัติสาธารณะดังนั้นนั่นคือวิธีที่พวกเขามักจะระบุตัวตนได้
lessmsiเป็นเครื่องมือที่ยอดเยี่ยมที่ใช้งานได้อย่างแน่นอนถ้าคุณเต็มใจที่จะเปิด GUI และทำการตรวจสอบด้วยตนเอง อย่างไรก็ตามฉันจะบอกว่าคำสั่งต่อไปนี้ไม่สามารถแสดงคุณสมบัติทั้งหมดได้อย่างน่าเชื่อถือ:
lessmsi l -t Property <msi_name>
วิธีหนึ่งในการ (ดีกว่า) รับประกันว่าคุณจะได้รับคุณสมบัติที่เป็นไปได้ทั้งหมดคือทำการติดตั้งซ่อมแซมหรือถอนการติดตั้งด้วยไฟล์ MSI และเข้าสู่กระบวนการ คำสั่งต่อไปนี้บันทึกเฉพาะคุณสมบัติและไม่มีอะไรอื่น:
<msi_name> /lp! <msi_property_logfile>
คำสั่งดังกล่าวเทียบเท่ากับ:
msiexec /lp! <msi_property_logfile> /i <msi_name>
วิธีการที่ฉันชอบคือการไม่ติดตั้ง / ลบ / ซ่อมแซม (และแยกไฟล์ออกมาแทน) ข้อดีวิธีนี้มีมากกว่าlessmsiคือมันไม่จำเป็นต้องมียูทิลิตี้ของบุคคลที่สาม (เช่นlessmsi ) และมันไม่ต้องการให้คุณยุ่งกับการติดตั้งใด ๆ เนื่องจากคุณมีพื้นที่ดิสก์เพียงพอที่จะติดตั้งโปรแกรมคุณสามารถทำสิ่งต่อไปนี้
msiexec /a <msi_name> /lp! <msi_property_logfile> TARGETDIR=<absolute_path_to_extract_to>
โปรดทราบว่า<absolute_path_to_extract_to>
สามารถชี้ไปที่ไดเรกทอรีที่ไม่มีอยู่ (คำสั่งจะสร้างไดเรกทอรีที่จำเป็นหรือล้มเหลว)
หากคุณไม่ชอบ UI การติดตั้งด้วยเหตุผลใดก็ตามคุณสามารถต่อท้าย/qr
ตัวเลือกซึ่งจะ 'ลด' และอาจกำจัด UI โดยไม่ทำให้กระบวนการบันทึกทรัพย์สินเสียหาย ได้รับการเตือนอย่างไรก็ตาม - ถ้าคุณ "ต่ำ" กว่า UI ที่ลดลง (viz. /qb
| /passive
หรือ/qn
| /quiet
) คุณ<msi_property_logfile>
อาจขาดคุณสมบัติบางอย่าง
วิธีที่ฉันทำตอนนี้คือการใช้โมดูล Carbon Powershell ในการติดตั้งโมดูลประเภท:
Install-Module -Name 'Carbon' -AllowClobber
จากนั้นก็ง่ายๆ
msi your_msi_path.msi
ตัวอย่าง:
msi putty-64bit-0.70-installer.msi
ProductName ProductVersion Manufacturer ProductCode
----------- -------------- ------------ -----------
PuTTY release 0.70 (64-bit) 0.70.0.0 Simon Tatham 45b3032f-22cc-40cd-9e97-4da7095fa5a2
ฉันคิดว่าตอนนี้อาจเป็นวิธีที่ดีที่สุดในการทำเช่นนี้โดยใช้ PowerShell นี่คือสคริปต์ที่ทำงานได้ดีจริงๆ: https://gallery.technet.microsoft.com/scriptcenter/Get-MsiDatabaseProperties-09d9c87c
Property
ตาราง คุณมีกระบวนการทำงานหรือกรณีการใช้งานเฉพาะด้านนอกเพียงแค่ฉายใน MSI?