为什么我要自己搞这个 Inari 绿色下载?
我一直对那些软件公司搞的安装包意见很大。动不动就给你塞个加速器,来个弹窗广告,或者非要你把什么垃圾文件写到 C 盘深处。我这人有洁癖,电脑里的东西必须整整齐齐,尤其是什么“服务”和“后台进程”,看到就烦。
我用的这个 Inari 工具,功能是没得说,但在更新上就特别麻烦。它官方的安装包,每次升级都得折腾半天权限,还得跑一堆校验。我寻思着,既然是拿来吃饭的工具,就得自己说了算,不能被它牵着鼻子走。我很久以前就决定,要自己“剥皮”,搞一个完全免安装的“绿色版”。
我动手的那天,那是真费劲。我先是找到了官方的安装文件,用压缩软件给它强行解压了。然后我就开始在里面大海捞针,筛掉了所有跟安装、注册、后台服务相关的脚本和 DLL 文件。这个 Inari 最关键的程序主体,也就那么几个 G。我把它们打包扔到了我的移动硬盘里。
第一次启动,不出所料,报错了。它找不到配置文件。我没办法,只能硬着头皮去追踪它的注册表调用。我发现它启动的时候总要去 C 盘一个固定的路径读一个用户权限的 XML 文件。我一气之下,直接改写了主程序的启动批处理文件,强制让它在启动时就生成这个 XML,并且把它定位到我绿色包的根目录里。这么一通操作下来,我的“Inari 绿色下载”版本算是勉强跑起来了。
第一次更新日志:彻底解决配置路径错乱问题
我用这个绿色版跑了差不多三个月,一直挺顺的。直到上周,它提示说有大版本更新。我心想反正我用的是绿色版,大不了不更。但架不住有些新功能我确实需要,犹豫再三,我决定试着把新版本的文件直接覆盖到我的绿色包里。
结果你猜怎么着?刚一覆盖,直接炸了。程序能启动,但是所有配置全丢了。它又开始“认亲”,非要跑到 C 盘找那些老掉牙的路径。
我当时就有点窝火。我查阅了新版本更新的日志,发现他们这回升级动了一个底层的东西,就是那个负责路径映射的底层核心文件。我之前自己做的那个批处理命令,在新版本里根本不起作用了。
我花了一整个下午去对比新旧版本的文件差异。我发现了一个叫 的文件,这个文件在新版本里被加密了。但更关键的是,它还引入了一个新的 manifest 文件来定义启动时的环境参数。
我的解决过程如下:
- 定位:找到新版本的 文件。
- 分析:发现它硬编码了几个关键的系统路径,而不是相对路径。
- 修改:我直接编辑了这个 XML 文件,把所有硬编码的绝对路径,都替换成相对路径符号 。
- 打补丁:为了确保程序不发现这个文件被修改了,我用了一个小的 Hook 程序,在 Inari 启动之前,先注入这个修改后的
manifest。
这么一套组合拳下来,问题才算彻底解决。我把这个修正后的包命名为 Inari_绿色下载_V3.1_Patched。以后不管它官方怎么更新,只要核心启动机制不变,我这个绿色版就都能用。
我为什么非要在这个节骨眼上折腾这个?
要不是被逼到墙角,我才懒得管它什么更新。我为啥会这么执着于搞这个完美的绿色版?说起来,这事儿得从我去年接的一个私活说起。
当时我在给一个老客户做项目,项目快收尾的时候,客户突然说,他们公司的电脑,管得特别严,任何软件都不能安装,甚至管理员密码都锁死了。他知道我用 Inari 效率高,就求我把这个软件环境也给他“打包”带过去。
我当时拍胸脯说没问题,我的绿色版随便跑。结果我到了他公司一看,傻眼了。客户的电脑系统是特制的,我这个绿色版一跑,就弹“环境不匹配”的错误。那次真是丢脸丢大了,我在客户的办公室里,硬是熬夜到凌晨四点,才把那些路径配置给一一捋顺,让它能在那个奇葩系统里跑起来。
那一次的经历让我明白,工具是死的,人是活的。如果你不能完全掌握你的工具,那它随时都可能给你使绊子。从那以后,我就立下规矩,凡是我日常要用的核心工具,我一定要吃透它的安装和运行机制,确保它能在任何环境下都能为我所用。
这回的新版本更新,也是因为我急着要给那个老客户更新他的新功能,如果我的绿色包跑不起来,那项目进度就得耽误。我必须得把这个更新日志给记下来,这可不是什么兴趣爱这都是血淋淋的教训。希望我这回的折腾,能让大家在搞“绿色软件”的时候,能少走点弯路。