Dari file yang diinstal, bagaimana menemukan msi mana yang akan menginstal file tersebut?

Manajer saya memberi saya daftar file konfigurasi dari mesin tempat msi diinstal.

Dan dia meminta saya untuk mencari dari msi mana mereka berasal. (karena kita perlu menulis logika untuk msi itu).

Bagaimana cara mengetahui dari msi mana file ini berasal?

Membuka orca secara manual dan mencarinya sulit karena jumlah msi lebih banyak.

apakah ada pendekatan alternatif lain? kami menggunakan Wix untuk membuat msi.


person Samselvaprabu    schedule 26.03.2013    source sumber


Jawaban (3)


Saya akan mendapatkan hash MD5 dari file .config lalu menanyakan tabel MsiFileHash di .msis Anda hingga saya menemukan hash yang cocok.

person Rob Mensching    schedule 26.03.2013
comment
Sayangnya MSI tidak memiliki fitur seperti RPM (rpm -qf). - person Christopher Painter; 27.03.2013

Tidak ada jaminan bahwa MSI menginstal file tersebut. Meskipun demikian, salah satu peretasan cepat yang sering saya gunakan adalah perintah ms-dos discovertr

Pada mesin dengan file konfigurasi terinstal:

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

Ini akan melakukan pencarian peka huruf besar-kecil di seluruh file MSI untuk string dark.exe. Kemudian gunakan ORCA untuk memeriksa MSI yang dihasilkan untuk melihat apakah hit tersebut akurat dan produk apa itu. Pengingat: Nama MSI akan berupa hash hex pendek karena ini adalah MSI yang dilucuti/di-cache, bukan MSI asli.

person Christopher Painter    schedule 26.03.2013

Jika Anda dapat menjalankan kode pada mesin, maka utilitas yang menggunakan API Penginstal Windows akan memberikan jawabannya. Utilitas seperti itu mudah ditulis dalam VC++.

Titik awal dengan API Penginstal Windows adalah MsiEnumComponents, yang akan memberi Anda kode komponen untuk setiap komponen yang diinstal pada sistem. Dari sana, MsiEnumClients akan memberi Anda kode produk untuk setiap produk yang menyertakan komponen tertentu. Kemudian Anda dapat menggunakan MsiGetComponentPath untuk mendapatkan jalur komponen. Jika itu adalah jalur yang Anda minati, gunakan MsiGetProductInfoEx untuk mengetahui produk yang menginstalnya, seperti INSTALLPROPERTY_INSTALLSOURCE dan INSTALLPROPERTY_PACKAGENAME.

Kedengarannya rumit tapi sebenarnya tidak.

person Tom Blodget    schedule 30.03.2013