diff --git a/src/main/index.ts b/src/main/index.ts index c25cd27..b8e4d45 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -8,6 +8,7 @@ import Constants from './utils/Constants'; let mainWindow; let errorWindow; +let autoUpdater: AutoUpdater | null = null; const initializeMainLogger = () => { log.initialize({ diff --git a/src/renderer/App.vue b/src/renderer/App.vue index 5c80630..78e0aaf 100644 --- a/src/renderer/App.vue +++ b/src/renderer/App.vue @@ -55,7 +55,8 @@ const checkForUpdates = async () => { if (result.updateAvailable) { // 发现新版本,显示更新提示 - appStore.setUpdateStatus('available', result.currentVersion); + appStore.setUpdateStatus('available', result.currentVersion, undefined, result.updateInfo); + console.log('发现新版本:', result.updateInfo); } else { // 当前已是最新版本 appStore.setUpdateStatus('not-available', result.currentVersion); diff --git a/src/renderer/components/UpdateDialog.vue b/src/renderer/components/UpdateDialog.vue index 6586295..3135f2d 100644 --- a/src/renderer/components/UpdateDialog.vue +++ b/src/renderer/components/UpdateDialog.vue @@ -20,7 +20,7 @@ const dialogVisible = computed({ || (updateStatus.value.status === 'error' && !!updateStatus.value.error); }, set: (value: boolean) => { - if (value) { + if (!value) { appStore.showUpdateDialog(); } else { appStore.hideUpdateDialog(); @@ -29,8 +29,8 @@ const dialogVisible = computed({ }); const latestVersion = computed(() => { - // 这里应该从API获取最新版本号,暂时使用固定值 - return `v${(updateStatus.value.currentVersion || '1.0.0').replace(/^v?/, '').split('.').map((n, i) => + // 优先使用更新信息中的版本号 + return updateStatus.value.updateInfo?.version || `v${(updateStatus.value.currentVersion || '1.0.0').replace(/^v?/, '').split('.').map((n, i) => i === 2 ? (Number.parseInt(n) + 1).toString() : n, ).join('.')}`; }); diff --git a/src/renderer/plugins/i18n.ts b/src/renderer/plugins/i18n.ts index 2f8d3c1..49fd628 100644 --- a/src/renderer/plugins/i18n.ts +++ b/src/renderer/plugins/i18n.ts @@ -13,8 +13,8 @@ import zhHant from '@/renderer/locales/zh-hant.json'; import { getCurrentLocale } from '@/renderer/utils'; export default createI18n({ - locale: getCurrentLocale(), - fallbackLocale: 'en', + locale: 'zhHans', + fallbackLocale: 'zhHans', globalInjection: true, messages: { en, diff --git a/src/renderer/store/app.ts b/src/renderer/store/app.ts index c4516b2..162a6d2 100644 --- a/src/renderer/store/app.ts +++ b/src/renderer/store/app.ts @@ -3,6 +3,11 @@ import { defineStore } from 'pinia'; export interface UpdateStatus { status: 'idle' | 'checking' | 'available' | 'not-available' | 'downloading' | 'downloaded' | 'error'; currentVersion?: string; + updateInfo?: { + version: string; + releaseName: string; + releaseNotes: string; + }; error?: string; progress?: number; } @@ -23,8 +28,8 @@ export const useAppStore = defineStore('app', { }, actions: { - setUpdateStatus(status: UpdateStatus['status'], currentVersion?: string, error?: string) { - this.updateStatus = { status, currentVersion, error }; + setUpdateStatus(status: UpdateStatus['status'], currentVersion?: string, error?: string, updateInfo?: UpdateStatus['updateInfo']) { + this.updateStatus = { status, currentVersion, error, updateInfo }; }, showUpdateDialog() {