Sinnvolle Tabellen fuer die Voranalyse
Property, Feature, FeatureComponents, CustomAction, LaunchCondition, Upgrade und Shortcut sind fuer Paketierer besonders aufschlussreich.
MSI Praxisartikel
Das COM-Objekt hilft nicht nur bei Properties. Du kannst auch Tabellen lesen, Features auswerten, Launch Conditions pruefen und so vor der Paketierung viele Risiken frueh erkennen.
Property, Feature, FeatureComponents, CustomAction, LaunchCondition, Upgrade und Shortcut sind fuer Paketierer besonders aufschlussreich.
Upgrade-Faehigkeit, Vorbedingungen, benutzerspezifische Installationsanteile, Custom-Action-Risiken und moegliche Detection-Artefakte.
function Get-MsiTable {
param(
[string]$Path,
[string]$Table
)
$installer = New-Object -ComObject WindowsInstaller.Installer
$database = $installer.GetType().InvokeMember('OpenDatabase','InvokeMethod',$null,$installer,@($Path,0))
$view = $database.GetType().InvokeMember('OpenView','InvokeMethod',$null,$database,("SELECT * FROM `$Table`"))
$view.GetType().InvokeMember('Execute','InvokeMethod',$null,$view,$null) | Out-Null
while ($record = $view.GetType().InvokeMember('Fetch','InvokeMethod',$null,$view,$null)) {
$values = for ($i = 1; $i -le $record.FieldCount; $i++) { $record.StringData($i) }
[PSCustomObject]@{ Table = $Table; Values = ($values -join ' | ') }
}
}
Get-MsiTable -Path 'C:\Temp\App.msi' -Table 'LaunchCondition'
Get-MsiTable -Path 'C:\Temp\App.msi' -Table 'CustomAction'