fix(updater): add step and path to update failure hints

This commit is contained in:
zipg authored and GitHub committed 2026-09-18 22:47:25 +08:00
1 parent 2b075625f2
commit ab2ef4a66a
14 files changed
+127 -21

No files matched your search

@@ -206,9 +206,15 @@ export function useAppUpdater(options: UseAppUpdaterOptions = {}) {
const lower = message.toLowerCase();
if (lower.includes("cancel")) return t("updates.downloadCanceled");
if (lower.includes("403") || lower.includes("rate limit")) return t("updates.rateLimited");
// A blocked update cache is a local write problem, not a download problem.
if (lower.includes("update cache")) return t("updates.cacheWriteFailed", { error: message });
if (["stalled", "timeout", "all available mirrors", "error sending request", "failed to download"].some((part) => lower.includes(part))) return t("updates.networkOrMirrorFailed");
return t("updates.downloadFailed", { error: message });
}
function formatInstallError(message: string): string {
if (message.toLowerCase().includes("powershell")) return t("updates.portableHelperFailed", { error: message });
return t("updates.installFailed", { error: message });
}
async function checkUpdates(checkOptions: { silent?: boolean } = {}) {
if (disposed || isIgnoringUpdate.value) return;
if (!checkOptions.silent) showUpdateDialog.value = true;
@@ -393,7 +399,8 @@ export function useAppUpdater(options: UseAppUpdaterOptions = {}) {
failed = true;
phase.value = installed ? "restart" : "ready";
updateCheckFailed.value = true;
updateCheckMessage.value = t(installed ? "updates.restartFailed" : "updates.installFailed", { error: error instanceof Error ? error.message : String(error) });
const message = error instanceof Error ? error.message : String(error);
updateCheckMessage.value = installed ? t("updates.restartFailed", { error: message }) : formatInstallError(message);
} finally {
// Successful handoff must keep every window frozen until the process exits.
if (failed) {
+2
View File
@@ -362,6 +362,7 @@ export default withEnglishFallback({
windows7ManualUpdate: "Windows 7 üçün xüsusi WebView2 109 oflayn quraşdırıcısı tələb olunur. Yeniləmək üçün buraxılış səhifəsini açın və Windows 7 paketini endirin.",
downloading: "Endirilir: {progress}%",
downloadFailed: "Yeniləməni endirmək mümkün olmadı: {error}",
cacheWriteFailed: "Endirilən yeniləmə lokal keşə yazıla bilmədi: {error}. Antivirus proqramının DBX-i bloklamadığını və keş qovluğunun yazıla bilən olduğunu yoxlayıb yenidən cəhd edin.",
downloadCanceled: "Yeniləmənin endirilməsi ləğv edildi.",
readyToInstall: "DBX {version} quraşdırılmağa hazırdır.",
installNow: "İndi quraşdır",
@@ -371,6 +372,7 @@ export default withEnglishFallback({
sourceOfficial: "Rəsmi mənbə",
sourceCnb: "CNB",
installing: "Yeniləmə quraşdırılır...",
portableHelperFailed: "Daşınabilən yeniləmə köməkçisi işə salına bilmədi: {error}",
installFailed: "Yeniləməni quraşdırmaq mümkün olmadı: {error}",
restart: "Çıx və yenidən başlat",
restartFailed: "Tətbiqi yenidən başlatmaq mümkün olmadı: {error}",
+2
View File
@@ -505,6 +505,7 @@ export default {
windows7ManualUpdate: "Windows 7 requires the dedicated WebView2 109 offline installer. Open the release page and download the Windows 7 package to update.",
downloading: "Downloading {progress}%",
downloadFailed: "Update download failed: {error}",
cacheWriteFailed: "Could not store the downloaded update: {error}. Check whether antivirus software blocks DBX or the update cache folder is writable, then retry.",
downloadCanceled: "Update download canceled.",
readyToInstall: "DBX {version} is ready to install.",
installNow: "Install Now",
@@ -514,6 +515,7 @@ export default {
sourceOfficial: "Official source",
sourceCnb: "CNB",
installing: "Installing update...",
portableHelperFailed: "The portable update helper could not start: {error}",
installFailed: "Update installation failed: {error}",
restart: "Exit & Restart",
restartFailed: "Failed to restart app: {error}",
+2
View File
@@ -496,12 +496,14 @@ export default withEnglishFallback({
windows7ManualUpdate: "Windows 7 requiere el instalador sin conexión dedicado de WebView2 109. Abre la página de lanzamiento y descarga el paquete para Windows 7.",
downloading: "Descargando {progress}%",
downloadFailed: "Error al descargar la actualización: {error}",
cacheWriteFailed: "No se pudo guardar la actualización descargada en la caché local: {error}. Comprueba si el antivirus bloquea DBX o si la carpeta de caché permite escritura y vuelve a intentarlo.",
downloadCanceled: "Descarga de actualización cancelada.",
readyToInstall: "DBX {version} está listo para instalar.",
installNow: "Instalar ahora",
installedReadyToRestart: "DBX se ha actualizado. Reinicia para finalizar.",
networkOrMirrorFailed: "El tiempo de espera de la conexión de red se ha agotado o los espejos de descarga no están disponibles. Compruebe su red o haga clic en 'Abrir lanzamiento' para descargar manualmente.",
installing: "Instalando actualización...",
portableHelperFailed: "No se pudo iniciar el asistente de actualización portátil: {error}",
installFailed: "Error al instalar la actualización: {error}",
restart: "Salir y reiniciar",
restartFailed: "Error al reiniciar la aplicación: {error}",
+2
View File
@@ -495,12 +495,14 @@ export default withEnglishFallback({
windows7ManualUpdate: "Windows 7 richiede il programma di installazione offline dedicato WebView2 109. Apri la pagina della release e scarica il pacchetto per Windows 7.",
downloading: "Download in corso {progress}%",
downloadFailed: "Download dell'aggiornamento non riuscito: {error}",
cacheWriteFailed: "Impossibile salvare l'aggiornamento scaricato nella cache locale: {error}. Verifica se l'antivirus blocca DBX o se la cartella della cache è scrivibile, quindi riprova.",
downloadCanceled: "Download dell'aggiornamento annullato.",
readyToInstall: "DBX {version} è pronto per l'installazione.",
installNow: "Installa ora",
installedReadyToRestart: "DBX è stato aggiornato. Riavvia per completare.",
networkOrMirrorFailed: "Connessione di rete scaduta o server mirror temporaneamente non disponibili. Controlla la rete o fai clic su 'Apri Release' per scaricare manualmente.",
installing: "Installazione dell'aggiornamento...",
portableHelperFailed: "Impossibile avviare l'helper di aggiornamento portatile: {error}",
installFailed: "Installazione dell'aggiornamento non riuscita: {error}",
restart: "Esci e Riavvia",
restartFailed: "Impossibile riavviare l'app: {error}",
+2
View File
@@ -496,12 +496,14 @@ export default withEnglishFallback({
windows7ManualUpdate: "Windows 7 では専用の WebView2 109 オフラインインストーラーが必要です。リリースページから Windows 7 用パッケージをダウンロードして更新してください。",
downloading: "ダウンロード中 {progress}%",
downloadFailed: "アップデートのダウンロードに失敗しました: {error}",
cacheWriteFailed: "ダウンロードしたアップデートをローカルキャッシュに書き込めませんでした: {error}。ウイルス対策ソフトが DBX をブロックしていないか、キャッシュフォルダーに書き込めるかを確認してから再試行してください。",
downloadCanceled: "アップデートのダウンロードがキャンセルされました。",
readyToInstall: "DBX {version} のインストール準備ができました。",
installNow: "今すぐインストール",
installedReadyToRestart: "DBX が更新されました。再起動して完了してください。",
networkOrMirrorFailed: "ネットワーク接続がタイムアウトしたか、ミラーサーバーにアクセスできません。ネットワークを確認するか、「リリースページを開く」をクリックして手動でダウンロードしてください。",
installing: "アップデートをインストール中...",
portableHelperFailed: "ポータブル版アップデートのヘルパーを起動できませんでした: {error}",
installFailed: "アップデートのインストールに失敗しました: {error}",
restart: "終了して再起動",
restartFailed: "アプリの再起動に失敗しました: {error}",
+2
View File
@@ -503,12 +503,14 @@ export default withEnglishFallback({
windows7ManualUpdate: "Windows 7은 전용 WebView2 109 오프라인 설치 프로그램이 필요합니다. 릴리스 페이지를 열어 Windows 7 패키지를 다운로드하여 업데이트하세요.",
downloading: "다운로드 중 {progress}%",
downloadFailed: "업데이트 다운로드에 실패했습니다: {error}",
cacheWriteFailed: "다운로드한 업데이트를 로컬 캐시에 저장하지 못했습니다: {error}. 백신 프로그램이 DBX를 차단하는지 또는 캐시 폴더에 쓸 수 있는지 확인한 후 다시 시도하세요.",
downloadCanceled: "업데이트 다운로드가 취소되었습니다.",
readyToInstall: "DBX {version} 설치 준비가 완료되었습니다.",
installNow: "지금 설치",
installedReadyToRestart: "DBX가 업데이트되었습니다. 다시 시작하여 완료하세요.",
networkOrMirrorFailed: "네트워크 연결 시간이 초과되었거나 다운로드 미러에 연결할 수 없습니다. 네트워크를 확인하거나 '릴리스 열기'를 클릭하여 수동으로 다운로드하세요.",
installing: "업데이트 설치 중...",
portableHelperFailed: "포터블 업데이트 도우미를 시작하지 못했습니다: {error}",
installFailed: "업데이트 설치에 실패했습니다: {error}",
restart: "종료 후 다시 시작",
restartFailed: "앱을 다시 시작하는 데 실패했습니다: {error}",
+2
View File
@@ -496,12 +496,14 @@ export default withEnglishFallback({
windows7ManualUpdate: "O Windows 7 requer o instalador offline dedicado do WebView2 109. Abra a página da versão e baixe o pacote para Windows 7.",
downloading: "Baixando {progress}%",
downloadFailed: "Falha ao baixar a atualização: {error}",
cacheWriteFailed: "Não foi possível gravar a atualização baixada no cache local: {error}. Verifique se o antivírus bloqueia o DBX ou se a pasta de cache permite gravação e tente novamente.",
downloadCanceled: "Download da atualização cancelado.",
readyToInstall: "DBX {version} está pronto para instalar.",
installNow: "Instalar agora",
installedReadyToRestart: "O DBX foi atualizado. Reinicie para concluir.",
networkOrMirrorFailed: "O tempo de conexão esgotou ou os espelhos de download estão indisponíveis. Verifique sua rede ou clique em 'Abrir Lançamento' para baixar manualmente.",
installing: "Instalando atualização...",
portableHelperFailed: "Não foi possível iniciar o assistente de atualização portátil: {error}",
installFailed: "Falha ao instalar a atualização: {error}",
restart: "Sair e Reiniciar",
restartFailed: "Falha ao reiniciar o aplicativo: {error}",
+2
View File
@@ -364,6 +364,7 @@ export default withEnglishFallback({
windows7ManualUpdate: "Windows 7 için özel WebView2 109 çevrimdışı yükleyicisi gerekir. Güncellemek için sürüm sayfasını açıp Windows 7 paketini indirin.",
downloading: "İndiriliyor %{progress}",
downloadFailed: "Güncelleme indirilemedi: {error}",
cacheWriteFailed: "İndirilen güncelleme yerel önbelleğe yazılamadı: {error}. Antivirüs yazılımının DBX'i engelleyip engellemediğini veya önbellek klasörünün yazılabilir olduğunu kontrol edip yeniden deneyin.",
downloadCanceled: "Güncelleme indirmesi iptal edildi.",
readyToInstall: "DBX {version} kuruluma hazır.",
installNow: "Şimdi Kur",
@@ -373,6 +374,7 @@ export default withEnglishFallback({
sourceOfficial: "Resmî kaynak",
sourceCnb: "CNB",
installing: "Güncelleme kuruluyor...",
portableHelperFailed: "Taşınabilir güncelleme yardımcısı başlatılamadı: {error}",
installFailed: "Güncelleme kurulumu başarısız: {error}",
restart: "Çık ve Yeniden Başlat",
restartFailed: "Uygulama yeniden başlatılamadı: {error}",
+2
View File
@@ -421,6 +421,7 @@ export default withEnglishFallback({
windows7ManualUpdate: "Windows 7 需要使用专用的 WebView2 109 离线安装包更新。请打开下载页并下载 Windows 7 安装包。",
downloading: "下载中 {progress}%",
downloadFailed: "更新下载失败:{error}",
cacheWriteFailed: "更新包写入本地缓存失败:{error}。请检查杀毒软件是否拦截 DBX、或缓存目录是否可写,然后重试。",
downloadCanceled: "已取消更新下载。",
readyToInstall: "DBX {version} 已下载完成,可以安装了。",
installNow: "立即安装",
@@ -430,6 +431,7 @@ export default withEnglishFallback({
sourceOfficial: "官方源",
sourceCnb: "CNB",
installing: "正在安装更新...",
portableHelperFailed: "便携版更新助手启动失败:{error}。便携版更新依赖 Windows PowerShell,可先安装或修复 PowerShell,也可打开下载页手动更新。",
installFailed: "更新安装失败:{error}",
restart: "退出并重启",
restartFailed: "重启应用失败:{error}",
+2
View File
@@ -499,12 +499,14 @@ export default withEnglishFallback({
windows7ManualUpdate: "Windows 7 需要使用專用的 WebView2 109 離線安裝套件更新。請開啟下載頁並下載 Windows 7 安裝套件。",
downloading: "下載中 {progress}%",
downloadFailed: "更新下載失敗:{error}",
cacheWriteFailed: "更新套件寫入本機快取失敗:{error}。請檢查防毒軟體是否攔截 DBX,或快取目錄是否可寫入,然後重試。",
downloadCanceled: "已取消更新下載。",
readyToInstall: "DBX {version} 已下載完成,可以安裝了。",
installNow: "立即安裝",
installedReadyToRestart: "DBX 已更新完成,重新啟動後生效。",
networkOrMirrorFailed: "網路連接超時或所有鏡像源暫不可用。請檢查網路狀態,或點擊“開啟下載頁”手動下載。",
installing: "正在安裝更新...",
portableHelperFailed: "可攜版更新助手啟動失敗:{error}。可攜版更新依賴 Windows PowerShell,可先安裝或修復 PowerShell,也可開啟下載頁手動更新。",
installFailed: "更新安裝失敗:{error}",
restart: "結束並重新啟動",
restartFailed: "重新啟動應用程式失敗:{error}",