繁體中文

問題修復

Windows 啟動崩潰已修復,打包不再遺漏模組

Windows 在 v0.29.34 至 v0.29.36 啟動時當機。

0.29.34 重構把 wintray.py 與 tui.py 移入 wintray/app.py 和 tui/app.py,scripts/build_windows.ps1 仍隱藏匯入舊模組名。兩套件 __init__.py 皆為空,PyInstaller 因而只打包空殼,遺漏 wintray 依賴樹(panels.* 與 updates.* 等);下載者遇 ModuleNotFoundError: No module named 'wintray.app',TUI 備援也因缺 tui.app 失敗。macOS 未受影響,setup_app.py 經 py2app 依名稱收集套件,改名後仍相符。

新功能

建置腳本檢查打包內容,防止釋出損壞的 Windows 執行檔

過去 Windows 建置腳本 build_windows.ps1 只檢查 .exe 檔案是否存在,才讓前述三個損壞版本在無人察覺下釋出——檔案確實存在,卻缺少使用者需要的模組。現在 build_windows.ps1 會以 archive_viewer 讀取 PyInstaller 保存庫內容;若遺漏 wintray.app 或 tui.app 任一進入點模組便直接拋出錯誤。這確保未來若發生退化,會在發布任務中直接失敗,不再釋出損壞的產物。

English

BUGFIX

Windows startup crash is fixed, and packaging no longer drops modules

Windows crashed on startup in v0.29.34 through v0.29.36.

The 0.29.34 refactor moved wintray.py and tui.py to wintray/app.py and tui/app.py, but scripts/build_windows.ps1 still hidden-imported the old top-level module names. Because __init__.py in both packages is empty, PyInstaller only packaged empty shells and dropped the wintray dependency tree (panels.*, updates.*, and more). Every downloader hit ModuleNotFoundError: No module named 'wintray.app', and the TUI fallback failed because tui.app was also missing. macOS was unaffected because setup_app.py collects the whole package by name via py2app, which still matched after the rename.

FEATURE

Build script inspects archive contents to prevent shipping broken Windows executables

The Windows build script build_windows.ps1 previously only checked that an .exe file existed, which is why the three broken releases shipped without anyone noticing — the file was there, but missing the modules users needed. build_windows.ps1 now reads the PyInstaller archive contents with archive_viewer and throws if either wintray.app or tui.app entry-point module is missing. This ensures any future regression fails the release job instead of shipping a broken artifact.

原始 CHANGELOG

Original changelogWindows 啟動崩潰已修復,打包不再遺漏模組
**Windows crashed on startup in v0.29.34 through v0.29.36.** The 0.29.34 refactor moved `wintray.py` to `wintray/app.py` and `tui.py` to `tui/app.py`, but `scripts/build_windows.ps1` still hidden-imported the old top-level module names. Both packages' `__init__.py` are empty, so PyInstaller packaged only empty shells and dropped the whole `wintray` dependency tree (`panels.*`, `updates.*`, and more) along with it — every downloader hit `ModuleNotFoundError: No module named 'wintray.app'`, and the TUI fallback failed the same way since `tui.app` was missing too. macOS was unaffected; `setup_app.py` collects the whole package by name via py2app, and the names still matched after the rename.
Original changelog建置腳本檢查打包內容,防止釋出損壞的 Windows 執行檔
**The Windows build script now verifies the packaged exe actually contains `wintray.app` and `tui.app`.** It previously only checked that an exe file existed, which is why the three broken releases above shipped without anyone noticing — the file was there, just missing the modules users needed. `build_windows.ps1` now reads the PyInstaller archive contents with `archive_viewer` and throws if either entry-point module is missing, so a future regression fails the release job instead of shipping a broken artifact.