sábado, 17 de mayo de 2008

Saber la versión de un archivo exe y otras cuestiones

Estaba haciendo un pequeño ejemplito de un progrmaa actualizador en red local cuando de pronto ¿como puedo saber la versión de exe cualquiera?. Como tantas veces, el Framework me proporciona una serie de clases que siempre vienen bien; esta vez, la solcuión es FileVersionInfo. Con unas sencillas propiedades, podemos conocer la información de un fichero (no solo un exe, sino también un dll por ejemplo) que obtenemos al hacer click con el botón derecho del ratón y seleccionar propiedades:

FileDescription - Recupera la descripción del archivo especificado.
FileVersion - Recupera el número de versión del archivo especificado.
InternalName - Recupera el nombre interno del archivo especificado. (No todos los archivos tienen un nombre interno asociado.)
OriginalFilename - Recupera el nombre original del archivo especificado cuando se creó por primera vez.
ProductName - Recupera el nombre de producto del archivo especificado. Éste es el nombre del producto con el que se distribuye el archivo.
ProductVersion - Recupera la versión del producto del archivo especificado.
Language - Recupera el identificador de idioma de Microsoft (como una cadena) del recurso de versión correspondiente al archivo especificado.
Comments - Comentarios del fichero
FileMajorPart - Recupera el número major de la versión
FileMinorPart - Recupera el número minor de la versión
FileBuildPart - Recupera el número build de la versión

Y como siempre en estos casos, lo mejor es tener un pequeño ejemplo para probarlo:

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim cadena As String
Dim FileProperties As FileVersionInfo = FileVersionInfo.GetVersionInfo("c:\windows\notepad.exe")

cadena = "FileDescription: " & FileProperties.FileDescription & ControlChars.CrLf
cadena = cadena & "FileVersion: " & FileProperties.FileVersion & ControlChars.CrLf
cadena = cadena & "InternalName: " & FileProperties.InternalName & ControlChars.CrLf
cadena = cadena & "OriginalFilename: " & FileProperties.OriginalFilename & ControlChars.CrLf
cadena = cadena & "ProductName: " & FileProperties.ProductName & ControlChars.CrLf
cadena = cadena & "ProductVersion: " & FileProperties.ProductVersion & ControlChars.CrLf
cadena = cadena & "Language: " & FileProperties.Language & ControlChars.CrLf
cadena = cadena & "Comments: " & FileProperties.Comments & ControlChars.CrLf
cadena = cadena & "FileMajorPart: " & FileProperties.FileMajorPart & ControlChars.CrLf
cadena = cadena & "FileMinorPart: " & FileProperties.FileMinorPart & ControlChars.CrLf
cadena = cadena & "FileBuildPart: " & FileProperties.FileBuildPart & ControlChars.CrLf

MessageBox.Show(cadena)

End Sub
End Class

1 comentario:

Son Rachas dijo...

Me interesaria saber si esto se puede hacer con visual basic 6. Trare de adapta el codigo pero no pude.

Desde ya muchas gracias