· RustDesk Team · 發布 · 3 分鐘閱讀
如何讓 Flutter 3.24 在 Windows 7 上執行?
Flutter 自 3.22 起停止支援 Windows 7 / 8,因此需要修改 Flutter 引擎以恢復 Windows 7 支援。

我們最近在 RustDesk 中導入 Flutter 3.24.5,結果程式無法在 Windows 7 上執行。為解決此問題,我們嘗試修改 Flutter Engine。
在 Windows 7 上執行 Flutter 3.24.5 的方案
Flutter 與 Dart 官方已宣布,Dart 3.3 和 Flutter 3.19 是最後支援 Windows 7、8 的版本。因此 Flutter 3.24.5 無法直接在 Windows 7 執行。要恢復支援,必須撤銷 Dart 中的部分變更。
相關連結:官方公告
1. 修正中文環境中的 Platform.localHostname
Dart 原先使用 gethostname API,這會使 Platform.localHostname 在中文環境中失敗。Dart 因而改用僅支援 Windows 8 以上版本的 GetHostNameW API。為讓 Flutter 在 Windows 7 執行,需要撤銷此變更;但這會影響中文環境中的 Platform.localHostname。
相關 Issue:Platform.localHostname fails on Chinese Windows
2. 恢復 Windows 7 的展開記錄 API 處理
Dart 曾針對 Windows 7 缺少 RtlAddGrowableFunctionTable API 做相容處理,但之後移除了這項修改。為保持相容,需要撤銷移除該處理的提交。
相關 Commit:Remove Windows7 handling of unwinding records API
3. 修正 Windows 目錄相對符號連結問題
Dart 修正目錄相對符號連結時修改了 File::GetType,卻使用僅支援 Windows 8 以上版本的 PathCchCombineEx API。為恢復 Windows 7 支援,也需要撤銷此修改。
相關 Commit:Fix a bug where relative symlinks to directories did not work on Windows
結論
要讓 Flutter 3.24.5 在 Windows 7 執行,必須撤銷 Dart 的幾項關鍵修改。這會帶來副作用,包括影響中文環境的 Platform.localHostname 與目錄相對符號連結;但對仍依賴 Windows 7 的使用者而言,這些步驟不可或缺。
完整實作請參閱我們的 CI。
這裡展示如何在專案中套用修改後的引擎。



