我是怎么在 Mac 上开发 Mole for Windows 的
Mole for Mac 发布以后,一直有不少小伙伴问什么时候出 Windows 版,当时给大伙的答复是等 Mac 完善以后才有空来弄,10 月 14 日 Windows 版终于上线了。上线之前其实已经在小范围里迭代了 20 多个版本,又经过 Mole 天使用户多天内测,大家提了非常多的建议,非常感谢大伙帮忙,这一次的开发挺有意思的,记录一下我是怎么在 Mac 上把它做出来的。
几乎从零开始
为了更好的使用体验和性能,这次用的是 Windows 原生的 C# 和 WinUI 3,没有套 Electron,加上 Windows 和 Mac 的系统特性、要清理的东西完全不一样,除了设计和文案,Mac 版十几万行 Swift 几乎没有可以复用的代码,来来回回差不多写了一个月,大概 7.8 万行代码和 4000 多个测试用例。
一台 Mac,一台虚拟机,一台 ThinkPad
开发和调试的难度也远大于熟悉的 Mac,WinUI 的界面在 Mac 上编译不了,我的做法是代码编写和 AI 上下文都留在 Mac 这一台机器上,Mac 上装 Parallels Desktop 开一台 Windows 虚拟机做调试验证,再整一台 ThinkPad X1 让它 24 小时开着,看虚拟机里看不到的真实效果。这是我现在的工作台,中间是 Mac,左边是 ThinkPad X1,几块屏上开着的都是 Mole。
几个好用的做法
用 Mac 开发 Windows 软件这一个月,有几个做法感觉挺好用,分享给有同样需求的小伙伴:
- 代码分层,清理、卸载这些核心逻辑和界面状态放在不依赖 Windows 的 .NET 工程里,调用系统接口的那一层开了
EnableWindowsTargeting,在 Mac 上也能编译,4000 多个测试大部分在 Mac 上就能跑,只有 WinUI 界面这一层必须去 Windows 里编译。 - 仓库直接作为 Parallels 的共享文件夹挂到虚拟机里,Mac 上改完代码,虚拟机里直接编译运行,不用来回拷,两边的编译产物要分到不同目录,不然
obj里记的绝对路径会来回打架。 - 虚拟机用脚本来驱动,
prlctl exec在里面执行命令,再按控件的无障碍名字(UI Automation)去点按钮、截窗口,AI 不靠坐标也能准确点中,界面稍微变动也不会点偏。 - ThinkPad 通过 UU 远程和 ssh 连过去,真实的 x64、高分屏缩放、电池、SmartScreen 和 Defender 这些都在它上面看,每次发版前都要在它上面装一遍、点一遍。
- 实在没有命令行能走的地方,在 Claude 里通过 lcu 让它去调用 Codex 的 computer use,有一说一 Codex 的 computer use 是真的好用,不过 UAC 弹窗它是点不动的,这时候还得我自己上,哈哈。
平时一般是 Kaku 里面 7 到 10 个 Tab 的 Agent 同时在跑任务。
Windows 开发者证书很麻烦
Windows 上没签名的安装包,一打开就会被「Windows 已保护你的电脑」拦住,Windows 11 的智能应用控制更是直接不让运行,所以发布前我得先买一张代码签名证书。查的时候发现 EV 证书现在对 SmartScreen 已经没有加成,签了名的新程序一样要等装的人多了才不再提示无法识别,微软自己的 Azure Artifact Signing 一个月不到 10 美元最省事,可惜个人只开放给美国和加拿大,我用不上,Certum 便宜的开源证书又不允许商用。
最后买的是 Certum 的云端 OV 证书,一年一两百美元,密钥放在它的云端 HSM 里,签名时用手机上的 SimplySign 给一个动态码,证书上的名字是审核过的法定名称,SmartScreen 的信誉也跟着这个名字积累。用下来遇到过几次 SimplySign 的会话闲置几个小时后断开,打包到一半才报签名失败,后来我每次打包前都先试签一个文件。
花时间最多的是测软件
清理工具最怕删错东西,Windows 上每个软件的安装器和卸载器又各有各的写法,只能一款款装上去试。我按国内外工程师常用的列了一份名单,编辑器、IDE、浏览器、聊天、网盘、数据库、AI 工具都有,每一款装上、打开用一下,再看 Mole 的卸载、更新、残留清理和启动项认不认得它,到现在实测了 372 款,其中 72 款测出了问题,都是当轮修掉、补上测试再重测。有的问题还是我自己的环境带出来的,VS Code 第一次测就把 Parallels 给 Mac 版 VS Code 建的同名快捷方式也当成了它的残留,差点误伤。
功能上和 Mac 版基本一致,清理、软件卸载与更新、优化、空间分析、状态五个页面,加上托盘面板、屏幕常亮和清洁屏幕,支持 Windows 10 22H2 和 Windows 11,x64 和 ARM64 都有原生安装包。
还有一个命令行版
除了桌面版,Mole 的 Windows 命令行版其实年初就开始做了,最早是一位印度开发者提的需求,还顺手给我提了 PR,非常感谢,到现在 9 个半月发了 9 个版本,最近一个月我也在密集迭代,用法和体验基本和 Mac 的命令行版对齐了,开源免费,喜欢命令行的小伙伴可以直接去 GitHub 上用,它和桌面版的区别可以看这一篇。
桌面版的下载和价格在 mole.fit/windows,每个功能都可以先免费用两次再决定,欢迎有 Windows 电脑的小伙伴试试。