为啥软件的增量升级普遍率这么低

理论上我只需要知道描述新旧版本区别的信息就能完成升级,这便是增量升级的原理。更本质的理由则是便是信息论所介绍的:https://zh.wikipedia.org/zh/%E7%86%B5_(%E4%BF%A1%E6%81%AF%E8%AE%BA)-----------------增量升级极其依赖旧版本软件的完整性,1个比特都不能错,否则就需要复杂的除错算法和意外事件(错误超出某个阈值,导致出错算法不能纠正错误)的应对措施,得不偿失。Android/iOS的应用程序的安装配置和Windows的相差甚远,前两者根本搞不到最高权限,且必须按照事先设置好的流程进行:对于Android:校验apk的签名是不是正确的解压其中的.dex,/lib目录的内容至/data分区里的相应位置dexopt会验证.dex,并转换成.odex,如果有ART,art还会把.dex/.odex编译成.oat再加上其它的步骤,完成安装应用程序的工作这里任何一个步骤用户都无法干涉,而签名保证了apk的完整性应用程序本体(可执行文件/资源),配置是分开存放的:软件包在/data/app (/system/app)应用程序的本体在dalvik(ART) cache,/data/data//lib、/system/lib (JNI本地代码)配置在/data/data/因此我们可以可靠地采用差分升级的方式。而在Windows自身的签名校验,只为二进制文件(pe文件)提供支持,没有统一的校验整个软件的系统,再加上人们可以随意改动存放软件的位置,这个时候增量升级便不可靠。所以实际上,流行的做法部分借鉴了移动应用:将软件本体和配置分开存放,升级的时候把软件本体全删了,但保留配置,直接用新版本的软件替换。卸载的时候则删除软件本体和配置文件。


    推荐阅读