MSI SDK : Таблица _Tables является системной таблицей только для чтения, в которой перечислены все таблицы в базе данных. Запросите эту таблицу, чтобы узнать, существует ли таблица.
Адаптация сценария WiExport.vbs
из примеров сценариев установщика Windows из WindowsУстановщик SDK получает примерно следующее:
MSI SDK VBScripts : для поиска WiExport.vbs
: с установленной Visual Studio смотрите: %ProgramFiles(x86)%\Windows Kits\10\bin\10.0.17763.0\x86
(откорректируйте номера версий для текущей установки) (или просто найдите его на github.com).
Пример снимка экрана : Ниже приведен пример запуска сценария:
Образец : Процедура для сценария:
1)
сохранить как ListMSITables.vbs
на рабочем столе (ссылка на github.com) 2)
перетащите файл MSI на VBScript 3)
в окне сообщения будет показано количество таблиц и имена таблиц
Примечание : очень большие файлы MSI могут привести к тому, что окно сообщения окажется переполненным экраном. Просто нажмите любую клавишу, чтобы закрыть (я использую ESC
).
On Error Resume Next
Const msiOpenDatabaseModeReadOnly = 0
Dim installer : Set installer = Nothing
Set installer = Wscript.CreateObject("WindowsInstaller.Installer")
Dim counter : counter = 0
' Verify incoming drag and drop arguments
If WScript.Arguments.Count = 0 Then MsgBox "Drag and drop an MSI file onto the VBScript" End If
filename = Wscript.Arguments(0)
If (Right (LCase(filename),3) <> "msi") Then
WScript.Quit
End If
Dim database : Set database = installer.OpenDatabase(filename, msiOpenDatabaseModeReadOnly)
Dim table, view, record
Set view = database.OpenView("SELECT `Name` FROM _Tables")
view.Execute
Do
Set record = view.Fetch
If record Is Nothing Then Exit Do
table = record.StringData(1)
tables = tables + table + vbNewLine
counter = counter + 1
Loop
MsgBox "Number of tables: " + CStr(counter) + vbNewLine + vbNewLine + tables
Set view = Nothing
Github.com : Выше очевидно, VBScript. Просто грабите github.com , чтобы узнать больше о всех видах языков.