如何让用户主动更新软件。

通常来说，软件是特化运行的代码，完成特定事情。而核心逻辑通常在软件的早期就会完成并发布。

也就是说低版本和高版本的代码通常是完成同一个事情，用户不更新，需求也可以得到满足，用户更新的动力不足。

而如果用户都不更新，那么软件就死了。

---

用户最担心的是稳定性，比如更新之后，原先的在使用功能不能使用了。

所以配置应该保持连贯性，尽可能让不同版本可以共用一套配置，检测到配置失效后，主动重置。

主体功能不能变动。

小版本的更新通常以优化用户体验为主，比如降低用户的操作步数，放大某些按钮，特化某些显示，代码打洞，把不同的模块勾在一起，解除有可能造成bug而添加的封锁限制，操作的引导性更符合认知。

大版本的变更通常以某个小功能的重构为主，这有可能会引起用户的反感，但这种时候用户的观点不重要，因为不影响主体功能，只要把这个事情叠加在比如重要BUG修复，或者是比较多的小优化更新之后，用户就不会回退到旧版本。

然后在之后的小更新中，慢慢把这个丑陋的功能做成用户习惯即可。当然没有把握的话，先把功能做成可切换的，然后在功能完善之后，删除原来的代码入口即可。为了不产生bug,代码应该在隐藏的多个版本之后删除。

在更新之中，有一种更新最为致命。那就是涉及到对主体功能的修改，有可能会导致的不稳定。需要变动主版本号。

这种情况下，需要对旧版本维持一段时间的维护。新的代码虽然是旧代码的在修改，但可以视为两个软件。

---

与此同时，应该删除掉旧版本的安装包，或者增加用户获取到的难度，并且确保任何的更新都会获取到最新发布的安装包。防止用户惰性。

当然针对想要稳定实现的用户，更新功能也应该能够关闭，用户可以选择不获取最新的特性，这是用户的权力。

旧版本的BUG修复，应该直接引导到更新至现有版本。

在软件启动时强迫检测用户更新，不更新就不能使用的情况，仅适用于互联网软件，重前后端通信。





