Skip to content

v0.6.0 — Phase 6: a real Windows installer

Choose a tag to compare

@SpaceSquare640 SpaceSquare640 released this 03 Aug 06:04
· 12 commits to main since this release

What's new — Phase 6: a real Windows installer

PixelPulse now ships as a single Windows installer (PixelPulse-Setup-v0.6.0-windows.exe), alongside the existing CLI-only zip. This closes the gap the CLI-only packaging left: previously the GUI only worked if you separately started the Python server by hand (python -m core.server) in a terminal before launching Electron.

  • The Python engine is bundled inside the installed app (via PyInstaller) and the GUI now starts it automatically in the background when you launch PixelPulse — no terminal, no manual server command, no separate Python install.
  • Rules and captured template images are stored per-user under %APPDATA%\PixelPulse\.
  • .github/workflows/release.yml builds and uploads this installer automatically on every release, right alongside the CLI-only bundle — both artifacts, one workflow.
  • Chose electron-builder's own NSIS installer target over the originally-planned separate Inno Setup step, once it was clear electron-builder already produces a complete, standalone Windows installer on its own — no reason to layer a second installer tool on top of it.

Verified by actually running the packaged build, not just building it: launched the real packaged app, confirmed it auto-spawns the bundled server, confirmed the GUI connects to it over the WebSocket, and confirmed a created rule persists correctly to %APPDATA%\PixelPulse\rules.json. That testing caught and fixed a real bug — Electron's app.getPath("userData") was resolving to %APPDATA%\gui (from package.json's internal package name) instead of %APPDATA%\PixelPulse, now fixed with an explicit app.setName("PixelPulse").

Known limitation: the interactive installer wizard itself (the click-through: welcome → choose folder → install → finish) wasn't verified by automation in this environment — driving that specific UI wasn't reliably scriptable here. The installer builds successfully and the packaged app's actual runtime behavior (the part that actually matters — does it start, does it connect, does it save your data) was fully verified as described above. A manual install/uninstall test checklist is included in the project's internal Phase 6 notes for anyone who wants to double-check the wizard itself. The installer is also unsigned (no code-signing certificate), so Windows SmartScreen will show an "unknown publisher" warning on first run — expected for an unsigned open-source build, not a sign of tampering.


新功能 — Phase 6:真正的 Windows 安裝檔

PixelPulse 現在打包成單一 Windows 安裝檔(PixelPulse-Setup-v0.6.0-windows.exe),跟既有的 CLI-only zip 並存。這補上了 CLI-only 打包留下的落差:之前 GUI 必須先手動另外啟動 Python 伺服器(python -m core.server)才能用。

  • Python 引擎已經打包進安裝好的 App 裡(透過 PyInstaller),GUI 啟動時會自動在背景啟動它——不需要終端機、不需要手動下伺服器指令,也不需要另外安裝 Python。
  • 規則與擷取到的樣板圖片存放在每個使用者各自的 %APPDATA%\PixelPulse\ 底下。
  • .github/workflows/release.yml 現在每次發佈都會自動建置並上傳這個安裝檔,跟 CLI-only 的壓縮檔一起放在同一個 Release 裡——一個 workflow,兩個附件。
  • 原本規劃是另外用 Inno Setup 整合安裝檔,這次改用 electron-builder 自己內建的 NSIS 安裝檔功能——確認它本身就能產出完整、獨立的 Windows 安裝檔之後,就沒有必要再疊一層額外的安裝工具。

驗證方式是真的執行打包後的版本,而不只是建置成功就算數:實際啟動打包後的 App,確認它會自動啟動內建的伺服器、確認 GUI 有透過 WebSocket 連上、確認建立的規則會正確存到 %APPDATA%\PixelPulse\rules.json。這次測試抓到並修正了一個真實的 bug——Electron 的 app.getPath("userData") 原本解析成 %APPDATA%\gui(來自 package.json 內部的套件名稱),而不是預期的 %APPDATA%\PixelPulse,現在用明確呼叫 app.setName("PixelPulse") 修正。

已知限制:互動式安裝精靈本身的點擊流程(歡迎頁 → 選安裝路徑 → 安裝 → 完成)沒有在這個環境裡用自動化工具驗證過——這個特定的 UI 操作在這裡沒辦法可靠地自動化操作。安裝檔本身建置成功,而上面說明的「打包後 App 實際運作行為」(真正重要的部分——它會不會啟動、會不會連線、會不會存好你的資料)已經完整驗證過。專案內部的 Phase 6 筆記裡附了一份安裝/解除安裝人工測試清單,給想親自再確認一次精靈本身的人參考。這個安裝檔也沒有數位簽章(沒有憑證),所以第一次執行時 Windows SmartScreen 會顯示「未知發行者」警告——這是未簽章開源建置的正常現象,不代表檔案被竄改過。