• 11034阅读
  • 31回复

[提问]有没有现成的客户端在线升级的库? [复制链接]

上一主题 下一主题
离线zhang2349
 

只看楼主 倒序阅读 楼主  发表于: 2015-03-10
最好能支持升级的时候是版本从低一级一级升上去,比如 1.0 -> 1.1->1.2, 1.1只包含1.1跟1.0的差别,1.2只包含1.2跟1.1的差别。

如果是不管多低的版本,都直接升级成最高版本的模式的话,有时候更新内容比较大,会导致后面的每次升级都需要较大的升级包。即 1.2就要包含1.1的内容了。
离线toby520

只看该作者 1楼 发表于: 2015-03-10
稍后我们会推出这样的SDK或者说服务
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线圣域天子

只看该作者 2楼 发表于: 2015-03-10
回 toby520 的帖子
toby520:稍后我们会推出这样的SDK或者说服务[表情]  (2015-03-10 14:00) 

你们是指你们公司,还是你个人的网站?
离线zhang2349

只看该作者 3楼 发表于: 2015-03-10
回 toby520 的帖子
toby520:稍后我们会推出这样的SDK或者说服务[表情]  (2015-03-10 14:00) 

期待
稍后大概要多久?
离线stlcours

只看该作者 4楼 发表于: 2015-03-10
http://blog.csdn.net/dbzhang800/article/details/8139078

但我愣是没找到下载的文件
离线zhang2349

只看该作者 5楼 发表于: 2015-03-10
回 stlcours 的帖子
stlcours:http://blog.csdn.net/dbzhang800/article/details/8139078
但我愣是没找到下载的文件 (2015-03-10 20:33) 

这个不好用 这个是按我说的第二种模式的
而且文件夹覆盖他不管有没有成功的
离线stlcours

只看该作者 6楼 发表于: 2015-03-11
我正好也要做这个事情,要不我来写一个类,你也用?不过你得告诉我,你的最新文件是http还是ftp上?
离线zhang2349

只看该作者 7楼 发表于: 2015-03-11
回 stlcours 的帖子
stlcours:我正好也要做这个事情,要不我来写一个类,你也用?不过你得告诉我,你的最新文件是http还是ftp上? (2015-03-11 00:51) 

那就http把  这都没事的
离线toby520

只看该作者 8楼 发表于: 2015-03-11
需要等待一段时间,客户端SDK 客户配置前端 服务端 都有
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线dbzhang800

只看该作者 9楼 发表于: 2015-03-11
回 stlcours 的帖子
stlcours:我正好也要做这个事情,要不我来写一个类,你也用?不过你得告诉我,你的最新文件是http还是ftp上? (2015-03-11 00:51) 

在整个升级过程中,客户端和服务器的连接只是非常简单的一环,难点在其他部分。

1. 准备升级包(升级包的适用版本,需要删除那些文件,新增那些文件,修改那些文件,视情况保留或替换哪些文件...)
2. 下载升级包信息(主要升级内容,升级包大小等,用户据此决定是否升级)
3. 下载升级包数据(校验数据,重新下载等)
4. 应用升级包(删除/新增/修改/保留/替换/...,判断升级是否成功,是否回滚等)
离线stlcours

只看该作者 10楼 发表于: 2015-03-11
回 dbzhang800 的帖子
dbzhang800:在整个升级过程中,客户端和服务器的连接只是非常简单的一环,难点在其他部分。
1. 准备升级包(升级包的适用版本,需要删除那些文件,新增那些文件,修改那些文件,视情况保留或替换哪些文件...)
2. 下载升级包信息(主要升级内容,升级包大小等,用户据此决定是否升级)
....... (2015-03-11 09:42) 

没那么麻烦。绝大多数情况下就是替换一个主程序exe,关键是要控制好退出主程序,又能准确替换,然后再自启动主程序,中间不要出意外。

至于升级判断,太简单了,根据文件名的版本号即可,或者额外提供一个http文件连接,专门用于判断版本号。

升级不成功不怕,下次再来一次,反正就是根据主程序自己的版本号与网上版本进行判断。如果搞版本欺骗我也管不着,反正就是要求当前主程序的版本必须与远程一致。
离线dbzhang800

只看该作者 11楼 发表于: 2015-03-11
回 stlcours 的帖子
stlcours:没那么麻烦。绝大多数情况下就是替换一个主程序exe,关键是要控制好退出主程序,又能准确替换,然后再自启动主程序,中间不要出意外。
至于升级判断,太简单了,根据文件名的版本号即可,或者额外提供一个http文件连接,专门用于判断版本号。
....... (2015-03-11 19:12) 

这个,你想的也太简单了

一个正常规模的程序,会有很多自己写的动态链接库,而可执行程序本身反而可能没多少东西,不可能是简单替换一个exe就行了。

配置文件的处理,也会让人头痛。保证用户自定义的配置不会丢失的同时要升级到新版本,通常都不能简单的删除或替换。而在Windows下,一般还都会伴随注册表信息的更新。

升级不成功,可能会导致原有的程序直接被破坏。这是个很严重的问题。如果这你都无所谓,这么问题就没什么可讨论的了。

离线stlcours

只看该作者 12楼 发表于: 2015-03-11
回 dbzhang800 的帖子
dbzhang800:这个,你想的也太简单了[表情]
一个正常规模的程序,会有很多自己写的动态链接库,而可执行程序本身反而可能没多少东西,不可能是简单替换一个exe就行了。
....... (2015-03-11 21:36) 

其实前次回复完你的帖子后,我也意识到自己是不是太冲了一点。不过还好,我加了一个限定词“大多数情况下”,而且我现在也是这样认为的。

我不知道什么你说的是“正常规模的程序”是指多大,我做过好几个几万行的程序,都没有用到DLL(这次可能会用到一个)。除非要搞不同语言的相容,否则我是不明白,一般情况下为什么要DLL。一个EXE简单又好用。

升级不成功当然不好,所以要控制好啊。不过多数情况下也没那么麻烦,实在不行,重新下载并安装就是了,配置文件还可保留。
离线彩阳

只看该作者 13楼 发表于: 2015-03-11
回 stlcours 的帖子
stlcours:其实前次回复完你的帖子后,我也意识到自己是不是太冲了一点。不过还好,我加了一个限定词“大多数情况下”,而且我现在也是这样认为的。
我不知道什么你说的是“正常规模的程序”是指多大,我做过好几个几万行的程序,都没有用到DLL(这次可能会用到一个)。除非要搞不同语言的 .. (2015-03-11 21:47) 

看看Telegram怎么做的?当有更新的时候,界面弹出是否更新。更新不到2秒,就重新打开Telegram,还恢复刚才的会话。
当然,Telegram可能就是一个exe。
上海Qt开发联盟,热忱地欢迎你的加入!
离线dbzhang800

只看该作者 14楼 发表于: 2015-03-12
回 stlcours 的帖子
stlcours:其实前次回复完你的帖子后,我也意识到自己是不是太冲了一点。不过还好,我加了一个限定词“大多数情况下”,而且我现在也是这样认为的。
我不知道什么你说的是“正常规模的程序”是指多大,我做过好几个几万行的程序,都没有用到DLL(这次可能会用到一个)。除非要搞不同语言的 .. (2015-03-11 21:47) 

可能是我接触到的Qt程序太少了,刚看了看我电脑上装的Qt的程序,

其中,
Qt Creator
VirtualBox
GoogleEarth
WPS
TexWorks
QCAD
都包含一系列的dll文件。

离线zhang2349

只看该作者 15楼 发表于: 2015-03-12
回 stlcours 的帖子
stlcours:其实前次回复完你的帖子后,我也意识到自己是不是太冲了一点。不过还好,我加了一个限定词“大多数情况下”,而且我现在也是这样认为的。
我不知道什么你说的是“正常规模的程序”是指多大,我做过好几个几万行的程序,都没有用到DLL(这次可能会用到一个)。除非要搞不同语言的 .. (2015-03-11 21:47) 

你的程序只有你自己的代码吧
当你要使用别人的库时,就会有一大堆dll的。

比如你使用qt就要带上qt的dll啊,当你发现qt有bug需要更新成新版本,那你更新的内容就不止是你自己的exe了

当人家是付钱使用软件的时候,人家才不想经常要重新下载安装呢
离线stlcours

只看该作者 16楼 发表于: 2015-03-12
回 zhang2349 的帖子
zhang2349:你的程序只有你自己的代码吧
当你要使用别人的库时,就会有一大堆dll的。
比如你使用qt就要带上qt的dll啊,当你发现qt有bug需要更新成新版本,那你更新的内容就不止是你自己的exe了
....... (2015-03-12 14:45) 

静态编译啊!
离线stlcours

只看该作者 17楼 发表于: 2015-03-12
回 dbzhang800 的帖子
dbzhang800:可能是我接触到的Qt程序太少了,刚看了看我电脑上装的Qt的程序,
其中,
Qt Creator
....... (2015-03-12 11:10) 

这些都是业界赫赫有名的大程序,我们普通人做的程序没那么夸张的,一般自己的exe就可以了,说实话,能把程序功能做出来就很不错了,哪管什么依赖,什么内存泄漏,什么可维护性。。。
离线dbzhang800

只看该作者 18楼 发表于: 2015-03-12
回 stlcours 的帖子
stlcours:
静态编译啊!

楼主一开始就提了,希望每次升级的东西尽可能小。你这样的话,和重装没多少区别了吧,直接将楼主问题打回原点了。

再就是,对于商业程序来说,静态编译,意味着购买商业版的Qt。但是,即使购买了商业版Qt,如果需要使用QtWebkit/QtScript 等包含有LGPL代码的模块,仍旧不能使用静态编译。

--
在我电脑上装的个Qt程序中,只有 cmake-gui.exe 和 Qt-ifw 这两个开源程序是静态编译的。
离线dbzhang800

只看该作者 19楼 发表于: 2015-03-12
回 stlcours 的帖子
stlcours:这些都是业界赫赫有名的大程序,我们普通人做的程序没那么夸张的,一般自己的exe就可以了,说实话,能把程序功能做出来就很不错了,哪管什么依赖,什么内存泄漏,什么可维护性。。。 (2015-03-12 16:22) 

楼主要求的自动升级,本身就是程序维护的一部分。你既然这些东西都不care,这个问题还有什么可谈的么?
离线stlcours

只看该作者 20楼 发表于: 2015-03-12
回 dbzhang800 的帖子
dbzhang800:楼主要求的自动升级,本身就是程序维护的一部分。你既然这些东西都不care,这个问题还有什么可谈的么? (2015-03-12 16:43) 

哦,你理解错了,我说的是代码的可维护性,但程序的功能,包括升级功能,仍然必须是好用的。
离线zhang2349

只看该作者 21楼 发表于: 2015-03-12
回 stlcours 的帖子
stlcours:静态编译啊! (2015-03-12 16:21)

就知道你会这么说,我只是拿qt举个例子,
因为qt有源代码,你才可以静态编译。

一般别人公司的库,他不会提供静态库,又没有源代码,你怎么静态编译

离线stlcours

只看该作者 22楼 发表于: 2015-03-12
回 zhang2349 的帖子
zhang2349:就知道你会这么说,我只是拿qt举个例子,
因为qt有源代码,你才可以静态编译。
一般别人公司的库,他不会提供静态库,又没有源代码,你怎么静态编译
....... (2015-03-12 20:50) 

我就不懂了,你到底用什么库、有什么困难?谁提供的库质量这么差?如果可能,我愿意帮助你。
我的项目里也用了一个外部库,只有.h文件和.lib,我把它们全部都编译进去了,没有任何问题啊,只是VS配置的时候稍微费了一些劲。
离线zhang2349

只看该作者 23楼 发表于: 2015-03-12
回 stlcours 的帖子
stlcours:我就不懂了,你到底用什么库、有什么困难?谁提供的库质量这么差?如果可能,我愿意帮助你。
我的项目里也用了一个外部库,只有.h文件和.lib,我把它们全部都编译进去了,没有任何问题啊,只是VS配置的时候稍微费了一些劲。 (2015-03-12 21:30) 

你厉害了
中国软件公司这么多,有多少能把软件做的那么好的,qt也是有bug
你就保证你写的就没有问题?
离线dbzhang800

只看该作者 24楼 发表于: 2015-03-12
回 stlcours 的帖子
stlcours:哦,你理解错了,我说的是代码的可维护性,但程序的功能,包括升级功能,仍然必须是好用的。 (2015-03-12 17:23) 

呵呵,如果代码的可维护性都不能保证,你又如何保证其他功能好用?

举个简单的例子,假定你是Qt某个模块的开发人员。用户报告,在某某系统下,使用某某编译器编译的某某版本的Qt,出现一个XXXX的问题。 你如何快速定位BUG?如何找出该BUG是何时由何人引入的?如何确定该BUG影响哪些版本的Qt?
离线dbzhang800

只看该作者 25楼 发表于: 2015-03-12
回 zhang2349 的帖子
zhang2349:你厉害了
中国软件公司这么多,有多少能把软件做的那么好的,qt也是有bug
你就保证你写的就没有问题? (2015-03-12 21:42) 

恩,不清楚 stlcours 的超级自信从何而来

Qt自身BUG是非常非常多的。

不少商业版用户都维护自己的Qt,一是因为需要的某些特性需要通过修改代码实现,另一方面是一旦发现BUG,需要及时修复。而后再慢慢向Qt官方提交BUG,等到官方修复。

很多时候,商业版用户没有足够的精力向Qt官方提交BUG或补丁。但是维护自己的Qt,他们也倍感头痛(特别是Qt版本升级,本地这些补丁因为冲突无法apply的时候)。
离线stlcours

只看该作者 26楼 发表于: 2015-03-13
回 zhang2349 的帖子
zhang2349:你厉害了
中国软件公司这么多,有多少能把软件做的那么好的,qt也是有bug
你就保证你写的就没有问题? (2015-03-12 21:42) 

就事论事啊,你用的什么库,看看有什么什么办法解决,没办法解决找找类似功能的库。仅此而已。实在没办法也只能将就。你大而化之,不是一个讨论问题的态度,谁敢说自己的代码没问题??
离线stlcours

只看该作者 27楼 发表于: 2015-03-13
回 dbzhang800 的帖子
dbzhang800:恩,不清楚 stlcours 的超级自信从何而来[表情]
Qt自身BUG是非常非常多的。
....... (2015-03-12 23:46) 

版主上纲上线了。我只是想打听一下,他用的什么库,看看问题怎么解决,没办法解决也可以找类似的库,不要在一棵树上吊死。但是如果这个库不提供静态编译,一般可以认为做的质量不好。我这样说好像不算超级自信吧?
离线stlcours

只看该作者 28楼 发表于: 2015-03-13
回 dbzhang800 的帖子
dbzhang800:恩,不清楚 stlcours 的超级自信从何而来[表情]
Qt自身BUG是非常非常多的。
....... (2015-03-12 23:46) 

我刚刚听说WPS维护了一个自己的QT版本,真是让人万分敬仰。只是万一新的QT又加了功能,又该如何合并代码呢?QT4还好说,QT5可是在不断发展啊。
离线zhang2349

只看该作者 29楼 发表于: 2015-03-13
回 stlcours 的帖子
stlcours:就事论事啊,你用的什么库,看看有什么什么办法解决,没办法解决找找类似功能的库。仅此而已。实在没办法也只能将就。你大而化之,不是一个讨论问题的态度,谁敢说自己的代码没问题?? (2015-03-13 00:52) 

我说了啊别人公司的库,平台的sdk,只有dll,这种怎么可能有类似功能的库呢
离线stlcours

只看该作者 30楼 发表于: 2015-03-13
回 zhang2349 的帖子
zhang2349:我说了啊别人公司的库,平台的sdk,只有dll,这种怎么可能有类似功能的库呢 (2015-03-13 13:59) 

那你试试MoleBox之类的工具,也是一种解决方案吧。但是这个公司提供的服务不够专业,那肯定是真的。
离线dbzhang800

只看该作者 31楼 发表于: 2015-03-13
回 stlcours 的帖子
stlcours:那你试试MoleBox之类的工具,也是一种解决方案吧。但是这个公司提供的服务不够专业,那肯定是真的。 (2015-03-13 15:57) 

呵呵,好好一个问题,被你东扯西扯的,基本没办法看了。真怀疑你是不是在测试灌水机器人。
快速回复
限100 字节
 
上一个 下一个