Message286204
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 |
|
Date |
User |
Action |
Args |
2017-01-24 18:54:25 | Jason Matthew | set | recipients:
+ Jason Matthew |
2017-01-24 18:54:25 | Jason Matthew | set | messageid: <1485284065.77.0.143549147327.issue29364@psf.upfronthosting.co.za> |
2017-01-24 18:54:25 | Jason Matthew | link | issue29364 messages |
2017-01-24 18:54:25 | Jason Matthew | create | |
|