Apakah ada alat atau mekanisme untuk mengambil properti publik yang tersedia dari file Windows MSI?
Beberapa vendor yang memasok file MSI tidak mendokumentasikannya sendiri, jadi saya ingin tahu apakah ada cara untuk mengekspos ini tanpa kode sumber.
Property
tabel. Apakah Anda memiliki alur kerja khusus atau kasus penggunaan di luar yang baru saja ditemukan di MSI?Jawaban:
Lessmsi menyediakan baris perintah serta aplikasi interaktif untuk mengambil atribut apa pun dari .msi.
Secara interaktif, buka .msi lalu buka Tampilan tabel dan pilih atau ketik "Properti". Namun sementara ini memberikan nama properti itu tidak memberikan nilai yang valid untuk properti tersebut. (Atau saya belum menemukan tempat yang tepat untuk mencari.)
Baris perintah untuk mencantumkan tabel Properti ke konsol (dengan frustrasi, tidak dapat ditangkap dengan
> output.csv
pengalihan sederhana )sumber
Karena file MSI menyimpan properti publik dalam database internal, Anda sebenarnya bisa menanyakannya menggunakan VBScript dan SQL.
Berikut ini contoh skrip yang akan mengembalikan semua properti yang disimpan dalam file MSI. Merupakan konvensi untuk menggunakan huruf kapital untuk mendefinisikan properti publik, sehingga biasanya mereka dapat diidentifikasi.
sumber
lessmsi adalah alat yang hebat yang pasti berfungsi di sini jika Anda bersedia membuka GUI dan melakukan penyelidikan manual. Namun, saya akan mengatakan, bahwa perintah berikut ini tidak dapat diandalkan menampilkan semua properti:
Salah satu cara untuk (lebih baik) menjamin bahwa Anda mendapatkan semua properti yang mungkin adalah dengan benar-benar melakukan instalasi, perbaikan, atau uninstall dengan file MSI dan mencatat prosesnya. Perintah berikut hanya mencatat properti dan tidak ada yang lain:
Perintah di atas setara dengan:
Metode yang saya sukai, bagaimanapun, adalah untuk tidak benar - benar menginstal / menghapus / memperbaiki (dan sebagai gantinya hanya mengekstrak). Kelebihan metode ini dibandingkan lessmsi adalah tidak memerlukan utilitas pihak ke-3 (mis. Lessmsi ), dan tidak mengharuskan Anda mengacaukan instalasi apa pun. Mengingat Anda memiliki cukup ruang disk untuk menginstal program, Anda dapat melakukan:
Perhatikan bahwa
<absolute_path_to_extract_to>
can menunjuk ke direktori yang tidak ada (perintah akan membuat direktori yang diperlukan atau gagal).Jika Anda membenci UI instalasi karena alasan apa pun, Anda dapat menambahkan
/qr
opsi, yang akan 'mengurangi' dan mungkin menghilangkan UI tanpa mengganggu proses logging properti. Namun berhati-hatilah - jika Anda "lebih rendah" dari UI yang dikurangi (yaitu/qb
|/passive
atau/qn
|/quiet
), Anda<msi_property_logfile>
mungkin kehilangan beberapa properti.sumber
Cara saya melakukannya sekarang adalah dengan menggunakan modul Carbon Powershell. Untuk menginstal jenis modul:
Maka sederhananya
Contoh:
sumber
Saya pikir sekarang mungkin cara terbaik untuk melakukannya adalah menggunakan PowerShell. Berikut ini adalah skrip yang melakukan pekerjaan dengan sangat baik: https://gallery.technet.microsoft.com/scriptcenter/Get-MsiDatabaseProperties-09d9c87c
sumber