那个前辈知道,用opendialog打开一个delphi编译好的exe文件。怎么获得它的版本号。(100)

  • 主题发起人 主题发起人 chenzhihui
  • 开始时间 开始时间
C

chenzhihui

Unregistered / Unconfirmed
GUEST, unregistred user!
具体细节是这样的。我已经写好了一个程序。这个程序会上传一个delphi编译好的exe文件到数据库。create table abm_program_version (version_id NUMBER(9), // version varchar(7), //程序版本 program_file blob, //保存文件 state VARCHAR2(3), //状态 staff_code NUMBER(9) //上传员工 ) 其中program_file blob保存上传的程序文件。现在的问题是,在客户端运行exe文件的时候。我想取到这个文件的版本号。然后和数据库里版本号做个比较。如果小于这个版本号,就把数据库文件取到,覆盖客户端的exe文件。难于解决的问题是怎么取到这个exe的版本号。这个版本号是exe工程中project/option/version info中的版本号,那位前辈知道。有没有源代码。送100分。。
 
给你一个例子吧 var VerInfoSize,VerValueSize,Dummy:Dword; VerInfo:Pointer; VerValue:PVSFixedFileInfo; sVer:String;V1,V2,V3,V4:word; begin VerInfoSize:=GetFileVersionInfoSize(Pchar(ParamStr(0)),Dummy); GetMem(VerInfo,VerInfoSize); GetFileVersionInfo(PChar(ParamStr(0)),0,VerInfoSize,VerInfo); VerQueryValue(VerInfo,'/',Pointer(VerValue),VerValueSize); With VerValue^ do begin V1:=dwFileVersionMS shr 16; V2:=dwFileVersionMS and $FFFF; V3:=dwFileVersionLS shr 16; V4:=dwFileVersionLS and $FFFF; end; FreeMem(VerInfo,VerInfoSize); sVer:=IntToStr(V1) + '.' + IntToStr(V2)+ IntToStr(V3)+ IntToStr(V4); Form1.Caption:=Form1.Caption + ' - Ver:' + sVer; end;
 
这个GetFileVersionInfoSize,怎么使用呢。要不要用openDailog打开exe文件呢?大鸟
 
需要搞的那么复杂吗? 用Windows自带的Xcopy命令不就什么问题都解决了?
 
有道理,使一下
 
我现在的自动升级就是通过Xcopy命令实现的. 你Dos界面看看Xcopy各个参数的意思就行了
 
太好了。问题解决了。。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部