Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python msilib读取msi_Python_Windows Installer - Fatal编程技术网

使用python msilib读取msi

使用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

我需要读取msi文件并对其进行一些查询。但看起来,尽管它是python的标准库,但它的性能很差。 要进行查询,我必须了解数据库模式,但我找不到任何示例或方法从文件中获取它

以下是我的代码,我正在努力使其生效:

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,这可能是您最后一行的目的