¿Cómo ver la información de la versión de un archivo PE EXE / DLL?


31

En Windows hay una página de información de versión en una ventana de propiedades del archivo ejecutable / biblioteca. ¿Cómo ver esa información en Ubuntu?


2
¿Quiere decir cómo ver dicha información desde binarios / bibliotecas de Linux o Windows EXE / DLL utilizando una utilidad de Linux?
João Pinto

1
Como he especificado claramente en el título de la pregunta, me refiero a archivos PE (Windows) EXE y DLL (para ver usando una utilidad de Linux, por supuesto).
Ivan

Respuestas:


-1

Probablemente necesite instalar un visor de archivos PE de terceros, como http://www.ucware.com/apev/index.htm


¿No hay una herramienta nativa de Linux para esto?
Ivan


77
$ 25 para un visor de información de archivos? ¿Seriamente?
Caracol mecánico el

55
Nota para los visitantes después del 5 de abril de 2013: este software parece haber sido descontinuado y ya no está disponible para el desarrollador.
Moshe Katz

29

Estoy trabajando en una herramienta llamada pev para recuperar información sobre archivos PE en la línea de comando.

La versión del archivo se puede obtener con la -popción:

pev -p program.exe

pev está disponible en Ubuntu en el pevpaquete .


3
@ Ivan, podrías considerar aceptar esta respuesta.
Russell Silva

Estas instrucciones están desactualizadas . Es posible que desee considerar actualizarlos.
Ploni

11

Del gnome-exe-thumbnailerguión, sugerido por Scott Ritchie:

wrestool --extract --raw --type=version inputfile.exe

extrae la información de la versión, imprimiendo algunos datos binarios mezclados con texto UTF-16. El script lo convierte en texto legible al pasarlo por:

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'

El comando general es entonces 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'.


+1 wrestooles proporcionado por el icoutilpaquete que está disponible como paquete estándar de Debian desde hace mucho tiempo.
tripleee

puede simplificarlo con solo | hexdump -C
pasarlo

En Ubuntu 18.04 está dentro del icoutilspaquete.
Bjorn Reppen

6

Como alternativa al uso de tr y sed para analizar el resultado de la solución de @ mechanical-snail, aquí hay una cadena GNU y una versión GNU grep :

$ wrestool --extract --raw --type=version putty.exe | strings -el | grep Version -A 1

FileVersion
Release 0.65
ProductVersion
Release 0.65

ACTUALIZAR:

Otra alternativa es una versión reciente de exiftool de Phil Harvey (se basa en perl, fácil de instalar en Linux si su distribución no lo tiene, también disponible para Mac y Windows). Tiene muchas opciones de formato.

# Example with exiftool 10.47
$ exiftool -FileVersion -ProductVersion putty.exe

File Version                    : Release 0.67
Product Version                 : Release 0.67

¿Qué paquete en Ubuntu / Debian tiene exiftool? Parece que libimage-exiftool-perl?
Xen2050

Acabo de descargar el código fuente y construirlo localmente. Descargue el archivo tar.gz del sitio web (el enlace "Descargar versión xx.yy" en la parte superior de owl.phy.queensu.ca/~phil/exiftool ), extraiga los archivos y consulte la sección INSTALACIÓN del archivo README para cómo construirlo usando perl y luego instalarlo en / usr / local / bin
dcg

4

Si instala el gnome-exe-thumbnailerpaquete, simplemente puede mirar el número de versión ennautilus .

El código para hacer esto manualmente está disponible en /usr/bin/gnome-exe-thumbnailer.sh


@ Scott ... Gracias. funciona ... el código relevante es muy simple de usar en otro script ... Supongo que lo que quiere decir con "simplemente puede ver el número de versión en nautilus" , es que el número de versión aparece injertado en el archivo .exe ícono en Nautilus ... una idea interesante ... Personalmente, rara vez uso la vista de ícono, pero el fragmento de código es excelente para mí ...
Peter.O

-1

Me acabo de enterar de cómo crear un buen dict de Python con la información (estaba mirando a mi alrededor y terminé aquí por alguna razón) y me gustaría presentar mi método aquí:
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)

Lo estoy licenciando bajo la Licencia MIT ... que cualquiera que sienta la necesidad de crear scripts útiles u otras cosas con él ...

Y vea Github Gists - spookyahell / peinfo.py para una implementación de ejemplo de este método en otro script ...


Bienvenido a Ask Ubuntu! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Kevin Bowen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.