这回要聊聊的是我们那个叫“Inari”的安装包,最近我们捣鼓了一个大更新,就是《Inari_安装包_更新日志》里头的那些事儿。做这个包,我感觉自己头发都快掉光了。
为什么非得折腾这回更新?
老版本那个安装包,用户反馈简直是灾难。说它下载慢,占地方,点开安装半天没反应。我一开始接手,觉得不就是打包嘛能有多难?结果一头扎进去,才发现里面是堆烂账。
我们决定动刀,主要是为了解决几个核心痛点:体积太大,启动太慢,还有就是那些老旧的依赖库,简直是拖油瓶。
动手捋之前,我先花了整整两天时间,把所有用户反馈都看了一遍。不是为了解决技术问题,而是为了找骂我的那几个人,想看看他们是哪里的大佬,哈哈。开玩笑的,主要是想知道用户忍耐的底线在哪儿。
具体怎么下手的?
既然要更新,就得彻底。我干的,就是清理那些祖传代码里没人敢碰的依赖项。那玩意儿,一堆废弃的DLL,躺在那里吃了两年灰。我心一横,直接删!删完之后,安装包体积立马瘦了一圈。
然后是压缩算法。以前用的那个老旧的算法,压缩效率极低。我研究了几个新的,选了一个对我们特定文件结构最友好的。说起来容易,跑测试的时候,第一次死活跑不通。调试,修改参数,再跑,再崩。就这么反复折腾了一天一夜,才算把压缩比提了上来。光是体积,这回就足足减小了30%。
流程是这样的:
- 清理旧的、没用的外部库和配置文件。
- 更换新的高效压缩算法,重新打包。
- 优化安装时的资源解压顺序,加快启动速度。
- 重新跑一遍安全检测和数字签名流程。
最让人窝火的就是一步的数字签名。因为牵扯到另一家公司,流程特别慢。我这边包都打好了,在那边排队等审批,愣是等了三天。我就天天盯着屏幕,心想,我这效率再高,也架不住人家流程慢。
中间差点翻车,跟家里的事儿撞车了
更新包做到一半的时候,我家里正好在装修,那个噪音,简直能把人逼疯。那天晚上我正准备上传最终测试版本,突然,电闸跳了!
我当时真的懵了。这么大的包,如果上传中断,就得重来。我跑出去一看,发现是隔壁装修工人不小心把电线给搞断了。我急得跟热锅上的蚂蚁一样,赶紧给那帮工人打电话,又找物业,折腾了快两个小时才恢复供电。
好不容易来电了,我赶紧坐回电脑前,发现测试环境被刚才的断电搞得一团糟。我那天晚上,一直修补着被电击穿的测试环境,重新打上传输中断的安装包,一直干到凌晨五点,眼睛都快睁不开了。
但这回也算是挺过去了。最终的安装包,我们测试了十几次,启动时间确实快了不少,体积也小了。看到用户反馈说“这回更新终于像个样子了”,我心里那块石头才算彻底落了地。下次再搞这种大更新,我得先确认家里的电线是不是抗造。
Inari的新安装包,费老大劲了,但效果是实打实的。技术更新这东西,就是这样,你以为只是动动手指,结果背后都是汗水和半夜爬起来找电工的故事。