文章 / AI编程与办公自动化
被AI带偏了两天两夜,烧了上百美元,我终于把这个浏览器插件一键安装器做成了
这是我做过最折腾的项目。三个方案全部推翻重来,中间被Chrome安全策略拦截、被编码问题坑到怀疑人生、被一个看起来"一模一样的成功案例"拖进最深的幻觉里。最后用了一个谁也没想到的方向,才把路跑通。 一、承认:上一篇推文里宣称的"一键安装",其实没跑通 上次写浏览器插件Skill时,我说"双击bat就
这是我做过最折腾的项目。三个方案全部推翻重来,中间被Chrome安全策略拦截、被编码问题坑到怀疑人生、被一个看起来“一模一样的成功案例”拖进最深的幻觉里。最后用了一个谁也没想到的方向,才把路跑通。
一、承认:上一篇推文里宣称的“一键安装”,其实没跑通
上次写浏览器插件Skill时,我说“双击bat就能装插件”。读者反馈很热烈,但我心里知道——
那个bat方案,在Chrome上跑不通。
把我自己的电脑调得能跑是一回事,要做成“给任何人都能一把过”的工具,中间差着一道我当时严重低估的天堑。
从那时候到今天,我推翻了三种方案,花了整整两天两夜、上百美元的token,全是在填这道天堑。
二、第一套方案:BAT脚本——中文注释能当命令跑
最早的做法很简单:AI生成一个双击就能执行的批处理脚本,把插件复制、建快捷方式、加启动参数,用户以后点新快捷方式就能用。
问题来得又快又猛。BAT脚本里的中文注释用 :: 开头,某些Windows机器上cmd直接把注释当命令执行,脚本卡死。改成英文还不行——调用PowerShell做文件操作时,PowerShell 5.1对编码的理解和AI默认写法不一样,无BOM的UTF-8会被按本地编码误读,中文路径直接乱码。最后把所有脚本压成纯ASCII、统一用UTF-8 BOM + CRLF编码才稳住。
而最致命的是:Chrome根本不支持 --load-extension 这个启动参数来加载外部插件。这条路从根上是封死的。
搞了大半天,放弃。
三、第二套方案:照着成功案例抄注册表——这是我掉得最深的一个坑
一条让我深信不疑的“铁证”
在我电脑的注册表里,影刀RPA的浏览器插件用一行 path + version 写好端端跑着。Edge和Chrome两边都正常可用,浏览器里显示“已由第三方添加”。
AI分析后告诉我:这在官方文档里有据可查,是Chromium的外部扩展注册表安装方式。不是偏门,是官方认可的分发路径。
于是我全力冲刺。AI帮我创建了一整套安装链路:对Edge和Chrome双浏览器写注册表、安装脚本、卸载脚本、打包模板全部补齐。两个测试插件都成功写入。
然后我关掉浏览器,重新打开——插件确实出现了,但是灰色的。
Edge的提示是:“此扩展不是来自任何已知来源,可能是在你不知情的情况下添加的。“不可启用,点不动。另一个插件干脆没出现。
而我把影刀删了重写注册表,一打开Edge它就立刻弹出“是否打开此扩展”的提示。 同样一套写法,影刀能过,我过不了。差别一定在更深的地方。
一层一层剥开影刀
我解包了影刀的插件文件,让AI帮我逐项比对。连挖三层:
第一层:影刀额外注册了一个“本机桥接程序”——浏览器和桌面程序之间的通信通道。影刀扩展启动后会立刻和本机软件握手,而我的插件只是孤零零一个包。
第二层:解包后我发现影刀的插件包里有一个签名文件,里面写着 "kid": "webstore"——这个插件是经过Chrome商店签名体系处理的。 而我的插件是自己打包的,零签名。
第三层:我问AI:能不能自己搞个Windows签名证书来替代商店签名?AI联网查了官方文档——结论是不行。 Chrome官方文档写得非常明确:Windows上的扩展安装必须走Chrome Web Store。Windows自签名证书只对exe安装包起效,对浏览器扩展包完全没用。
我终于明白为什么被坑了这么久
影刀能在你的电脑上跑,是因为它一整套产品形态是”桌面主程序 + 商店签名过的扩展包 + 本机桥接通道“。注册表里的那一行只是这套体系的冰山一角。
而我的用户场景是什么?——每生成一个插件都是全新创建的,没有上架商店,没有签名,没有桌面程序,没有桥接通道。 我看注册表长一样,就以为前提也一样。其实在浏览器安全策略眼里,有签名的影刀和零签名的自打包插件,根本是两个物种。
看到结果相同,不代表前提相同。 这是两天里我学到的最贵的一课。花了最长的时间,走了最远的路,最后是被自己眼睛看到、脑子联想到的“证据”骗得最惨。
放弃。
四、第三套方案:Playwright——被83MB的node.exe劝退
换思路:不搞安装,改走“改写浏览器配置文件”。用一个叫Playwright的工具直接操作浏览器的内部配置,把插件信息提前写进去。
技术上真跑通了。但发布目录里有一个 .playwright 文件夹,光一个 node.exe 就是81MB。能删的文件我都删了——省了4MB。node.exe是硬依赖,一删就崩。
安装器主程序才几百K,旁边拖一个83MB的运行环境?给一个可能几十K的插件当安装包?果断放弃。
五、转折:不再把浏览器当“网页”,当成“桌面窗口”
三条路全死了。我停下来重新想:问题到底在哪?
每条路都是在“浏览器框架内部”想办法。而Chrome和Edge的安全策略就是在框架内部给你层层设卡。
AI给了一个关键建议:不要当网页操作,当成Windows桌面操作。用Windows自带的桌面UI自动化框架(UIA),从操作系统层面去点按钮、填路径。浏览器根本不知道有人在动它的控件。
我新建了一个独立项目,开始用这个全新方向。
六、UIA方案:思路通了,但踩了十个大坑
想法很简单:启动用户自己的浏览器,打开插件管理页面,让程序自动去点“开发者模式”开关、点“加载扩展”按钮,弹出文件夹对话框后自动填路径、点确认。全程由程序模拟人工操作。
跑起来以后,坑一坑接一坑:
进程识别——浏览器一启动返回的进程ID下一秒就消失了,因为启动器fork完真窗口就退出了。窗口附着——Edge多进程架构下拿到的第一个PID往往是个没有窗口的子进程。控件查找——浏览扩展页面时,有些元素一读属性就报COM异常崩溃。地址栏导航——浏览器打开了但根本没跳转到扩展管理页,只能手动模拟输入网址并回车。文件夹对话框——点完“选择文件夹”后,程序就卡在“等待对话框关闭”这一步,明明已经装好了。元素采集——做了一个类似屏幕探针的定位工具,结果总是把整个桌面当成目标。高分屏偏移——画出来的定位红框在125%、150%缩放下整体错位。换个图标——就换个ico图标,exe双击直接没反应,排查后发现是WPF窗口图标文件路径的问题。名字拼错——一个颜色资源名写错了,整个配置窗口一点就闪退。
还有各种微小的事:Edge叫“开发人员模式”,Chrome叫“开发者模式”,英文版叫“Developer mode”;“加载已解压缩的扩展程序”、“加载解压缩的扩展”、“加载已解压的扩展程序”……每个浏览器的文案都不一样。JSON保存中文自动变成了Unicode转义码、下拉框文字没居中、按钮太宽、弹窗被任务栏挡住……
每一条都是反复调试、反复查资料、反复让AI修bug修出来的。
七、最终成果:一个精练的安装器
两天两夜后,这个安装器做成了。
用户双击打开,选一下想装的浏览器,等几秒——插件就自动出现在浏览器里了。支持Edge、Chrome、360、搜狗、夸克、UC,甚至豆包和千问这类AI桌面客户端(它们内核也是Chromium)。不需要去应用商店,不需要翻墙,不需要点“开发者模式”,不用手动选文件夹。
和之前那个拖83MB运行环境的Playwright方案比,最终的单文件版轻了几十倍。干干净净,只一个exe加一份配置文件。
最终交给用户的,就是一个文件夹,里面有安装器、配置文件和插件本体。双击,选浏览器,完成。
八、这套方案的性质:实话实说
我必须坦诚:这条路不是官方推荐的。官方只有两条路——应用商店(翻墙+付费+审核),或者开发者模式手动加载(光这四个字就能劝退99%的人)。
我的方案是从操作系统层面用桌面自动化绕过了浏览器的安全限制。但每一个操作都是对你自己的电脑、你自己的浏览器、你自己的插件完成的,完全合法。
九、免费,欢迎体验,欢迎打赏
从VBA Skill到Python Skill到多维表格Skill到浏览器插件Skill——这条从开发到一键交付的路,我终于跑通了。
这套Skill全部免费。 这些坑你一个也不用走——我已经把它们变成了Skill里的规则和脚本,以后AI给别人做安装器时自动避开这些陷阱。
如果觉得这段折腾值得认可,欢迎随喜打赏。 不设固定金额,你觉得值多少就打赏多少。
也欢迎加我好友,进入免费社群,亲手体验:一句话让AI写插件,双击自动装好。
写在最后:这件事最大的教训不是技术,是“AI有时候比你更无知”
这两天里,我最深的感受不只是技术上的难。
真正可怕的是:每一条路,AI一开始都说“应该可行”。
BAT方案,AI说“在Windows上批处理很成熟”。外部注册表方案,AI找出官方文档说“这条路有据可查”。Playwright方案,AI说“这个库有原生支持”。三次,每次都是我先信了、后炸了、再回过头才意识到——AI的知识是旧的。它的判断基于几年前的经验,而浏览器安全策略是谷歌和微软在不断收紧的。
最危险的是第二条路:影刀的案例给了我和AI双重幻觉。我看到本地有产品在跑,AI看到官方文档还开着这条路。两边信息一叠加,我们就在一条死胡同里走得更深了。
AI编程不是零基础就能写出好代码。 尤其在软件安全这种知识快速迭代的领域,AI给出来的往往是“当年可以、现在已经封死”的老路。你如果自己没有知识储备去判断、去追问、去拆解真实案例找差异,就会跟着AI一起掉进坑里。
只有你自己成长了,积累了真正的专家知识,才能在AI指给你一条“看起来很好”的路时,有能力说一句——“不对,这条路已经被封了。我们换方向。”
我现在把这些坑全部踩平了。把它们变成了文档、脚本、规则和容错逻辑。你拿着直接用就好。
别客气。
公众号:Excel催化剂 | 微信:190262897 | 承接数据咨询解决方案、软件功能定制、AI编程培训服务等
想体验浏览器插件Skill?欢迎加好友进入免费社群,亲手玩一把。