Czy istnieje narzędzie lub mechanizm do pobierania dostępnych właściwości publicznych z pliku MSI systemu Windows?
Niektórzy dostawcy, którzy dostarczają pliki MSI, nie dokumentują ich sami, więc jestem ciekawy, czy istnieje sposób na ujawnienie ich bez kodu źródłowego.
Property
tabelę. Czy miałeś specyficzny przepływ pracy lub przypadek użycia poza zwykłym gadaniem w MSI?Odpowiedzi:
Lessmsi udostępnia wiersz poleceń oraz interaktywną aplikację do pobierania dowolnego atrybutu z .msi.
Interaktywnie otwórz .msi, a następnie przejdź do widoku tabeli i wybierz lub wpisz „Właściwość”. Jednak chociaż daje to nazwy właściwości, nie podaje prawidłowych wartości dla tej właściwości (lub nie znalazłem odpowiedniego miejsca do wyszukiwania).
Wiersz polecenia do listy Tabela właściwości do konsoli (frustrujące, nie można przechwycić za pomocą prostego
> output.csv
przekierowania)źródło
Biorąc pod uwagę, że właściwości publiczne przechowujące pliki MSI w wewnętrznej bazie danych, możesz po prostu zapytać o nie przy użyciu VBScript i SQL.
Oto przykładowy skrypt , który zwróci wszystkie właściwości przechowywane w pliku MSI. Konwencjonalną metodą jest używanie wielkich liter do definiowania nieruchomości publicznych, aby w ten sposób można je zwykle zidentyfikować.
źródło
lessmsi to świetne narzędzie, które z pewnością działa tutaj, jeśli chcesz otworzyć GUI i przeprowadzić ręczne dochodzenie. Powiem jednak, że następujące polecenie nie przedstawia niezawodnie wszystkich właściwości:
Jednym ze sposobów (lepszego) zagwarantowania uzyskania wszystkich możliwych właściwości jest przeprowadzenie instalacji, naprawy lub deinstalacji przy użyciu pliku MSI i zarejestrowanie procesu. Następujące polecenie rejestruje tylko właściwości i nic więcej:
Powyższe polecenie jest równoważne z:
Jednak moją preferowaną metodą jest nie instalowanie / usuwanie / naprawa (i po prostu wyodrębnianie). Zaletą tej metody w porównaniu z lessmsi jest to, że nie wymaga ona narzędzia innej firmy (tj. Lessmsi ) i nie wymaga bałaganu przy żadnych instalacjach. Biorąc pod uwagę, że masz wystarczająco dużo miejsca na dysku, aby faktycznie zainstalować program, możesz:
Zauważ, że
<absolute_path_to_extract_to>
może wskazywać na nieistniejący katalog (polecenie utworzy katalogi konieczne lub nie powiedzie się).Jeśli nienawidzisz interfejsu instalacyjnego z jakiegokolwiek powodu, możesz dołączyć
/qr
opcję, która „zmniejszy” i prawdopodobnie wyeliminuje interfejs bez zakłócania procesu rejestrowania właściwości. Ostrzegamy jednak - jeśli przejdziesz „niżej” niż zredukowany interfejs użytkownika (tzn./qb
|/passive
Lub/qn
|/quiet
), możesz<msi_property_logfile>
nie mieć niektórych właściwości.źródło
Teraz robię to przy użyciu modułu Carbon Powershell. Aby zainstalować typ modułu:
Więc po prostu
Przykład:
źródło
Myślę, że teraz prawdopodobnie najlepszym sposobem na to jest użycie PowerShell. Oto skrypt, który naprawdę dobrze wykonuje to zadanie: https://gallery.technet.microsoft.com/scriptcenter/Get-MsiDatabaseProperties-09d9c87c
źródło