使用vbscript读取MST文件

使用vbscript读取MST文件,vbscript,windows-installer,Vbscript,Windows Installer,我正在尝试编写一个脚本,从一些MSI和MST文件中获取信息,并将其写入文本文件。我实现了读取MSI文件。然而,我得到了以下信息 Msi API Error 80004005: OpenDatabase, DatabasePath, OpenMode 1:2219 2: 3:4: Msi API错误80004005:OpenDatabase、DatabasePath、OpenMode 1:2219 2: 3:4: 我像这样打开文件 Set installer = Wscript.Creat

我正在尝试编写一个脚本,从一些MSI和MST文件中获取信息,并将其写入文本文件。我实现了读取MSI文件。然而,我得到了以下信息

Msi API Error 80004005: OpenDatabase, DatabasePath, OpenMode 1:2219 2: 3:4: Msi API错误80004005:OpenDatabase、DatabasePath、OpenMode 1:2219 2: 3:4: 我像这样打开文件

Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError Dim database : Set database = installer.OpenDatabase(FileName, msiOpenDatabaseModeReadOnly) : CheckError Set installer=Wscript.CreateObject(“WindowsInstaller.installer”):检查错误 Dim数据库:Set database=installer.OpenDatabase(文件名,MSIopenDatabaseModerReadOnly):检查错误 它可以很好地处理MSI文件。我认为MST文件应该以不同的方式读取


如何使用vbscript读取MST文件?

我自己还没有尝试过,但根据MSDN,要查看转换文件(MST),您需要打开MSI数据库,然后使用带有
msiTransformErrorViewTransform
参数的方法。这将为您提供一个临时表,您可以查询该表以获得所需的信息

因此,您的代码应该如下所示:

Const msiOpenDatabaseModeReadOnly    = 0
Const msiTransformErrorViewTransform = 256
Dim installer, database

Set installer = CreateObject("WindowsInstaller.Installer") : CheckError
Set database = installer.OpenDatabase(MSIFileName, msiOpenDatabaseModeReadOnly) : CheckError
database.ApplyTransform MSTFileName, msiTransformErrorViewTransform : CheckError

在做了更多的研究之后,我不得不完全按照你的建议去做。好的方面是,如果不提交MST文件应用的更改,MSI文件在磁盘中保持不变。