diff --git a/apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx b/apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx
index 16feb1f76..48980e2ab 100644
--- a/apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx
+++ b/apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx
@@ -22,6 +22,7 @@ import {
closeDialogOnEscape,
useEscapeToClose,
} from '../../app/dialogs';
+import { appUpdateCheckEnabled } from '../../app/featureFlags';
import { resolveTauriInvoke } from '../../app/tauri';
import {
type AgcPluginPanel,
@@ -1332,18 +1333,20 @@ export function RuntimeConfigDialog({
桌面客户端
-
-
-
- {appUpdateStatus}
-
-
+ {appUpdateCheckEnabled ? (
+
+
+
+ {appUpdateStatus}
+
+
+ ) : null}
) : null}
diff --git a/apps/ai-game-creator-shell/src/services/appUpdate.ts b/apps/ai-game-creator-shell/src/services/appUpdate.ts
index f9021f3d0..188909bc8 100644
--- a/apps/ai-game-creator-shell/src/services/appUpdate.ts
+++ b/apps/ai-game-creator-shell/src/services/appUpdate.ts
@@ -1,124 +1,58 @@
-import { fetch as tauriHttpFetch } from '@tauri-apps/plugin-http';
-import { openUrl } from '@tauri-apps/plugin-opener';
+import {
+ check,
+ type DownloadEvent,
+ type Update,
+} from '@tauri-apps/plugin-updater';
-import { APP_VERSION } from '../app/appMetadata';
+import { appUpdateCheckEnabled } from '../app/featureFlags';
import { resolveTauriInvoke } from '../app/tauri';
-/** OSS 上的 AGC 更新清单;发布时可覆盖为同一受信任 OSS 域名下的地址。 */
-export const AGC_UPDATE_MANIFEST_URL =
- import.meta.env.VITE_AGC_UPDATE_MANIFEST_URL?.trim() ||
- 'https://agc-dev.oss-rg-china-mainland.aliyuncs.com/agc/latest.json';
-export const AGC_UPDATE_DOWNLOAD_PROGRESS_EVENT =
- 'agc-update-download-progress';
-
-export type AppUpdateManifest = {
+/** 更新提示所需的元数据;清单请求、版本比较、下载、校验与安装都由官方更新插件在原生侧完成。 */
+export type AppUpdateInfo = {
version: string;
- downloadUrl: string;
- sha256?: string;
- size?: number;
+ currentVersion: string;
releaseNotes?: string;
};
-export type AppUpdateInfo = AppUpdateManifest & {
- currentVersion: string;
+export type AppUpdateProgress = {
+ downloadedBytes: number;
+ totalBytes?: number;
};
+let pendingUpdate: Update | null = null;
let updateCheckPromise: Promise