我需要读取一个msi文件并对其进行一些查询。但看起来尽管它是python的标准库,但它的documentation很差。 要进行查询,我必须知道数据库模式,而且我找不到任何从文件中获取它的示例或方法。在
这是我的代码,我正在努力工作:
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文件,看到这个文件出现在表列表中,那里有很多记录。
我做错什么了?在
您的代码是可疑的,因为最后一行将在示例中抛出NameError。所以我们忽略这条线。在
真正的问题是
view.Execute
没有返回任何有用的信息。实际上,MsiViewExecute函数只返回成功或失败。调用后,您需要调用view.Fetch
,这可能是您最后一行要做的事情。在相关问题 更多 >
编程相关推荐