2017-05-18 60 views
0

我需要閱讀msi文件並對其進行一些查詢。但它看起來像儘管它是python的標準庫,但它的性能差documentation。 爲了查詢我必須知道數據庫模式,我找不到任何示例或方法從文件中獲取它。使用python msilib閱讀msi

這裏是我的代碼,我試圖讓工作:

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變量是無。但是我可以使用InstEd工具打開MSI文件,並且看到文件存在於表格列表中,並且那裏有很多記錄。 我做錯了什麼?

回答

0

您的代碼是可疑的,因爲最後一行會在您的示例中引發NameError。所以讓我們忽略這條線。

真正的問題是view.Execute沒有任何用處。在引擎蓋下,MsiViewExecute函數只返回成功或失敗。在您致電之後,您需要致電view.Fetch,這可能是您最後一行打算執行的操作。