diff --git a/next-env.d.ts b/next-env.d.ts
index 9edff1c..c4b7818 100644
--- a/next-env.d.ts
+++ b/next-env.d.ts
@@ -1,6 +1,6 @@
///
///
-import "./.next/types/routes.d.ts";
+import "./.next/dev/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/src-tauri/src/cmds.rs b/src-tauri/src/cmds.rs
index 85ff67c..75d60ce 100644
--- a/src-tauri/src/cmds.rs
+++ b/src-tauri/src/cmds.rs
@@ -346,9 +346,11 @@ pub async fn check_app_update(
app: tauri::AppHandle,
endpoint: Option,
include_prerelease: Option,
+ use_cdn: Option,
) -> Result
+ app.setUseCdn(e.target.checked)}
+ >
+ 使用 CDN 加速下载
+
+
+ {app.state.useCdn
+ ? "加速下载,避免 GitHub 无法正常访问"
+ : "直接从 GitHub 下载更新文件"}
+
diff --git a/src/components/cstb/UpdateChecker.tsx b/src/components/cstb/UpdateChecker.tsx
index d10cb90..ba0a07e 100644
--- a/src/components/cstb/UpdateChecker.tsx
+++ b/src/components/cstb/UpdateChecker.tsx
@@ -28,11 +28,13 @@ interface UpdateInfo {
interface UpdateCheckerProps {
customEndpoint?: string
includePrerelease?: boolean
+ useCdn?: boolean
}
export function UpdateChecker({
customEndpoint,
includePrerelease = false,
+ useCdn = true,
}: UpdateCheckerProps) {
const app = useAppStore()
const [checking, setChecking] = useState(false)
@@ -73,12 +75,25 @@ export function UpdateChecker({
setDownloadCompleted(false)
try {
- // 如果有自定义端点,使用自定义端点;否则使用默认端点(GitHub Release 或镜像源)
- const endpoint = customEndpoint || null
+ // 根据是否包含测试版来选择不同的 endpoint
+ // 如果提供了 customEndpoint,优先使用;否则根据 includePrerelease 动态选择
+ let endpoint: string | null = null
+ if (customEndpoint) {
+ // 如果提供了 customEndpoint,仍然使用它(用于特殊场景)
+ endpoint = customEndpoint
+ } else {
+ // 根据 includePrerelease 选择对应的 endpoint
+ if (includePrerelease) {
+ endpoint = "https://gh-info.okk.cool/repos/plsgo/cstb/releases/latest/pre/tauri"
+ } else {
+ endpoint = "https://gh-info.okk.cool/repos/plsgo/cstb/releases/latest/tauri"
+ }
+ }
const result = await invoke("check_app_update", {
endpoint: endpoint,
includePrerelease: includePrerelease,
+ useCdn: useCdn,
})
if (result) {
@@ -122,8 +137,8 @@ export function UpdateChecker({
setDownloadCompleted(false)
try {
- // 使用官方 updater 插件,不需要传递 downloadUrl
- await invoke("download_app_update")
+ // 使用官方 updater 插件,传递 useCdn 参数
+ await invoke("download_app_update", { useCdn: useCdn })
// 下载完成,标记状态
setDownloadProgress(100)
diff --git a/src/store/app.ts b/src/store/app.ts
index 8c56be1..2d16b18 100644
--- a/src/store/app.ts
+++ b/src/store/app.ts
@@ -12,6 +12,7 @@ const defaultValue = {
notice: "",
useMirror: true, // 默认使用镜像源(CDN 加速)
includePrerelease: false, // 默认不包含预发布版本
+ useCdn: true, // 默认使用 CDN 加速下载
autoStart: false,
startHidden: false,
hiddenOnClose: false,
@@ -34,6 +35,7 @@ export const useAppStore = () => {
setNotice,
setUseMirror,
setIncludePrerelease,
+ setUseCdn,
setAutoStart,
setStartHidden,
setHiddenOnClose,
@@ -66,6 +68,9 @@ const setUseMirror = (useMirror: boolean) => {
const setIncludePrerelease = (includePrerelease: boolean) => {
appStore.state.includePrerelease = includePrerelease
}
+const setUseCdn = (useCdn: boolean) => {
+ appStore.state.useCdn = useCdn
+}
const setAutoStart = (autoStart: boolean) => {
if (autoStart) {
@@ -99,6 +104,7 @@ const resetAppStore = () => {
setNotice(defaultValue.notice)
setUseMirror(defaultValue.useMirror)
setIncludePrerelease(defaultValue.includePrerelease)
+ setUseCdn(defaultValue.useCdn)
setAutoStart(defaultValue.autoStart)
void setStartHidden(defaultValue.startHidden)
setHiddenOnClose(defaultValue.hiddenOnClose)