自動更新
Oleafly 如何建置、簽署、驗證並發布跨平台的更新摘要來源(feed)。
Oleafly 使用 Tauri 的更新外掛。啟動時,應用程式會檢查最新的 GitHub 發行版本,有新版本時會開啟自己的更新視窗。使用者也可以從應用程式選單或 關於 → 檢查更新 手動檢查。
發行摘要來源(feed)
標題為「發行摘要來源(feed)」的段落每個平台的建置都會產生簽署過的更新產出檔和一份 latest.json 片段。發行工作流程會讓這些片段保持分開,直到四個建置全部完成,再把各目標所擁有的項目合併成一份標準的資訊清單。
最終的資訊清單必須包含 macOS Apple Silicon、Windows x64、Linux x64 和 Linux ARM64 的項目。在維護者執行有防護的發布工作流程之前,它會一直附在草稿發行版本上。已安裝的應用程式看不到草稿。
應用程式從 GitHub Releases 下載 latest.json。安裝之前,Tauri 會用內嵌在 src-tauri/tauri.conf.json 中的公開金鑰驗證更新程式的簽章。缺少、未簽署或遭到竄改的產出檔都會被拒絕。
版本資訊取自 CHANGELOG.md 中對應的章節。工作流程會擷取該章節,同時用於 GitHub 發行版本的內文和更新視窗。
簽署金鑰
標題為「簽署金鑰」的段落公開的更新金鑰提交在 src-tauri/tauri.conf.json 中。私密金鑰只能放在 GitHub Actions 的機密中:
TAURI_SIGNING_PRIVATE_KEYTAURI_SIGNING_PRIVATE_KEY_PASSWORD
絕對不要提交私密金鑰。如果它外洩,請產生新的金鑰組,更新儲存庫機密,並替換內嵌的公開金鑰。既有的安裝會信任它們內嵌的金鑰,因此更換金鑰需要事先規劃好的手動更新途徑。
作業系統的簽署與更新程式的簽署是兩回事。有發行機密時,macOS 的建置會使用 Apple 程式碼簽署與公證。有憑證時,Windows 的建置會使用 Azure Artifact Signing。
失敗與回復
標題為「失敗與回復」的段落檢查或下載失敗時,已安裝的應用程式不會有任何變動。簽章驗證失敗會阻擋安裝。只有在驗證過的下載成功安裝之後,應用程式才會重新啟動。
Oleafly 不會自動回復已完成的更新。要回到較早的版本,請關閉應用程式,備份重要的專案,下載較早的官方安裝程式並驗證,然後安裝在目前的版本上。
草稿與發布的流程,請參閱 發行 Oleafly。