找回密码
 加入
搜索
查看: 3163|回复: 8

exe文件自身更新怎么办?

  [复制链接]
发表于 2008-9-8 16:31:51 | 显示全部楼层 |阅读模式
我写了个小程序,并在公司服务器的某个位置放了个一样的
然后我想让我的程序一启动先去检测下服务器上的是不是比我运行的新
如果是新的就把自身删除把服务器上的新版本拷过来
以达到自动更新的效果

请问这个怎么办?
发表于 2008-9-8 18:50:32 | 显示全部楼层
给你写个想当然的思路(近来真的越来越没劲,感觉自己懒散了……)

文字规则:启动执行的程序为“主程序”,被用来检查是否更新的程序文件为“更新程序”;
1,在编写时额外写一个替换更新程序为主程序的小程序,这里且称之为“up.exe”;
         up.exe原理:a: 获取更新程序到主程序所在目录;
                     b: 删除主程序;
                     c: 更名更新程序为主程序。
                     d: 执行(新的)主程序
2,启动主程序,获取更新程序的MD5校验和自身的MD5校验(这是一个方法,也可以使用其它比较差异的方法),如果相同,结束更新,继续启动;
3,发现不同,调用up.exe 。

[ 本帖最后由 KiwiCsj 于 2008-9-8 18:51 编辑 ]
 楼主| 发表于 2008-9-8 20:41:00 | 显示全部楼层
原帖由 KiwiCsj 于 2008-9-8 18:50 发表
给你写个想当然的思路(近来真的越来越没劲,感觉自己懒散了……)

文字规则:启动执行的程序为“主程序”,被用来检查是否更新的程序文件为“更新程序”;
1,在编写时额外写一个替换更新程序为主程序的小程序, ...


谢谢你的思路!我会再考虑一下!
我本来曾经用xcopy写过一个简单的批处理来更新,但按FAQ里删除自身的方法XCOPY因为程序已经运行而无法删除自身
然后我用下面这条语句测试过可以删除并把更新文件拷过来,但怎么判断哪个文件新?我找帮助一时没找到

Run(@ComSpec&' /c ping 127.0.0.1 -n 3&del /q "'&@ScriptFullPath&'"&copy /y "d:\new\a\a.exe"',@ScriptDir,@SW_HIDE)
发表于 2008-9-8 20:42:43 | 显示全部楼层
根据文件大小、日期或者程序的版本号、CRC32,MD5,SH1等等都可用来判断
发表于 2008-9-8 21:14:18 | 显示全部楼层
我写过一个,比较2个文件的md5,不同则更新,可参考au3自带的升级程序
D:\autoit3\Extras\AutoUpdateIt\AutoUpdateIt.au3
 楼主| 发表于 2008-9-9 13:10:56 | 显示全部楼层
原帖由 sanhen 于 2008-9-8 20:42 发表
根据文件大小、日期或者程序的版本号、CRC32,MD5,SH1等等都可用来判断


谢谢您的思路,那比如我是按创建时间来判断的,有没有什么比较文件新旧之类的命令?或简单直接的方法?
 楼主| 发表于 2008-9-9 13:13:10 | 显示全部楼层
原帖由 pcbar 于 2008-9-8 21:14 发表
我写过一个,比较2个文件的md5,不同则更新,可参考au3自带的升级程序
D:\autoit3\Extras\AutoUpdateIt\AutoUpdateIt.au3


请问下你写的在哪?能否借鉴一下?
发表于 2008-9-9 13:52:59 | 显示全部楼层
原帖由 pcbar 于 2008-9-8 21:14 发表
我写过一个,比较2个文件的md5,不同则更新,可参考au3自带的升级程序
D:\autoit3\Extras\AutoUpdateIt\AutoUpdateIt.au3



哪个版本里有AutoUpdateIt.au3?
 楼主| 发表于 2008-9-9 15:43:06 | 显示全部楼层
原帖由 cjl 于 2008-9-9 13:52 发表



哪个版本里有AutoUpdateIt.au3?

我下的是最新的
我按那个目录是找到有这个文件的啊!

[ 本帖最后由 silentdream 于 2008-9-9 15:44 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-19 19:03 , Processed in 0.082600 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表