使用python msilib读取msi
我需要读取msi文件并对其进行一些查询。但看起来,尽管它是python的标准库,但它的性能很差。 要进行查询,我必须了解数据库模式,但我找不到任何示例或方法从文件中获取它 以下是我的代码,我正在努力使其生效:使用python msilib读取msi,python,windows-installer,Python,Windows Installer,我需要读取msi文件并对其进行一些查询。但看起来,尽管它是python的标准库,但它的性能很差。 要进行查询,我必须了解数据库模式,但我找不到任何示例或方法从文件中获取它 以下是我的代码,我正在努力使其生效: import msilib path = "C:\\Users\\Paul\\Desktop\\my.msi" #I cannot share msi dbobject = msilib.OpenDatabase(path, msilib.MSIDBOPEN_READONLY) view
import msilib
path = "C:\\Users\\Paul\\Desktop\\my.msi" #I cannot share msi
dbobject = msilib.OpenDatabase(path, msilib.MSIDBOPEN_READONLY)
view = dbobject.OpenView("SELECT FileName FROM File")
rec = view.Execute(None)
r = v.Fetch()
并且rec变量是None。但是我可以用InstEd工具打开MSI文件,看到该文件出现在表列表中,那里有很多记录。
我做错了什么?您的代码是可疑的,因为最后一行将在示例中抛出名称错误。所以让我们忽略这条线 真正的问题是view.Execute没有返回任何有用的内容。在引擎盖下,函数只返回成功或失败。在调用它之后,您需要调用view.Fetch,这可能是您最后一行的目的