Bir MSI dosyasından genel mülkleri alma


12

Windows MSI dosyasından kullanılabilir genel özellikleri almak için bir araç veya mekanizma var mı?

MSI dosyaları sağlayan bazı satıcılar bunları kendileri belgelemezler, bu yüzden bunları kaynak kodu olmadan göstermenin bir yolu olup olmadığını merak ediyorum.


8
Microsoft'un ORCA'sı , Pantaray'ın SuperORCA'sı ve diğer tüm MSI düzenlemeleri tablo dahil herhangi bir tabloya göz atmanıza / düzenlemenize izin verecektir Property. MSI'da sadece etrafta dolaşan özel bir iş akışınız veya kullanım vakanız var mı?
jscott

2
(Bu her zaman mümkün değildir gibi) satıcı veya belgeleri sorgulamak zorunda kalmadan, yükleme sırasında doğru bir şekilde geçirilebilir böylece kullanılabilir ortak özellikleri anlamak istedim. Kukla ile yükleme sırasında MSI özelliklerini geçebiliriz (misexec.exe'yi sararız), bu nedenle bu yeteneğe sahip olmak kullanışlı.
Ken Barber

1
Özellikler tablosunda listelenmemiş olmalarına rağmen, yüklemeyi denetlemek için iletebileceğiniz başka genel özellikler olabilir. Özellikler bir koşula bağlı olarak dinamik olarak ayarlanabilir, örneğin Kayıt Defteri araması. Dolayısıyla satıcı dokümantasyonu daha iyi bilgi kaynağıdır.
Alexey Ivanov

Özelliklerin değerlerini nasıl değiştirdiğini görmek için yüklemeyi ayrıntılı günlük kaydıyla da çalıştırabilirsiniz.
Alexey Ivanov

Gecikme için üzgünüm - Orca ve büyüleyici denedim, ama @AlexeyIvanov tanımladığınız davranışı onayladım - yani, bazı özellikler görünmez. Bu splunk.msi ve onun belgeleri ile onayladı. Sanırım Orca'da görünenlerin varsayılanları var, ama bu kurallı bir liste değil. Ayrıntılı günlük tutma metodolojisi hakkında biraz daha bilgi verebilir misiniz?
Ken Barber

Yanıtlar:


8

Lessmsi , .msi'den herhangi bir özniteliği almak için bir komut satırı ve etkileşimli uygulama sağlar.

Etkileşimli olarak .msi dosyasını açın, ardından Tablo görünümüne gidin ve "Özellik" i seçin veya yazın. Ancak bu özellik adları verirken, söz konusu özellik için geçerli değerler vermez. (Ya da bakmak için doğru yeri bulamadım.)

Listelenecek komut satırını Özellikler tablosundan konsola (sinir bozucu, basit > output.csvyönlendirme ile yakalanamaz )

lessmsi l -t Property ...\path\to\setup.msi

1

MSI dosyasının genel özellikleri bir iç veritabanında depoladığı göz önüne alındığında, VBScript ve SQL kullanarak bunları sorgulayabilirsiniz.

MSI dosyasında depolanan tüm özellikleri döndürecek örnek bir komut dosyası. Kamusal mülkleri tanımlamak için büyük harfler kullanmak gelenekseldir, bu yüzden genellikle tanımlanabilirler.


1

lessmsi , GUI'sini açıp manuel araştırma yapmak istiyorsanız kesinlikle burada çalışan harika bir araçtır. Ancak, aşağıdaki komutun tüm özellikleri güvenilir bir şekilde sunmadığını söyleyeceğim:

lessmsi l -t Property <msi_name>

Olası tüm özelliklere sahip olduğunuzu garanti etmenin (daha iyi) bir yolu, aslında bir yükleme, onarım veya MSI dosyasıyla kaldırma ve işlemi günlüğe kaydetmektir. Aşağıdaki komut yalnızca özellikleri kaydeder ve başka hiçbir şey kaydetmez:

<msi_name> /lp! <msi_property_logfile>

Yukarıdaki komut şuna eşdeğerdir:

msiexec /lp! <msi_property_logfile> /i <msi_name>

Benim tercih edilen yöntem ise etmektir değil aslında (ve basitçe yerine ayıklamak) / kaldırmayı / onarım yükleyin. Bu yöntemin lessmsi'ye göre avantajları , bir üçüncü taraf yardımcı programı (yani lessmsi ) gerektirmemesi ve herhangi bir kurulumla uğraşmanızı gerektirmemesidir. Programı gerçekten yüklemek için yeterli disk alanınız olduğu göz önüne alındığında, şunları yapabilirsiniz:

msiexec /a <msi_name> /lp! <msi_property_logfile> TARGETDIR=<absolute_path_to_extract_to>

<absolute_path_to_extract_to>Kutunun varolmayan bir dizini işaret ettiğini unutmayın (komut gerekli dizinleri oluşturur veya başarısız olur).

Herhangi bir nedenden dolayı kurulum kullanıcı arayüzünden nefret ederseniz /qr, özelliği günlüğe kaydetme işlemini bozmadan 'azaltacak' ve muhtemelen kullanıcı arayüzünü kaldıracak seçeneği ekleyebilirsiniz . Ancak uyarılmalıdır - indirgenmiş kullanıcı arayüzünden (viz. /qb| /passiveVeya /qn| /quiet) "aşağı" giderseniz <msi_property_logfile>bazı özellikleriniz eksik olabilir.


1
Bu yöntemin sorunu: aslında yükleyiciyi çalıştırmanız gerekir. Standart olmayan bir hedef dizine yükleseniz bile, kayıtları hala berbat ettiniz.
Wang

0

Şu an yaptığım yol Carbon Powershell modülünü kullanmak. Modül türünü kurmak için:

Install-Module -Name 'Carbon' -AllowClobber

Sonra basitçe

msi your_msi_path.msi

Misal:

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

Örneğiniz herhangi bir özellik göstermiyor !?
Kissaki

-1

Şimdi muhtemelen bunu yapmanın en iyi yolunun powershell kullanmak olduğunu düşünüyorum. İşte işi gerçekten iyi yapan bir komut dosyası: https://gallery.technet.microsoft.com/scriptcenter/Get-MsiDatabaseProperties-09d9c87c


1
Bu cevap sadece değişebilen / yok olan bir bağlantıdır.
David Makogon

Sadece bir bağlantı olan başka cevaplar da var. Diğer insanların kodlarını kopyalamak ve yapıştırmak konusunda kendimi rahat hissetmiyorum. Sanırım cevabım alternatif bir seçenek sunuyor ve aşağı oyu gerçekten anlamıyorum.
gigi

Bkz serverfault.com/help/how-to-answer Özellikle bölüm linkleri için bağlam sunun
kissaki
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.