Ich muss einige Informationen aus einem MSI mit einem angewandten MST lesen. Ich weiß, wie man die Tabellen von einem reinen MSI liest, aber nicht weiß, wie man eine MST anwendet.Powershell Get MST Info
habe ich dies für MSI:
Process {
try {
# Read property from MSI database
$WindowsInstaller = New-Object -ComObject WindowsInstaller.Installer
$MSIDatabase = $WindowsInstaller.GetType().InvokeMember("OpenDatabase", "InvokeMethod", $null, $WindowsInstaller, @($Path.FullName, 0))
$Query = "SELECT Value FROM Property WHERE Property = '$($Property)'"
# $Query = "SELECT Action FROM CustomAction WHERE Action = '$($CustomAction)'"
$View = $MSIDatabase.GetType().InvokeMember("OpenView", "InvokeMethod", $null, $MSIDatabase, ($Query))
$View.GetType().InvokeMember("Execute", "InvokeMethod", $null, $View, $null) | out-null
$Record = $View.GetType().InvokeMember("Fetch", "InvokeMethod", $null, $View, $null)
try {
$Value = $Record.GetType().InvokeMember("StringData", "GetProperty", $null, $Record, 1)
# Commit database and close view
$MSIDatabase.GetType().InvokeMember("Commit", "InvokeMethod", $null, $MSIDatabase, $null) | out-null
$View.GetType().InvokeMember("Close", "InvokeMethod", $null, $View, $null) | Out-Null
$MSIDatabase = $null
$View = $null
} catch {
$Value = "-"
}
# Return the value
return $Value
Wenn mir jemand es wirklich schön sein kann helfen würde!
Danke, Moritz :)