#python #winapi
Вопрос:
Мне было интересно, есть ли простой способ получить полную версию файла exe на python (например, если вы щелкните правой кнопкой мыши на свойствах файла и перейдете к деталям, вы найдете что-то вроде версии файла 1.1.1.0).
Я нашел что-то близкое , используя win32api.GetFileVersionInfo
, однако, при перечислении свойств файла под FileVersionLS
ним, похоже, указана только одна цифра, крайняя правая цифра версии файла (поэтому в приведенном выше примере он дал 0 в 1.1.1.0), когда мне нужен был полный номер версии.
Надеюсь, это имеет смысл, пожалуйста, дайте мне знать, если мне нужно что-то уточнить.
Спасибо за чтение!
Ответ №1:
FileVersionLS
и FileVersionMS
действуйте вместе, чтобы представить полный номер версии в виде 64-разрядного целого числа:
dwFileVersionMS
Тип: DWORD
Наиболее значимые 32 бита двоичного номера версии файла. Этот элемент используется в dwFileVersionLS для формирования 64-разрядного значения, используемого для числовых сравнений.
dwFileVersionLS
Тип: DWORD
Наименее значимые 32 бита двоичного номера версии файла. Этот элемент используется с dwFileVersionMS для формирования 64-разрядного значения, используемого для числовых сравнений.
Каждый из них битно упакован двумя 16-битными числами, поэтому вам нужно немного изменить отдельные числа. Вы можете использовать win32api.LOWORD()
и win32api.HIWORD()
для этого, например:
def get_file_version(self, path):
info = win32api.GetFileVersionInfo(path, '\')
ms = info['FileVersionMS']
ls = info['FileVersionLS']
return (win32api.HIWORD(ms), win32api.LOWORD(ms),
win32api.HIWORD(ls), win32api.LOWORD(ls))