Existe-t-il un outil ou un mécanisme pour récupérer les propriétés publiques disponibles à partir d'un fichier MSI Windows?
Certains fournisseurs qui fournissent des fichiers MSI ne les documentent pas eux-mêmes, je suis donc curieux de voir s'il existe un moyen de les exposer sans le code source.
Property
table. Avez-vous eu un flux de travail ou un cas d'utilisation spécifique en dehors de simplement fouiner dans le MSI?Réponses:
Lessmsi fournit une ligne de commande ainsi qu'une application interactive pour récupérer tout attribut du .msi.
De manière interactive, ouvrez le .msi puis allez en mode Table et sélectionnez ou tapez "Propriété". Cependant, bien que cela donne les noms de propriété, il ne donne pas les valeurs valides pour cette propriété (ou je n'ai pas découvert le bon endroit pour chercher).
Ligne de commande pour répertorier le tableau des propriétés à consoler (frustrant, ne peut pas être capturé avec une simple
> output.csv
redirection)la source
Étant donné que le fichier MSI stocke les propriétés publiques dans une base de données interne, vous pouvez simplement les interroger à l'aide de VBScript et SQL.
Voici un exemple de script qui renverra toutes les propriétés stockées dans le fichier MSI. Il est courant d'utiliser des majuscules pour définir les propriétés publiques, c'est ainsi qu'elles sont généralement identifiables.
la source
lessmsi est un excellent outil qui fonctionne certainement ici si vous êtes prêt à ouvrir son interface graphique et à effectuer une enquête manuelle. Cependant, je dirai que la commande suivante ne présente pas de manière fiable toutes les propriétés:
Une façon de (mieux) garantir que vous obtenez toutes les propriétés possibles consiste à effectuer une installation, une réparation ou une désinstallation avec le fichier MSI et à enregistrer le processus. La commande suivante enregistre uniquement les propriétés et rien d'autre:
La commande ci-dessus est équivalente à:
Ma méthode préférée, cependant, est de ne pas réellement installer / supprimer / réparer (et simplement d'extraire à la place). Les avantages de cette méthode par rapport à lessmsi est qu'elle ne nécessite pas d'utilitaire tiers (c'est-à-dire lessmsi ) et qu'elle ne vous oblige pas à jouer avec les installations. Étant donné que vous disposez de suffisamment d'espace disque pour installer réellement le programme, vous pouvez effectuer:
Notez que le
<absolute_path_to_extract_to>
peut pointer vers un répertoire inexistant (la commande créera les répertoires nécessaires ou échouera).Si vous détestez l'interface utilisateur d'installation pour une raison quelconque, vous pouvez ajouter l'
/qr
option, ce qui «réduira» et éventuellement éliminera l'interface utilisateur sans nuire au processus de journalisation des propriétés. Soyez averti cependant - si vous allez "plus bas" que l'interface utilisateur réduite (à savoir/qb
| |/passive
ou/qn
|/quiet
),<msi_property_logfile>
il se peut que certaines propriétés vous manquent.la source
La façon dont je le fais maintenant est d'utiliser le module Carbon Powershell. Pour installer le type de module:
Alors simplement
Exemple:
la source
Je pense que maintenant la meilleure façon de le faire est d'utiliser PowerShell. Voici un script qui fait très bien le travail: https://gallery.technet.microsoft.com/scriptcenter/Get-MsiDatabaseProperties-09d9c87c
la source