使用python msilib读取msi

2024-05-16 13:02:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要读取一个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文件,看到这个文件出现在表列表中,那里有很多记录。 我做错什么了?在


Tags: 文件path方法代码noneview数据库示例
1条回答
网友
1楼 · 发布于 2024-05-16 13:02:47

您的代码是可疑的,因为最后一行将在示例中抛出NameError。所以我们忽略这条线。在

真正的问题是view.Execute没有返回任何有用的信息。实际上,MsiViewExecute函数只返回成功或失败。调用后,您需要调用view.Fetch,这可能是您最后一行要做的事情。在

相关问题 更多 >