因此,我正在创建一个将读取 MSI 和 MST 文件的 vbscript。这个想法是,如果将运行该脚本的用户正在测试一个涉及 MST 文件的 MSI,则该脚本应该创建一个该 MST 具有的新属性的“报告”。
我能够从常规 MSI 获取属性,问题是当我试图进入 MST 部分时。在进行研究时,我发现了 _TransformView 表,这应该有助于我获取这些信息,但我想我不确定我是否知道如何处理该表。
Const msiTransformErrorViewTransform = 256
Const msiOpenDB = 2
Dim FS, TS, WI, DB, View, Rec
Set WI = CreateObject("WindowsInstaller.Installer")
Set DB = WI.OpenDatabase(msiPath,msiOpenDB)
DB.ApplyTransform mstPath, msiTransformErrorViewTransform
If Err.number Then
Exit Function
End If
For i = 0 To 24 'Number of properties on the arrPropertyList
Set View = DB.OpenView("Select `Value` From Property WHERE `Property` = " & "'" & arrPropertyList(i) & "'")
View.Execute
Set Rec = View.Fetch
If Not Rec Is Nothing Then
objLog.WriteLine arrPropertyList(i) & " = " & Rec.StringData(1)
End If
Next
该代码将显示我在 arrPropertyList 中添加的 msi 属性。问题是我正在寻找 MST 属性,而我只得到 MSI 属性。我知道在调用 DB.OpenView 时我应该更改查询以访问 _TransformView 表,但不知道如何获取此信息!欢迎您分享任何知识。