В Windows есть страница с информацией о версии в окне свойств исполняемого файла / библиотеки. Как просмотреть эту информацию в Ubuntu?
В Windows есть страница с информацией о версии в окне свойств исполняемого файла / библиотеки. Как просмотреть эту информацию в Ubuntu?
Ответы:
Возможно, вам нужно установить стороннюю программу просмотра PE-файлов, такую как http://www.ucware.com/apev/index.htm
Я работаю в инструменте под названием pev для получения информации о PE-файлах из командной строки.
Версию файла можно получить с помощью -p
опции:
pev -p program.exe
Pev доступен на Ubuntu в pev
комплекте .
Из gnome-exe-thumbnailer
сценария, предложенного Скоттом Ричи:
wrestool --extract --raw --type=version inputfile.exe
извлекает информацию о версии, печатая некоторые двоичные данные, смешанные с текстом UTF-16. Скрипт преобразует его в читаемый текст, пропуская его через:
tr '\0, ' '\t.\0' \
| sed 's/\t\t/_/g' \
| tr -c -d '[:print:]' \
| sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'
Общая команда тогда wrestool --extract --raw --type=version inputfile.exe | tr '\0, ' '\t.\0' | sed 's/\t\t/_/g' | tr -c -d '[:print:]' | sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'
.
wrestool
предоставляется icoutil
пакетом, который доступен как стандартный пакет Debian с тех пор.
| hexdump -C
icoutils
пакета.
В качестве альтернативы использованию tr и sed для анализа выходных данных решения @ mechanical-snail, есть строки GNU и версия GNU grep :
$ wrestool --extract --raw --type=version putty.exe | strings -el | grep Version -A 1
FileVersion
Release 0.65
ProductVersion
Release 0.65
ОБНОВИТЬ:
Другой альтернативой является недавняя версия exiftool от Phil Harvey (она основана на perl, ее легко установить в Linux, если она отсутствует в вашем дистрибутиве, также доступна для Mac и Windows). У этого есть много вариантов форматирования.
# Example with exiftool 10.47
$ exiftool -FileVersion -ProductVersion putty.exe
File Version : Release 0.67
Product Version : Release 0.67
libimage-exiftool-perl
?
Если вы устанавливаете gnome-exe-thumbnailer
пакет, вы можете просто посмотреть на номер версии в nautilus
.
Код для этого вручную доступен в /usr/bin/gnome-exe-thumbnailer.sh
Я только что сам узнал, как создать хороший python dict с информацией (я смотрел вокруг себя и оказался здесь по какой-то причине) и хотел бы представить свой метод здесь:
Github Gists - spookyahell / exe2version_info.py
'''Licensed under the MIT License :)'''
import pefile
import pprint
pe = pefile.PE('example.exe')
string_version_info = {}
for fileinfo in pe.FileInfo[0]:
if fileinfo.Key.decode() == 'StringFileInfo':
for st in fileinfo.StringTable:
for entry in st.entries.items():
string_version_info[entry[0].decode()] = entry[1].decode()
pprint.pprint(string_version_info)
Я лицензирую его по лицензии MIT ... может кто-нибудь, кто чувствует необходимость в создании полезных сценариев или других вещей с ним ...
И посмотрите Github Gists - spookyahell / peinfo.py для примера реализации этого метода в другом скрипте ...