为什么要搞这个“诺艾尔会努力的”安装包?
老实说,一开始我根本没想过要搞什么安装包,更别提还取了个这么怪的名字。我们群里一直有个自制的工具,用来算角色的伤害数值,还能实时追踪一下体力恢复。说白了,就是几个Python脚本,加上一个丑得要死的HTML界面。
最开始那段时间,简直是地狱。
你想,每次有新人进群,或者有人电脑重装了系统,第一件事就是问:“这个计算器怎么用?”
我得手把手教。先装Python环境,版本号得对上,然后是装各种依赖包。光是那个PyQt的库,每次都得折腾半小时。有人装依赖的时候把全局环境搞烂了,有人直接把系统环境变量设错,还有个哥们儿,居然因为跑脚本权限没设对,把自己电脑的杀毒软件给惹毛了,直接把我的核心文件当病毒删了!
那段时间,我基本就是个义务客服,白天上班,晚上回家就得盯着群消息,解决各种环境报错。我跟老婆抱怨,说我这比写正式项目还累,起码项目有专业的部署文档,这玩意儿全靠我一张嘴。
后来彻底爆发了。那天我正在外面开会,一个群友急火火地给我发消息,说他按照我说的步骤运行了,结果电脑蓝屏了。我当时血压就上来了,心想我一个计算器脚本怎么可能导致蓝屏?后来一看截图,好家伙,他把Python安装路径写死了,覆盖了系统文件!
我当时就下定决心,必须把这玩意儿彻底打包,做成一个傻瓜包。要么不做,要做就得做成那种,点一下鼠标,“下一步,下一步,完成”的程度。不能再让人为环境问题找我了。这就是我决定搞这个“诺艾尔会努力的_官方网站_安装包”的真正原因。
硬着头皮,开始打包!
既然决定要干,那就要干得彻底。我当时想,既然这是个Python脚本,肯定有办法能把它变成一个能直接双击运行的EXE文件。我就开始在网上到处翻,找到了PyInstaller这个东西。这东西就是专门干这个的,把你的Python代码,包括所有依赖,全部塞进一个文件里。
- 第一步:从脚本到单文件。
我兴冲冲地跑了第一遍命令,结果文件是出来了,但是有六百多兆!六百多兆的伤害计算器,谁用?我赶紧回去研究,发现我把虚拟环境里所有没用的库都打包进去了。我花了整整一个晚上,手动清理依赖,把核心代码抠出来,重新跑打包命令。这回小多了,稳定在三十多兆,能接受了。
- 第二步:解决图标和路径问题。
单文件是有了,但是点开它,还是黑漆漆的命令行窗口。而且它运行时会把一些临时文件丢得到处都是。我得让它变得专业一点。我找了个诺艾尔的Q版头像,找了个工具给它转成了ICO格式,强行塞进了PyInstaller的参数里。然后又费劲地写了段代码,专门处理临时文件,确保它能乖乖地把东西放在用户文档里,不乱跑。
- 第三步:制作安装程序。
这是最关键的一步。我不能只扔个EXE文件给人家,我需要那个“下一步,下一步”的界面,这样才显得正式。我用了一个叫Inno Setup的免费软件,这玩意儿学起来有点反人类,各种脚本语法搞得我头大。但我就是死磕,对着网上的教程,把安装路径、开始菜单快捷方式、桌面快捷方式全部搞定。我还特意加了一个卸载功能,这样别人不用了也能干干净净地清除掉。
那个“官方网站”的后缀,就是我用来唬人的。我希望大家看到这个名字,就觉得这是个正式发布的软件,而不是我随手写的小工具。我当时真是想着,只要能省下我十分钟的客服时间,多花十个小时打包也值了。
安装包上线了,麻烦却变了味
我把这个全新的安装包丢进群里,大家反应非常操作简单,一键安装,再也没人问我环境配置的问题了。我感觉自己终于解放了,可以把更多时间用在跟老婆孩子一起看电视上。
但事情没有那么简单,我万万没想到,我的“努力”带来了新的麻烦。
因为这个安装包太方便了,它开始病毒式传播。最初只是我们小群用,后来开始被各种论坛和贴转载。很快,我收到的反馈邮件不再是“安装失败”,而是“有没有考虑增加XXX功能?”、“你这个计算器的数值是不是可以更精确一点?”
我靠,我这本来只是个自用的小玩具,现在突然变成了一个拥有数千用户的“产品”。
最要命的是,我当时设计这个工具的底层数据库是写死的,不支持在线更新。现在每次游戏版本更新,我就得赶紧去改代码,然后重新走一遍复杂的打包流程,再发布一个新的安装包。别人要求我增加功能,我不能不做,不然就会有人跑来骂我不负责任。我从一个技术支持,彻底变成了一个版本维护工,而且还是免费的。
以前是教大家怎么运行脚本累,现在是频繁地更新和维护新功能累。虽然形式变了,但本质上,我还是那个被工具束缚的打工人。
不过话又说回来,看着大家用得开心,反馈意见积极,我心里还是有点小小的成就感。就像诺艾尔说的,努力总会有回报,哪怕回报是更多的活儿。至少,现在我不用再处理Python环境的烂摊子了。