我們建議為所有 Firefox 部署保持啟用自動更新,以確保套用最新的安全性修補程式並可使用所有功能,但您的特定環境可能會阻止自動更新。
Firefox Rapid Release 和 Firefox Extended Support Release 皆可用於您的企業環境。如果您擔心頻繁的大型更新,我們建議查看 選擇 Firefox 更新通道 以了解更多關於 Firefox Extended Support Release 的資訊。
| 主要更新頻率 | 主要更新範圍 | 次要更新頻率 | 次要更新範圍 | |
|---|---|---|---|---|
| ESR | 每年 | 交付過去 12 個月的新功能並修復錯誤。 | 每 2 週或必要時 | 重大穩定性或安全性錯誤修復 |
| RR | 每兩週 | 交付過去 2 週的新功能並修復錯誤。 | 必要時於主要版本之間發布 | 重大穩定性或安全性錯誤修復 |
停用 Firefox 更新
自動更新預設為啟用,但您可以使用 DisableAppUpdate 政策 將其停用。
啟用更新後,可以透過啟用 AppAutoUpdate 政策 來在未經使用者核准的情況下,以靜默方式安裝更新。
排解 Firefox 更新問題
如果工作站未收到 Firefox 更新,以下的 PowerShell 檢查可以幫助找出根本原因。
檢查本機群組原則 (GPO) 登錄機碼
執行以下指令:
Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Mozilla\Firefox" |
Select-Object DisableAppUpdate, AppAutoUpdate
預期值:
| 登錄值 | 預期值 |
|---|---|
DisableAppUpdate
| 0 |
AppAutoUpdate
| 1 |
如果這些值未如預期設定,Firefox 更新可能已被本機或網域群組原則停用。
檢查已安裝的 Firefox 版本
執行以下 PowerShell 指令:
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" |
Where-Object { $_.PSChildName -like "Mozilla Firefox*" } |
ForEach-Object {
Get-ItemProperty $_.PsPath |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate
}
將安裝的版本與 Mozilla 網站上提供的最新 Firefox ESR 版本進行比較。
檢查排程工作
Firefox 依賴背景排程工作來下載和套用更新。
執行以下 PowerShell 指令:
Get-ScheduledTask |
Where-Object { $_.TaskName -like "*Firefox Background Update*" } |
ForEach-Object { Get-ScheduledTaskInfo $_ }
→ 請確保:
- 工作存在
- 工作已啟用
- 工作成功執行且無錯誤
檢查 Mozilla 維護服務
在 Windows 上,Firefox 更新可能需要安裝並執行 Mozilla 維護服務。此服務允許 Firefox 在不需要管理員權限的情況下套用更新。
檢查服務是否存在及其狀態
執行以下 PowerShell 指令:
Get-Service -Name MozillaMaintenance -ErrorAction SilentlyContinue |
Select-Object Name, DisplayName, Status, StartType
→ 預期行為:
- 服務存在
- 狀態為
Running(或Stopped,但能夠啟動) -
StartType設定為Automatic或Manual - 如果服務遺失,Firefox 可能無法自動套用更新。
手動啟動服務 (若有需要)
如果服務存在但未執行,請嘗試啟動它。執行以下 PowerShell 指令:
Start-Service -Name MozillaMaintenance
再次檢查服務是否能無錯誤地啟動。
重新安裝 Mozilla 維護服務
如果服務遺失或損毀,可以使用 Firefox 安裝程式重新安裝:
- 下載與您的部署相符的 Firefox 安裝程式(ESR 或標準版)。
- 以管理員身分執行安裝程式。
- 確保已選取「安裝 Mozilla 維護服務」。
安裝後,重新檢查服務狀態。
更新期間 UAC 提示要求管理員憑證
在某些工作站上,即使 Mozilla 維護服務已安裝且運作正常,更新仍會觸發一個標題為「Firefox Updater Software」的 UAC 提示,要求管理員憑證。標準使用者無法完成更新,且每次啟動 Firefox 時都會重新出現此提示。
原因
在使用維護服務之前,Firefox 更新程式會檢查工作站的 UAC 設定(更新程式原始碼中的 IsUnpromptedElevation 測試)。如果 UAC 設定為靜默提升權限,Firefox 會假設提升權限將在沒有任何提示的情況下發生——就像對管理員一樣——並跳過維護服務。但如果登入的使用者實際上不是管理員,提升權限並非靜默,Windows 會改為顯示 UAC 憑證提示。
這種情況只在同時滿足以下所有三個條件時發生:
-
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ConsentPromptBehaviorAdmin設定為0(安全性選項「使用者帳戶控制:管理員核准模式中管理員的提高權限提示行為」=「不提示直接提高權限」;Windows 預設值為5) -
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\PromptOnSecureDesktop設定為0(安全性選項「使用者帳戶控制:提示提高權限時切換到安全桌面」=「已停用」;Windows 預設值為1) - 登入的使用者具有UAC 過濾權杖:屬於特權群組(Administrators、Backup Operators、Power Users 等)的成員,包括標記為「僅拒絕」的群組,或持有透過群組原則授予的敏感權限(例如
SeBackupPrivilege或SeDebugPrivilege)。請注意,基於權限的過濾在whoami /groups中不可見。
診斷
檢查更新程式日誌中是否有以下特徵:
Get-Content "C:\ProgramData\Mozilla-1de4eec8-1241-4177-a864-e594e8d1fb38\updates\*\updates\0\update.log"
...
After checking IsUnpromptedElevation, useService=false
Elevating via a UAC prompt
Writing status to file: failed: 9
...
在 IsUnpromptedElevation 檢查後的 useService=false 行確認了此原因(錯誤 9 表示使用者取消了 UAC 提示)。注意:在第一次失敗後,後續的日誌會從第一行就顯示 useService=false,而沒有 After checking... 的行(殘留狀態,請參閱解決方案)。
然後檢查 UAC 值和待處理的更新狀態:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v PromptOnSecureDesktop
Get-Content "C:\ProgramData\Mozilla-1de4eec8-1241-4177-a864-e594e8d1fb38\updates\*\updates\0\update.status"
可能的 update.status 值:
| 值 | 意義 |
|---|---|
pending-service
| 已下載更新,將使用維護服務(正常) |
pending
| Firefox 已放棄在此次更新中使用維護服務(失敗後的殘留狀態) |
applied-service
| 已透過維護服務成功套用更新 |
解決方案
- 關閉 Firefox。
- 在提升權限的 PowerShell 中執行以下指令:
- 還原管理員的預設 UAC 提高權限提示行為
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 5 /f
- 重新啟用提高權限提示的安全桌面
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v PromptOnSecureDesktop /t REG_DWORD /d 1 /f
- 清除殘留的更新狀態(否則提示會最後再出現一次)
Remove-Item "C:\ProgramData\Mozilla-1de4eec8-1241-4177-a864-e594e8d1fb38\updates\*\*" -Recurse -Force
- 還原管理員的預設 UAC 提高權限提示行為
- 啟動 Firefox,前往「說明」>「關於 Firefox」,並等待「重新啟動以更新 Firefox」。
- 重新啟動 Firefox:更新必須在沒有任何 UAC 提示的情況下套用。
→ 備註:
- 還原兩個 UAC 值中的任何一個都足以打破錯誤的條件;同時還原兩者可將工作站恢復到 Windows 預設值。
- 如果這些 UAC 值是由網域群組原則強制執行的,它們將在下一次原則重新整理時被重設(使用
gpupdate /force檢查)——此時必須在 GPO 層級套用修復。 - 或者,將使用者從特權群組中移除(然後登出再登入)也可以解決此問題。
驗證
更新後,新的 update.log 包含 After checking IsUnpromptedElevation, useService=true,且 update.status 顯示 applied-service。
檢查 BITS 傳輸(背景智慧型傳輸服務)
Firefox 使用 BITS 在背景下載更新。
執行以下 PowerShell 指令:
Get-BitsTransfer |
Where-Object { $_.DisplayName -match 'mozilla' -or $_.RemoteName -match 'mozilla' } |
ForEach-Object {
$job = $_
foreach ($file in $job.FileList) {
[PSCustomObject]@{
DisplayName = $job.DisplayName
JobState = $job.JobState
BytesTransferredMB = [math]::Round($file.BytesTransferred / 1MB, 2)
BytesRemainingMB = [math]::Round(($file.BytesTotal - $file.BytesTransferred) / 1MB, 2)
ProgressPercent = if ($file.BytesTotal -gt 0) {
[math]::Round(($file.BytesTransferred / $file.BytesTotal * 100), 2)
} else { 0 }
RemoteURL = $file.RemoteName
LocalPath = $file.LocalName
}
}
}
→ 檢查項目
- JobState 顯示目前的傳輸狀態(傳輸中、已暫停、已完成或錯誤)。
- ProgressPercent 指示下載進度。
- RemoteURL 顯示 Firefox 用於擷取更新的 URL。
→ 若下載被封鎖
如果進度沒有推進或工作失敗,請確認 RemoteURL 中顯示的 URL 未被您的網路、防火牆或代理伺服器封鎖。
要確認,請將 URL 複製並貼到瀏覽器中,檢查下載是否能成功開始。
列出 C:\ProgramData 中與 Firefox 相關的檔案
Firefox 更新檔案會下載並儲存在以下位置。
執行以下 PowerShell 指令:
Get-ChildItem -Path "C:\ProgramData\Mozilla-*" -Recurse |
Select-Object @{ Name="Path"; Expression={$_.FullName} },
@{ Name="Type"; Expression={ if ($_.PSIsContainer) { "Directory" } else { "File" } } },
@{ Name="Size"; Expression={$_.Length} },
@{ Name="LastModified"; Expression={$_.LastWriteTime}
}
這有助於驗證更新檔案是否已下載,並識別不完整或停滯的檔案。