我是怎麼在 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 專案裡,呼叫系統 API 的那一層開了
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 個分頁的 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 電腦的朋友試試。