大家都用什么方式编写自动升级?
一、从服务器载得文件的方式:
1、HTTP//如果用户反编译时,会看到下载地址,对安全不利
2、FTP//如果用户反编译时,会看到下载地址,对安全不利
3、SOCKET//比较复杂
二、升级方式:
1、比较服务中SETUP.EXE的版本与本地程序.EXE的版本,需要更新则下载,下载完自动运行SETUP.EXE进行更新。
这样做的缺点:可能打包成SETUP.EXE里的有些文件并没有改变,但重复下载且安装。且每次打包时忘记变化版本信息,用户则得不到更新。
这样做的优点:只比较一个文件的版本,方便比较。
2、比较服务中,与本程序相关的所有文件的大小,发现改变的,下载改变的文件,并覆盖本地的文件。
这样做的缺点:有些EXE文件,如果你改动不大,生成EXE后,文件大小不会改变(经测试确实如此),这样做会得不到更新。
这样做的优点:只更新文件大小变化的文件,减小网络流量和更新时间。
3、比较服务中,与本程序相关的所有文件的最后修改日期,发现改变的,下载改变的文件,并覆盖本地的文件。
这样做的缺点:EXE文件,重新生成最后修改日期会变化,下载到本地,最后修改日期不会被本地机器修改,这样可以得到更新,但非EXE的文件,如:JPG,DOC,XSL等,下载到本地后,本机会修改为当时的时间,所以造成本地的修改时间比服务器相应文件的修改日期还要更新,所以第二次就不会得到更新。且有些服务器的文件时间到本地处理时,会舍弃秒,而造成判断不准。
这样做的优点:只更新最后修改时间变化的文件,减小网络流量和更新时间。
4、对比较EXE、DLL有版本的文件,比较版本,其它文件则比较大小或最后修改时间。
缺点:同样是,修改后忘了改版本号,用户则得不到更新。
5、在服务器中,下载的区域做个INI文件,对修改后的文件在INI文件中做标示,用户先比较这两个INI文件,相同的部分,不下载,不同的则下载。
缺点:对变化的文件,每次还得在INI里做标记,如果有一次忘了,则...
优点: 比较简单,减小网络流量和更新时间.
我目前能想到的方式就是这些,不知哪种方式最好,最利于维护\操作.
我现在用得是FTP,比较文件大小.