exe文件自身更新怎么办?
我写了个小程序,并在公司服务器的某个位置放了个一样的然后我想让我的程序一启动先去检测下服务器上的是不是比我运行的新
如果是新的就把自身删除把服务器上的新版本拷过来
以达到自动更新的效果
请问这个怎么办? 给你写个想当然的思路(近来真的越来越没劲,感觉自己懒散了……)
文字规则:启动执行的程序为“主程序”,被用来检查是否更新的程序文件为“更新程序”;
1,在编写时额外写一个替换更新程序为主程序的小程序,这里且称之为“up.exe”;
up.exe原理:a: 获取更新程序到主程序所在目录;
b: 删除主程序;
c: 更名更新程序为主程序。
d: 执行(新的)主程序
2,启动主程序,获取更新程序的MD5校验和自身的MD5校验(这是一个方法,也可以使用其它比较差异的方法),如果相同,结束更新,继续启动;
3,发现不同,调用up.exe 。
[ 本帖最后由 KiwiCsj 于 2008-9-8 18:51 编辑 ] 原帖由 KiwiCsj 于 2008-9-8 18:50 发表 http://www.autoitx.com/images/common/back.gif
给你写个想当然的思路(近来真的越来越没劲,感觉自己懒散了……)
文字规则:启动执行的程序为“主程序”,被用来检查是否更新的程序文件为“更新程序”;
1,在编写时额外写一个替换更新程序为主程序的小程序, ...
谢谢你的思路!我会再考虑一下!
我本来曾经用xcopy写过一个简单的批处理来更新,但按FAQ里删除自身的方法XCOPY因为程序已经运行而无法删除自身
然后我用下面这条语句测试过可以删除并把更新文件拷过来,但怎么判断哪个文件新?我找帮助一时没找到
Run(@ComSpec&' /c ping 127.0.0.1 -n 3&del /q "'&@ScriptFullPath&'"© /y "d:\new\a\a.exe"',@ScriptDir,@SW_HIDE) 根据文件大小、日期或者程序的版本号、CRC32,MD5,SH1等等都可用来判断 我写过一个,比较2个文件的md5,不同则更新,可参考au3自带的升级程序
D:\autoit3\Extras\AutoUpdateIt\AutoUpdateIt.au3 原帖由 sanhen 于 2008-9-8 20:42 发表 http://www.autoitx.com/images/common/back.gif
根据文件大小、日期或者程序的版本号、CRC32,MD5,SH1等等都可用来判断
谢谢您的思路,那比如我是按创建时间来判断的,有没有什么比较文件新旧之类的命令?或简单直接的方法? 原帖由 pcbar 于 2008-9-8 21:14 发表 http://www.autoitx.com/images/common/back.gif
我写过一个,比较2个文件的md5,不同则更新,可参考au3自带的升级程序
D:\autoit3\Extras\AutoUpdateIt\AutoUpdateIt.au3
请问下你写的在哪?能否借鉴一下? 原帖由 pcbar 于 2008-9-8 21:14 发表 http://www.autoitx.com/images/common/back.gif
我写过一个,比较2个文件的md5,不同则更新,可参考au3自带的升级程序
D:\autoit3\Extras\AutoUpdateIt\AutoUpdateIt.au3
哪个版本里有AutoUpdateIt.au3? 原帖由 cjl 于 2008-9-9 13:52 发表 http://www.autoitx.com/images/common/back.gif
哪个版本里有AutoUpdateIt.au3?
我下的是最新的
我按那个目录是找到有这个文件的啊!
[ 本帖最后由 silentdream 于 2008-9-9 15:44 编辑 ]
页:
[1]