Gibt es ein Tool oder einen Mechanismus zum Abrufen der verfügbaren öffentlichen Eigenschaften aus einer Windows MSI-Datei?
Einige Anbieter, die MSI-Dateien bereitstellen, dokumentieren diese nicht selbst. Daher bin ich gespannt, ob es eine Möglichkeit gibt, diese ohne den Quellcode bereitzustellen.
Property
Tabelle durchsuchen / bearbeiten . Hatten Sie einen bestimmten Workflow oder Anwendungsfall außerhalb des MSI?Antworten:
Lessmsi bietet eine Befehlszeile sowie eine interaktive Anwendung zum Abrufen von Attributen aus der MSI-Datei.
Öffnen Sie interaktiv die MSI-Datei und wechseln Sie in die Tabellenansicht. Wählen Sie "Eigenschaft" aus, oder geben Sie dies ein. Obwohl dies die Eigenschaftsnamen angibt, gibt es nicht die gültigen Werte für diese Eigenschaft an. (Oder ich habe nicht den richtigen Ort gefunden, um danach zu suchen.)
Befehlszeile zum Auflisten von Eigenschaften Tabelle zur Konsole (frustrierend, kann nicht mit einfacher
> output.csv
Umleitung erfasst werden )quelle
Da in MSI-Dateien öffentliche Eigenschaften in einer internen Datenbank gespeichert sind, können Sie diese nur mit VBScript und SQL abfragen.
Hier ist ein Beispielskript , das alle in der MSI-Datei gespeicherten Eigenschaften zurückgibt. Es ist üblich, Großbuchstaben zu verwenden, um öffentliche Eigenschaften zu definieren, so dass sie normalerweise identifizierbar sind.
quelle
lessmsi ist ein großartiges Tool, das hier sicherlich funktioniert, wenn Sie bereit sind, die grafische Benutzeroberfläche zu öffnen und einige manuelle Untersuchungen durchzuführen . Ich werde jedoch sagen, dass der folgende Befehl nicht alle Eigenschaften zuverlässig darstellt:
Eine Möglichkeit, um (besser) zu gewährleisten, dass Sie alle möglichen Eigenschaften erhalten, besteht darin, eine Installation, Reparatur oder Deinstallation mit der MSI-Datei durchzuführen und den Prozess zu protokollieren. Der folgende Befehl zeichnet nur die Eigenschaften und nichts anderes auf:
Der obige Befehl entspricht:
Meine bevorzugte Methode ist jedoch, nicht wirklich zu installieren / entfernen / reparieren (und stattdessen einfach zu extrahieren). Die Vorteile dieser Methode gegenüber lessmsi bestehen darin, dass kein Dienstprogramm eines Drittanbieters (z. B. lessmsi ) erforderlich ist und Sie sich nicht mit Installationen herumärgern müssen . Vorausgesetzt, Sie haben genügend Speicherplatz, um das Programm tatsächlich zu installieren, können Sie Folgendes tun:
Beachten Sie, dass die
<absolute_path_to_extract_to>
Option auf ein nicht vorhandenes Verzeichnis verweisen kann (der Befehl erstellt die erforderlichen Verzeichnisse oder schlägt fehl).Wenn Sie die Installationsbenutzeroberfläche aus irgendeinem Grund hassen, können Sie die
/qr
Option anhängen , die die Benutzeroberfläche "verkleinert" und möglicherweise beseitigt, ohne den Eigenschaftsprotokollierungsprozess zu beeinträchtigen. Seien Sie jedoch gewarnt - wenn Sie "niedriger" als die reduzierte Benutzeroberfläche (/qb
|/passive
oder/qn
|/quiet
) gehen,<msi_property_logfile>
fehlen möglicherweise einige Eigenschaften.quelle
Die Art, wie ich es jetzt mache, ist die Verwendung des Carbon Powershell-Moduls. So installieren Sie den Modultyp:
Dann einfach
Beispiel:
quelle
Ich denke, dass der wahrscheinlich beste Weg, dies zu tun, die Verwendung von Powershell ist. Hier ist ein Skript, das den Job wirklich gut macht: https://gallery.technet.microsoft.com/scriptcenter/Get-MsiDatabaseProperties-09d9c87c
quelle