将一个正在运行的程序自动升级(100分)

  • 主题发起人 主题发起人 NetAnts
  • 开始时间 开始时间
N

NetAnts

Unregistered / Unconfirmed
GUEST, unregistred user!
1、假如a.exe正在运行,版本是v1.0;<br>2、执行a.exe(v2.0),则自动将正在运行的v1.0删除,替换为v2.0(包括正在运行的程序和磁盘上的文件都替换);<br>3、如果执行的版本是相同的,则无需替换;<br><br>请问以上功能可以实现吗?怎么实现?
 
将 a.exe 无关紧要、基本不动的部分做成 exe,可能更新的部分做成 dll, <br>升级时一检查有旧版本,就把原来的 dll 替换成新版本的。<br>但如果你的 1.0 Dll 已被装入,就不行了。
 
先找1.0的窗口,关闭,再安装不就行了。
 
&nbsp;最好负责升级部分和运行部分开,否则不好玩。
 
怎么判断正在运行的这个程序的版本是1.0还是2.0呢?<br>怎么取得正在运行的和即将运行的版本这两个程序的版本号进行比较呢?
 
可以用GetFileVersionInfo取得版本信息:<br>s := GetFileVersionInfoSize(pchar(Application.Exename), cardinal(dump));<br>GetFileVersionInfo(Pchar(Application.Exename), 0, s, buffer);
 
难道你不知道有个东西叫注册表的吗?,你的应用程序把版本信息写到注册表中,应用程序中也有个版本标识。然后2。0运行的时候去检查一下注册表表中的版本号,如果小的话,你应该知道如何做了吧<br>:先看看旧应用的path,要不谁知道拷贝到那个鬼目录下。然后要判断旧应用是否在运行,如果正在运行,则提示是否终止运行,就把新的应用拷贝到旧应用的目录下,当然最后不要忘记更新注册表中的版本信息。<br>应用和升级程序分开来做是最容易做到的。
 
多人接受答案了。
 
后退
顶部