静态调用DLL,如何更新版本?(50分)

G

gala007

Unregistered / Unconfirmed
GUEST, unregistred user!
登录程序EXE文件,静态调用主程序为DLL文件
登录判断版本主程序DLL版本是否一样?不一样,需要自动更新,但是登录程序Exe已经静态调用Dll,无法更新版本,如何做?注意:我的程序必须静态调用DLL,这样如何更新版本?用UrlDownloadToFile下载,如果单独测试不引用静态调用Dll的接口函数(不装载),就可以下载更新
 
需要一个判断DLL版本的EXE,先判断版本,如果需要更新,更新版本。
如果不需要更新版本,则运行登录程序EXE文件
 
非常简单,Copy自己的程序到一个temp目录(记得连同dll一起拷贝),然后带个参数启动temp目录下的自己的程序(例如,c:/temp/your.exe -update -"c:/program files/yourexe/")——顺便说一句,程序安装目录也可以写在注册表里面,这样temp下启动自己就只用带一个-update参数即可。然后自己(就是program files下的这个程序)启动temp目录下的程序,并自身退出。temp目录下的程序启动的时候判断update参数,如果有,则自动从网上下载最新的exe和dll,覆盖program files目录下的程序,覆盖完成后,temp目录下程序用shellexecute启动program files下的新版程序,同时自己退出。完成更新了。
 
调用dll时,最好用动态调用,这样可以随时覆盖dll文件,但是你的程序必须静态调用DLL
那么就可以这样:下载dll文件到某一目录或当前目录的不同扩展名,程序下次启动时直接改名使用就成了。
关于判定版本与下载,你可以发送一个head头给WEB上文件,用ICS里的httpchk例子即可轻松搞定,你在取得服务器上的文件的大小与日期后与本地做个比较,相信你很快能搞定了。
good luck!
 
先改一下扩展名进行下在,在下次登陆时就可以进行替换更新了。
 
自己已经解决,自己另外开发一个专门下载Dll的EXe文件。
 
多人接受答案了。
 
顶部