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)) |