日期:2014-05-17  浏览次数:20994 次

(急)只能有一个exe程序,怎么样实现自动更新?
要做一个小程序,只能允许有一个可执行的exe文件,但是用户运行程序时,会通过服务器去比对,如果有较新的程序,需要把本地的exe更新掉,求各位给个思路

还有一个问题,这个exe运行的时候要自动在桌面生成一个快捷方式,我引用了IWshRuntimeLibrary.dll,这样的话,必须把dll和exe放在同一个目录下才能正常工作,但是问题是只允许有一个exe,请问有什么办法解决?

------解决方案--------------------
新建update.bat文件,放到主程序.exe相同目录下,用dos命令进行复制
文件下载完毕后,退出主程序,运行bat文件
bat文件内容
@echo off
echo 开始移动文件
echo 等待2秒钟,确保主程序退出
ping 127.0.0.1 -n 3
xcopy update\. %cd% /e /c /f /h /k /y
rd update /s /q
echo 移动文件完成!
start 主程序.exe
exit
echo. & pause

更新文件下载到主程序同目录下的update文件夹中

//启动批处理将解压的文件复制到程序根目录
System.Diagnostics.Process.Start(Application.StartupPath + @"\update.bat");
System.Environment.Exit(System.Environment.ExitCode);//不能使用Application.Exit();不然主窗口退出会有提示
后面的你懂的
------解决方案--------------------
探讨
要做一个小程序,只能允许有一个可执行的exe文件,但是用户运行程序时,会通过服务器去比对,如果有较新的程序,需要把本地的exe更新掉,求各位给个思路

还有一个问题,这个exe运行的时候要自动在桌面生成一个快捷方式,我引用了IWshRuntimeLibrary.dll,这样的话,必须把dll和exe放在同一个目录下才能正常工作,但是问题是只允许有一个exe,请问有什么办法解决?

------解决方案--------------------
一个 exe 程序完全可以更新自己,我一直都这么用的。 分两步:
第一步,发现本身版本号高于数据库中客户端备份的版本时,就把自己传上去
第二步,发现数据库中客户端备份的版本高于自己时就下载。
整理一下,稍等把代码贴上来