Você provavelmente precisará instalar um visualizador de arquivos PE de terceiros, como o link
No Windows, há uma página de informações de versão em uma janela de propriedades do arquivo executável / de biblioteca. Como ver essa informação no Ubuntu?
Do script gnome-exe-thumbnailer
, sugerido por Scott Ritchie:
wrestool --extract --raw --type=version inputfile.exe
extrai as informações da versão, imprimindo alguns dados binários misturados com texto UTF-16. O script converte-o em texto legível, passando-o por:
tr 'wrestool --extract --raw --type=version inputfile.exe
, ' '\t.tr '%pre%, ' '\t.%pre%' \
| sed 's/\t\t/_/g' \
| tr -c -d '[:print:]' \
| sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*//p'
' \
| sed 's/\t\t/_/g' \
| tr -c -d '[:print:]' \
| sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*//p'
O comando geral é wrestool --extract --raw --type=version inputfile.exe | tr '%code%, ' '\t.%code%' | sed 's/\t\t/_/g' | tr -c -d '[:print:]' | sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*//p'
.
Como uma alternativa ao uso de tr e sed para analisar a saída da solução @ mechanical-snail, aqui está um strings do GNU e a versão GNU grep :
$ wrestool --extract --raw --type=version putty.exe | strings -el | grep Version -A 1
FileVersion
Release 0.65
ProductVersion
Release 0.65
ATUALIZAÇÃO:
Outra alternativa é uma versão recente do exiftool por Phil Harvey (é baseado em perl, fácil de instalar no Linux se sua distro não tiver, também disponível para Mac e Windows). Tem muitas opções de formatação.
# Example with exiftool 10.47
$ exiftool -FileVersion -ProductVersion putty.exe
File Version : Release 0.67
Product Version : Release 0.67
Se você instalar o pacote gnome-exe-thumbnailer
, basta olhar o número da versão em nautilus
.
O código para fazer isso manualmente está disponível em /usr/bin/gnome-exe-thumbnailer.sh
Eu acabei de descobrir como criar um bom python dict com a informação (eu estava olhando ao meu redor e acabei aqui por algum motivo) e gostaria de apresentar meu método aqui:
'''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)
Estou licenciando-o sob a Licença MIT ... pode qualquer um que sinta a necessidade de criar scripts úteis ou outras coisas com ele ...
E veja Github Gists - spookyahell / peinfo.py para um exemplo de implementação desse método em outro script ...
Tags wine