• 7440阅读
  • 9回复

[提问]软件自动升级的思路 [复制链接]

上一主题 下一主题
离线anubiskong
 

只看楼主 倒序阅读 楼主  发表于: 2011-02-27
现在一般的思路是写一个update可执行文件,用它来更新软件
但是这样需要结束主程序,转向update程序


我的想法是,把主程序分成2个部分,一个可执行文件.一个dll,dll中是经常升级的部分,可执行文件就是程序的入口,也是升级程序,它把dll更新后再执行新的dll中的内容,这样就不用关闭主程序直接使用更新后的功能了


但是这样做需要先做到2点
1.动态加载dll
2.除了程序启动和升级以外的程序功能都分离到dll中


我是新手,不知道这2点是否能做到,甚至可能想法有些幼稚,如果能做到,希望有人能提示我上面2点的简单思路
如果不能做到,希望有人能和我探讨其他解决方案
离线downstairs

只看该作者 1楼 发表于: 2011-02-27
刚解决了个问题。心情不错。染了个头发 ←← ←  也帮你解答下:

答案是:完全可以
喜爱编程的猫头鹰
离线anubiskong

只看该作者 2楼 发表于: 2011-02-27
回 1楼(downstairs) 的帖子
那啥...我是新手,麻烦能给一些思路吗?
离线wter27
只看该作者 3楼 发表于: 2011-02-27
这个你需要掌握以下的知识
1.QNETWORK方面的:包括TCP通信等部分
2.QFILE文件写入和读出部分的模块
3.动态加载DLL可以用QLIBRARY,先判断是否完成更新,是否有DLL文件,然后再加载。
4.DLL和程序分离,需要你自己写UPDATE调用DLL和启动主程序的代码
5.代码部分可以参考以下的网帖:
客户端UPDATE---http://blog.csdn.net/ychwn/archive/2009/07/01/4313361.aspx
服务器SERVER---http://blog.csdn.net/ychwn/archive/2009/07/01/4312984.aspx
离线anubiskong

只看该作者 4楼 发表于: 2011-02-27
回 3楼(wter27) 的帖子
让我节省了很多时间,十分感谢
离线channon
只看该作者 5楼 发表于: 2011-02-28
考虑到如果用update程序也是qt写的话,是不是存在无法升级qt运行库的问题。

所以我的解决办法是将需要升级的文件打包成自解压文件,主程序判断有需要升级的时候,将升级包下载下来,然后关闭自己,运行自解压包。
操作系统: Archlinux
Qt SDK: Qt 4.7.1 for Linux
开发方向: Qt,Java
常用数据库:Firebird、SQLite
离线uidab

只看该作者 6楼 发表于: 2011-02-28
挺有用的.
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线cuiman10

只看该作者 7楼 发表于: 2011-02-28
跟着学习了。。。
做事有度,量体裁衣!
离线wter27
只看该作者 8楼 发表于: 2011-02-28
回 5楼(channon) 的帖子
呵呵,强啊,这个都想到了。....
离线乌龙茶
只看该作者 9楼 发表于: 2011-03-15
回 4楼(anubiskong) 的帖子
楼主有没有写好这份代码,麻烦给我一份,我的邮箱455911515@qq.com;谢谢了。
快速回复
限100 字节
 
上一个 下一个