cmake/Tests/RunCMake/CPack_WIX/print-msi.ps1

30 lines
739 B
PowerShell

# https://learn.microsoft.com/en-us/windows/win32/msi/database-tables
param (
$file
)
function printTable {
param (
$msi,
[string]$name,
[int[]]$columns = (1)
)
try {
$view = $msi.OpenView("select * from " + $name)
$view.Execute()
while ($record = $view.Fetch()) {
Write-Host ($name + ": " + ($columns | ForEach-Object {"'" + $record.StringData($_) + "'"}))
}
} catch {}
}
$installer = New-Object -ComObject WindowsInstaller.Installer
$msi = $installer.OpenDatabase($file, 0)
printTable -msi $msi -name "Component" -columns 1,3
printTable -msi $msi -name "Directory" -columns 1,2,3
printTable -msi $msi -name "File" -columns 1,2,3
printTable -msi $msi -name "Shortcut" -columns 1,2,3,4