mirror of
https://github.com/EasyTier/EasytierGame.git
synced 2026-10-19 16:16:35 +00:00
新增下载内核进度条以及github加速时节点发布地址按钮
This commit is contained in:
+1
-1
@@ -3,7 +3,7 @@
|
||||
"private": true,
|
||||
"author": "leizi97",
|
||||
"description": "A simple network initiator based on Easytier",
|
||||
"version": "1.4.0",
|
||||
"version": "1.4.1",
|
||||
"scripts": {
|
||||
"dev": "nuxt dev --dotenv env/.env.dev --host 0.0.0.0",
|
||||
"build": "nuxt generate --dotenv env/.env.prod",
|
||||
|
||||
+34
-3
@@ -437,8 +437,11 @@
|
||||
>
|
||||
<div>
|
||||
<ElText>当前版本: {{ data.coreVersion || "-" }}</ElText>
|
||||
<div v-if="data.update">
|
||||
<ElProgress :percentage="progress"></ElProgress>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-[10px] pb-[5px]">
|
||||
<div class="mt-[5px] pb-[5px]">
|
||||
<ElText class="!mr-[10px]">选择一个内核版本安装</ElText>
|
||||
<ElButton
|
||||
:loading="coreManagementData.loading"
|
||||
@@ -481,7 +484,13 @@
|
||||
<ElInput
|
||||
v-model="mainStore.githubFastUrl"
|
||||
placeholder="请输入github加速地址"
|
||||
></ElInput>
|
||||
>
|
||||
<template #append>
|
||||
<ElTooltip content="github加速链接的发布地址,当前地址失效后,访问它获取最新的地址">
|
||||
<ElButton @click="open('https://ghproxy.link/')">发布地址</ElButton>
|
||||
</ElTooltip>
|
||||
</template>
|
||||
</ElInput>
|
||||
<template #footer>
|
||||
<div class="text-right">
|
||||
<ElButton
|
||||
@@ -682,7 +691,7 @@
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
import { listen } from "@tauri-apps/api/event";
|
||||
import { listen, type UnlistenFn } from "@tauri-apps/api/event";
|
||||
import { open, Command } from "@tauri-apps/plugin-shell";
|
||||
import {
|
||||
QuestionFilled,
|
||||
@@ -1024,11 +1033,17 @@
|
||||
// await getReleaseList();
|
||||
};
|
||||
|
||||
let unlistenDownload: UnlistenFn | null = null;
|
||||
let unlistenDownloadError: UnlistenFn | null = null;
|
||||
let progress = ref<number>(0);
|
||||
let size = 0;
|
||||
const handleInstallCore = async () => {
|
||||
try {
|
||||
if (!coreManagementData.data) {
|
||||
return ElMessage.error("请选择一个内核");
|
||||
}
|
||||
progress.value = 0;
|
||||
size = 0;
|
||||
data.update = true;
|
||||
await getCoreVersion();
|
||||
const [isNeedUpdate, downloadUrl, latestVersionFileName] = await checkUpdate();
|
||||
@@ -1036,6 +1051,22 @@
|
||||
if (isNeedUpdate) {
|
||||
await reset();
|
||||
// console.error(downloadUrl);
|
||||
if (unlistenDownload) {
|
||||
await unlistenDownload();
|
||||
}
|
||||
if (unlistenDownloadError) {
|
||||
await unlistenDownloadError();
|
||||
}
|
||||
unlistenDownload = await listen<[number, number]>("download_core_progress", ({ payload }) => {
|
||||
size += payload[0];
|
||||
progress.value = Math.round((size / payload[1]) * 100);
|
||||
});
|
||||
unlistenDownloadError = await listen("download_core_progress_error", () => {
|
||||
data.update = false;
|
||||
progress.value = 0;
|
||||
size = 0;
|
||||
ElMessage.error("发生错误,请重试");
|
||||
});
|
||||
await invoke("download_easytier_zip", { download_url: downloadUrl, file_name: latestVersionFileName });
|
||||
}
|
||||
await getCoreVersion();
|
||||
|
||||
Generated
+1
-1
@@ -1290,7 +1290,7 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125"
|
||||
|
||||
[[package]]
|
||||
name = "easytier-game"
|
||||
version = "1.4.0"
|
||||
version = "1.4.1"
|
||||
dependencies = [
|
||||
"hashbrown 0.15.2",
|
||||
"log",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "easytier-game"
|
||||
version = "1.4.0"
|
||||
version = "1.4.1"
|
||||
homepage = "https://github.com/EasyTier/EasyTier"
|
||||
repository = "https://github.com/EasyTier/EasytierGame"
|
||||
description = "A simple network initiator based on Easytier"
|
||||
@@ -47,6 +47,7 @@ tauri-plugin-dialog = "2.2.0"
|
||||
# prost = "0.13"
|
||||
# prost-types = "0.13"
|
||||
hashbrown = "0.15.2"
|
||||
# futures-util = "0.3"
|
||||
|
||||
[dependencies.windows]
|
||||
version = "0.58.0"
|
||||
|
||||
+18
-8
@@ -3,6 +3,7 @@ use planif::schedule::TaskScheduler as planIfTaskScheduler;
|
||||
use planif::schedule_builder::{Action, ScheduleBuilder};
|
||||
use planif::settings::{Duration, LogonType, PrincipalSettings, RunLevel};
|
||||
use reqwest::{Client, Error};
|
||||
// use futures_util::StreamExt;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::collections::HashMap;
|
||||
use std::fs::{self, File};
|
||||
@@ -325,7 +326,7 @@ async fn get_route_by_cli() -> String {
|
||||
}
|
||||
|
||||
#[tauri::command(rename_all = "snake_case")]
|
||||
async fn download_easytier_zip(download_url: String, file_name: String) {
|
||||
async fn download_easytier_zip(app_handle: tauri::AppHandle ,download_url: String, file_name: String) {
|
||||
let cache_dir_path = get_tool_exe_path("\\easytier\\cache");
|
||||
let cache_file_name = format!("{}\\{}", cache_dir_path, file_name);
|
||||
let cache_file_name_path = path::Path::new(&cache_file_name);
|
||||
@@ -335,12 +336,12 @@ async fn download_easytier_zip(download_url: String, file_name: String) {
|
||||
}
|
||||
|
||||
let target = format!("{}", download_url);
|
||||
let response = reqwest::get(target)
|
||||
let mut response = reqwest::get(target)
|
||||
.await
|
||||
.expect("error to download easytier url");
|
||||
let easytier_path = get_tool_exe_path("\\easytier");
|
||||
let file_path = format!("{}\\{}", easytier_path, file_name);
|
||||
println!("download easytier to {}", file_path);
|
||||
// println!("download easytier to {}", file_path);
|
||||
|
||||
let easytier_dir = path::Path::new(&easytier_path);
|
||||
if !easytier_dir.exists() {
|
||||
@@ -354,11 +355,20 @@ async fn download_easytier_zip(download_url: String, file_name: String) {
|
||||
Err(why) => panic!("couldn't create {}", why),
|
||||
Ok(file) => file,
|
||||
};
|
||||
|
||||
let content = response.bytes().await.expect("error to bytes easytier");
|
||||
println!("下载完成,开始写入");
|
||||
file.write_all(&content).expect("error to write easytier");
|
||||
println!("写入完成");
|
||||
let context_size: u64 = response.content_length().unwrap();
|
||||
while let Some(item) = response.chunk().await.unwrap() {
|
||||
match file.write_all(&item) {
|
||||
Ok(_) => {
|
||||
app_handle.emit("download_core_progress", [item.len() as u64, context_size]).expect("error to emit download_core_progress");
|
||||
},Err(why) => {
|
||||
log::error!("error to write file: {}", why);
|
||||
app_handle.emit("download_core_progress_error", why.to_string()).expect("error to emit download_core_progress_error");
|
||||
return
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
println!("下载完成");
|
||||
unzip(path);
|
||||
|
||||
let cache_dir_path = path::Path::new(&cache_dir_path);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
|
||||
"productName": "easytier-game",
|
||||
"version": "1.4.0",
|
||||
"version": "1.4.1",
|
||||
"identifier": "com.tauri.easytier-game",
|
||||
|
||||
"build": {
|
||||
@@ -12,7 +12,7 @@
|
||||
"app": {
|
||||
"windows": [
|
||||
{
|
||||
"title": "easytier-game 1.4.0",
|
||||
"title": "easytier-game 1.4.1",
|
||||
"label": "main",
|
||||
"minWidth": 340,
|
||||
"width": 340,
|
||||
|
||||
Reference in New Issue
Block a user