~bzr-pqm/bzr/bzr.dev

1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
1
#!/usr/bin/python
2
3
"""Get file version.
4
Written by Alexander Belchenko, 2006
5
"""
6
7
import os
8
9
import pywintypes   # from pywin32 (http://pywin32.sf.net)
10
import win32api     # from pywin32 (http://pywin32.sf.net)
11
12
13
__all__ = ['get_file_version', 'FileNotFound', 'VersionNotAvailable']
14
__docformat__ = "restructuredtext"
15
16
17
class FileNotFound(Exception):
18
    pass
19
20
class VersionNotAvailable(Exception):
21
    pass
22
23
24
def get_file_version(filename):
25
    """Get file version (windows properties)
26
    :param  filename:   path to file
27
    :return:            4-tuple with 4 version numbers
28
    """
29
    if not os.path.isfile(filename):
30
        raise FileNotFound
31
32
    try:
33
        version_info = win32api.GetFileVersionInfo(filename, '\\')
34
    except pywintypes.error:
35
        raise VersionNotAvailable
36
37
    return (divmod(version_info['FileVersionMS'], 65536) +
38
            divmod(version_info['FileVersionLS'], 65536))