Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-06-2015
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Red face Windows 8.1, Delphi XE2: ¿Cómo puedo saber la versión de mi ejecutable?

Buen día/tarde/noche (según aplique), compañeros del Club.

Tengo un EXE compilado en Delphi XE2, y deseo extraer la versión del mismo, de preferencia sin utilizar componentes o productos de terceros...

Y como siempre, agradeciendo de antemano.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #2  
Antiguo 11-06-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Si tu app usa el campo versión en tu ejecutable, puedes averiguar la versión de esta forma (Conocer la versión de un programa):

Código Delphi [-]
uses
  Windows, ...;

type
TVersion = record
  major: DWORD;
  minor: DWORD;
  release: DWORD;
  build: DWORD;
end;

implementation

function GetVersion(FileName: String; var Version: TVersion): boolean;
var
  dwHandle: DWORD;
  verInfo: PVSFIXEDFILEINFO;
  Data: Pointer;
  verSize, dataSize: DWORD;
begin
  Result:= false;
  ZeroMemory(@Version, sizeof(TVersion));
  dwHandle:= 0;
  dataSize:= GetFileVersionInfoSize(PCHAR(FileName), dwHandle);
  GetMem(Data, dataSize);
  if GetFileVersionInfo(PCHAR(FileName), dwHandle, dataSize, Data) then
  begin
    if VerQueryValue(Data, '\', Pointer(verInfo), verSize) then
    begin
      if verSize > 0 then
      begin
        if verInfo.dwSignature = $FEEF04BD then
        begin
          Version.major:= verInfo.dwFileVersionMS shr 16;
          Version.minor:= verInfo.dwFileVersionMS and $FFFF;
          Version.release:= verInfo.dwFileVersionLS shr 16;
          Version.build:= verInfo.dwFileVersionLS and $FFFF;
          Result:= true;
        end;
      end;
    end;
  end;
  FreeMem(Data);
end;

function GetVersionString(FileName: String): String;
var
  Version: TVersion;
begin
  GetVersion(FileName, Version);
  Result:= Format('%d.%d.%d.%d', [Version.major, Version.minor, Version.release, Version.build]);
end;

Saludos.
Responder Con Cita
  #3  
Antiguo 11-06-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola TiammatMX.

Otra variante: Saber la versión de un ejecutable

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 11-06-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
TiammatMX,

Cita:
Empezado por TiammatMX
...Tengo un EXE compilado en Delphi XE2, y deseo extraer la versión del mismo, de preferencia sin utilizar componentes o productos de tercero...


Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetFileVersion(const FileName: String) : String;
var
   InfoSize, Handle : LongWord;
   Buffer : Array of Byte;
   FileInfo : PVSFixedFileInfo;

begin
   try
      InfoSize := GetFileVersionInfoSize(PChar(FileName), Handle);
      SetLength(Buffer, InfoSize);
      GetFileVersionInfo(PChar(FileName), Handle, InfoSize, Buffer);
      VerQueryValue(Buffer, '\', Pointer(FileInfo), InfoSize);

      Result := Format('%d.%d.%d.%d', [LongRec(FileInfo.dwFileVersionMS).Hi,
                                       LongRec(FileInfo.dwFileVersionMS).Lo,
                                       LongRec(FileInfo.dwFileVersionLS).Hi,
                                       LongRec(FileInfo.dwFileVersionLS).Lo]);
   except
      Result := '0.0.0.0';
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   FileName : String;
   MsgUsr, MsgApp : String;

begin

   FileName := 'C:\Program Files\Borland\Delphi7\Bin\delphi32.exe';
   MsgApp := 'GetFileVersion';
   MsgUsr := Format('%s v%s',[ExtractFileName(FileName),GetFileVersion(FileName)]);
   MessageBox(Handle, PChar(MsgUsr), PChar(MsgApp), MB_OK + MB_ICONINFORMATION);

end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Permite obtener la versión de un archivo ejecutable (Major version, Minor version, Release, Build), como se muestra en la siguiente imagen:



Espero sea útil

Nelson.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Saber la versión de un ejecutable MAXIUM API de Windows 2 23-08-2014 04:04:59
Como saber version de windows (32 o 64 bits) ?? jandok238 Varios 2 19-01-2009 17:17:22
funcion para saber la version de windows mismail API de Windows 1 11-02-2007 12:58:41
Como obtener de la información de versión del ejecutable Alcolea Varios 1 23-11-2006 23:50:32
como puedo hacer para cambiar un archivo de excel con versión 2.1 a versión 8.0 RONPABLO Servers 4 23-01-2006 06:02:38


La franja horaria es GMT +2. Ahora son las 06:54:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi