[issue29364] msilib Fetch raises MSIError rather than return None

2017-02-01 Thread Berker Peksag

Changes by Berker Peksag :


--
stage:  -> resolved
superseder:  -> Add support for _msi.Record.GetString() and 
_msi.Record.GetInteger()

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29364] msilib Fetch raises MSIError rather than return None

2017-02-01 Thread Jason Matthew

Jason Matthew added the comment:

Thanks for pointing that one out Berker.  I agree, this is a dup.

--
resolution:  -> duplicate
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29364] msilib Fetch raises MSIError rather than return None

2017-02-01 Thread Berker Peksag

Berker Peksag added the comment:

Thanks for the report, Jason. I think this is a duplicate of issue 1102. The 
second patch (_msi_fetch.patch.txt) there should fix your problem (if I read 
MSDN correctly, 103 is ERROR_NO_MORE_ITEMS.)

I don't have access to a Windows box at the moment so could you please verify 
my theory so we can close this as a duplicate?

--
nosy: +berker.peksag

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29364] msilib Fetch raises MSIError rather than return None

2017-01-24 Thread Jason Matthew

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 "", line 2, in 
_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 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com