จากไฟล์ที่ติดตั้ง แล้วจะทราบได้อย่างไรว่า msi ตัวไหนที่จะติดตั้งไฟล์นั้น?

ผู้จัดการของฉันให้รายการไฟล์ปรับแต่งจากเครื่องที่ติดตั้ง msi ให้ฉัน

และเขาขอให้ฉันค้นหาว่าพวกเขามาจากไหน (เพราะเราจำเป็นต้องเขียนตรรกะบางอย่างสำหรับ msi นั้น)

จะทราบได้อย่างไรว่าไฟล์นี้มาจาก msi ใด

การเปิดใน orca ด้วยตนเองและค้นหาเป็นเรื่องยากเนื่องจากจำนวน msi นั้นมากกว่า

มีแนวทางอื่นอื่นอีกหรือไม่? เราใช้ Wix เพื่อสร้าง msi


person Samselvaprabu    schedule 26.03.2013    source แหล่งที่มา


คำตอบ (3)


ฉันจะได้รับแฮช MD5 ของไฟล์ .config จากนั้นจึงสอบถามตาราง MsiFileHash ใน .msis ของคุณจนกว่าฉันจะพบแฮชที่ตรงกัน

person Rob Mensching    schedule 26.03.2013
comment
น่าเสียดายที่ MSI ไม่มีคุณสมบัติเช่น RPM (rpm -qf) - person Christopher Painter; 27.03.2013

ไม่มีการรับประกันว่า MSI จะติดตั้งไฟล์ดังกล่าว แฮ็กสั้นๆ อย่างหนึ่งที่ฉันใช้บ่อยคือคำสั่ง ms-dos findstr

บนเครื่องที่ติดตั้งไฟล์ปรับแต่ง:

CD %WINDIR%\Installer
FINDSTR -i -m dark.exe *.msi *.msi

การดำเนินการนี้จะทำการค้นหาแบบคำนึงถึงขนาดตัวพิมพ์ของไฟล์ MSI ทั้งหมดสำหรับสตริง dark.exe จากนั้นใช้ ORCA เพื่อตรวจสอบ MSI ที่เป็นผลลัพธ์เพื่อดูว่าการตีนั้นแม่นยำหรือไม่และเป็นผลิตภัณฑ์ใด คำเตือน: ชื่อ MSI จะเป็นแฮชเลขฐานสิบหกแบบสั้น เนื่องจาก MSI เหล่านี้ถูกถอด/แคชไว้ ไม่ใช่ของ MSI ดั้งเดิม

person Christopher Painter    schedule 26.03.2013

หากคุณสามารถรันโค้ดบนเครื่องได้ ยูทิลิตี้ที่ใช้ Windows Installer API จะให้คำตอบแก่คุณ ยูทิลิตี้ดังกล่าวเขียนด้วย VC++ ได้อย่างง่ายดาย

จุดเริ่มต้นสำหรับ Windows Installer API คือ MsiEnumComponents ซึ่งจะให้โค้ดส่วนประกอบแก่คุณสำหรับส่วนประกอบทุกชิ้นที่ติดตั้งบนระบบ จากนั้น MsiEnumClients จะให้รหัสผลิตภัณฑ์แก่คุณสำหรับทุกผลิตภัณฑ์ที่มีส่วนประกอบเฉพาะ จากนั้นคุณสามารถใช้ MsiGetComponentPath เพื่อรับเส้นทางของส่วนประกอบ หากเป็นเส้นทางที่คุณสนใจ ให้ใช้ MsiGetProductInfoEx เพื่อค้นหาเกี่ยวกับผลิตภัณฑ์ที่ติดตั้ง เช่น INSTALLPROPERTY_INSTALLSOURCE และ INSTALLPROPERTY_PACKAGENAME.

ฟังดูซับซ้อน แต่ก็ไม่เป็นเช่นนั้น

person Tom Blodget    schedule 30.03.2013