• 25971阅读
  • 15回复

qt写了一个自动升级的方案 [复制链接]

上一主题 下一主题
离线xbbbbb
 

只看楼主 倒序阅读 楼主  发表于: 2008-03-07
qt写了一个自动升级的方案
— 本帖被 XChinux 执行加亮操作(2008-03-10) —
MSVC2005 + QT434(static)

服务器端跑:SERVER-U
客户端用Qt编写
补丁包利用NSIS制作

源码地址:
sourceforge.net/projects/qupdater

用qt时间很短,希望大家提出宝贵意见,3ks
离线xbbbbb

只看该作者 1楼 发表于: 2008-03-10
补上 SVN 里面的 README 内容
QUpdater

编译方法:
1,下载Qt opensource 4.3.4
2,将QtPatch里面的东西覆盖到Qt对应的目录中
    注:主要是一个修改了QFtp类,增加的断点续传的功能
3,利用vc2005静态编译Qt库
4,打开Updater::VisualC::UpdaterClient里面的工程文件,即可编译

测试环境配置
1,修改FTP地址:
    将Data目录下的serverdata文件拷贝到和exe同级目录,修改里面的IP以及端口号
    默认的用户名以及密码写死在程序里,以防止不必要的错误。(默认为usr: Client pwd:Client)
2,文件组织
    服务器上,根目录为Update,其中放置server.plist文件,利用xml编译器打开,该文件显示服务器上存在的补丁包信息
    客户端,需要维护的是与exe同级的recipe.plist文件,保存的是客户端的升级信息
3,NSIS
    通常一般的打包即可,为了配合自动升级,脚本里需要修改客户端的recipe.plist文件,以保留升级信息。
    并且,为了安装进度显示,需要调用Docs/NSIS相关/Plugins下的NsisTestDll中的Test函数,利用stdout技术,与升级exe程序同级,刷新实时的进度条
    (NsisTestDll为仿写的NSIS Plugin)

备查技术:
    QFtp的使用,QThread结合QProcess的使用,Sington Application(唯一进程实体),NSIS XML,NSIS plugin,QXmlStreamReader,带checkbox的treeview(模拟带checkbox的listctrl-mfc),Tray Application,MD5
离线xbbbbb

只看该作者 2楼 发表于: 2008-03-25

所有下载
https://sourceforge.net/project/showfiles.php?group_id=219629


[ 此贴被xbbbbb在2008-04-07 15:48重新编辑 ]
离线hxy31861
只看该作者 3楼 发表于: 2008-05-25
可惜不能下载来看看!
离线laurentium
只看该作者 4楼 发表于: 2008-07-21
不能上sourceforge了,能否把源码贴到论坛来?谢谢!
离线kevdmx

只看该作者 5楼 发表于: 2008-11-12
我给大家上传源码 QUpdater-4-7-SRC.zip (708 K) 下载次数:615
离线scut_ray
只看该作者 6楼 发表于: 2008-11-12
1. 其实可以托管到google的code那里, http://code.google.com,估计没多少个人不能上google吧?

2. 问个问题:为什么要搞个patch来替换Qt原来的QFtp?而不是继承Qftp然后再定义一个对象?否则别人要编译你的程序还要重新编译一份Qt。毕竟Qt编译起来也是很好费时间的。
离线9605201
只看该作者 7楼 发表于: 2008-12-13
WexTextCodecPlugin.obj : error LNK2019: 无法解析的外部符号 "public: static class QByteArray __cdecl QGbkCodec::_name(void)" (?_name@QGbkCodec@@SA?AVQByteArray@@XZ),该符号在函数 "public: virtual class QList<class QByteArray> __thiscall WTextCodecPlugin::names(void)const " (?names@WTextCodecPlugin@@UBE?AV?$QList@VQByteArray@@@@XZ) 中被引用
1>WexTextCodecPlugin.obj : error LNK2019: 无法解析的外部符号 "public: static class QByteArray __cdecl QGb2312Codec::_name(void)" (?_name@QGb2312Codec@@SA?AVQByteArray@@XZ),该符号在函数 "public: virtual class QList<class QByteArray> __thiscall WTextCodecPlugin::names(void)const " (?names@WTextCodecPlugin@@UBE?AV?$QList@VQByteArray@@@@XZ) 中被引用
1>WexTextCodecPlugin.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall QGb2312Codec::QGb2312Codec(void)" (??0QGb2312Codec@@QAE@XZ),该符号在函数 "public: virtual class QTextCodec * __thiscall WTextCodecPlugin::createForName(class QByteArray const &)" (?createForName@WTextCodecPlugin@@UAEPAVQTextCodec@@ABVQByteArray@@@Z) 中被引用
1>WexTextCodecPlugin.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall QGb18030Codec::QGb18030Codec(void)" (??0QGb18030Codec@@QAE@XZ),该符号在函数 "public: virtual class QTextCodec * __thiscall WTextCodecPlugin::createForName(class QByteArray const &)" (?createForName@WTextCodecPlugin@@UAEPAVQTextCodec@@ABVQByteArray@@@Z) 中被引用
1>WexTextCodecPlugin.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall QGbkCodec::QGbkCodec(void)" (??0QGbkCodec@@QAE@XZ),该符号在函数 "public: virtual class QTextCodec * __thiscall WTextCodecPlugin::createForName(class QByteArray const &)" (?createForName@WTextCodecPlugin@@UAEPAVQTextCodec@@ABVQByteArray@@@Z) 中被引用
1>WexTextCodecPlugin.obj : error LNK2019: 无法解析的外部符号 "public: static class QList<class QByteArray> __cdecl QGbkCodec::_aliases(void)" (?_aliases@QGbkCodec@@SA?AV?$QList@VQByteArray@@@@XZ),该符号在函数 "public: virtual class QList<class QByteArray> __thiscall WTextCodecPlugin::aliases(void)const " (?aliases@WTextCodecPlugin@@UBE?AV?$QList@VQByteArray@@@@XZ) 中被引用
1>WexTextCodecPlugin.obj : error LNK2019: 无法解析的外部符号 "public: static int __cdecl QGbkCodec::_mibEnum(void)" (?_mibEnum@QGbkCodec@@SAHXZ),该符号在函数 "public: virtual class QList<int> __thiscall WTextCodecPlugin::mibEnums(void)const " (?mibEnums@WTextCodecPlugin@@UBE?AV?$QList@H@@XZ) 中被引用
1>WexTextCodecPlugin.obj : error LNK2019: 无法解析的外部符号 "public: static int __cdecl QGb2312Codec::_mibEnum(void)" (?_mibEnum@QGb2312Codec@@SAHXZ),该符号在函数 "public: virtual class QList<int> __thiscall WTextCodecPlugin::mibEnums(void)const " (?mibEnums@WTextCodecPlugin@@UBE?AV?$QList@H@@XZ) 中被引用
1>../../../bin/_UpdaterClientd.exe : fatal error LNK1120: 8 个无法解析的外部命令

出这个错误
离线jamesmf
只看该作者 8楼 发表于: 2008-12-22
没看懂啥意思
在线toby520

只看该作者 9楼 发表于: 2011-12-16
svn信息都没删除就传上来啦
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线wishvk

只看该作者 10楼 发表于: 2012-08-09
已收藏,感谢
我不Qt谁Qt
离线wangvance

只看该作者 11楼 发表于: 2013-05-03
不错 下载看看
离线记忆搁浅
只看该作者 12楼 发表于: 2013-07-07
用的qt版本不一致 而且应该是你的pro文件里面没引入库
如是非我心,终老自归林
离线neil-wen

只看该作者 13楼 发表于: 2013-08-20
不错  不错   很好
离线mcusun2000

只看该作者 14楼 发表于: 2014-01-10
顶一下,QT的自动升级方案
离线windancerhxw

只看该作者 15楼 发表于: 2016-06-16
非常实用的东东,多谢分享了
快速回复
限100 字节
 
上一个 下一个