New submission from Jason Matthew: Fairly new to MSIs here. Working towards extracting the same information which is available via Orca graphical interfaces.
I believe I've hit a bug within _msi.View class, namely the inability to safely determine the number of records in my result. Examples I've found depicting how to obtain query results lead me to believe _msi.View.Fetch() will return None if no more rows exist. My development using python 2.7.11, Windows 7 enterprise and 2.7.13, Windows Server 2016, has shown Fetch() will raise a msilib.MSIError when no more rows are available. MSIError is commonly used within msilib which means explicit error handling (or leniency in this case) may incorrectly suppress other error scenarios. Entering a bug with the hope either a patch addresses this issue or documentation can be updated to reflect proper usage. Example provided below. >>> import msilib >>> db = msilib.OpenDatabase("msi-1.0.0.8.msi", msilib.MSIDBOPEN_READONLY) >>> v = db.OpenView("select * from Property") >>> v.Execute(None) >>> while 1: ... r = v.Fetch() ... if not r:break ... print r.GetString(1) ... UpgradeCode WixSharp_UI_INSTALLDIR WixSharp_InstallDialogs WIXUI_INSTALLDIR Manufacturer ProductCode ProductLanguage ProductName ProductVersion SecureCustomProperties Traceback (most recent call last): File "<stdin>", line 2, in <module> _msi.MSIError: unknown error 103 ---------- components: Library (Lib) messages: 286204 nosy: Jason Matthew priority: normal severity: normal status: open title: msilib Fetch raises MSIError rather than return None type: behavior versions: Python 2.7 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue29364> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com