delphi 高版本下 AutoUpgraderProv5.0.2 等版本自动下载后.uTMP无法自动替换的问题解决
估计很多人没有再用delphi开发程序,最近我在更新一个老程序的时候,把环境迁移到了xe8,顺带把AutoUpgrader升级到了Prov5.0.2。发现自动更新失败。症状就是能下载临时文件,但是不会自动替换主文件,导致一直循环更新。
AutoUpgrader 自动更新是先下载更新文件,并命名为.uTMP保存在软件目录。然后释放Upgrader.exe 到临时文件夹,用这个Upgrader.exe来把.uTMP的临时文件改回正常文件。
在高版本AutoUpgrader里面Upgrader4.exe加上了UAC权限导致更新后,如果主程序是普通用户权限,会造成主程序拉起Upgrader4.exe失败。目前测试处理两个方法:
1、主程序修改为用管理员权限运行。
2、用旧版本的auAutoUpgrader.res 替换AutoUpgraderProv5.2 目录下的同名文件,然后重新编译安装AutoUpgrader。这个res里面就是Upgrader.exe文件,老版本的没有加UAC权限,反而能正常使用。