From 900c1c75d4f4cbb23804e0f247c9cbf00a3306c5 Mon Sep 17 00:00:00 2001 From: mozzie Date: Wed, 14 Aug 2024 12:02:08 +0800 Subject: [PATCH] feat: test --- dev-app-update.yml | 2 +- electron-builder.yml | 2 +- package.json | 2 +- src/main/index.ts | 2 +- src/main/ipc.ts | 4 +++- src/main/updater.ts | 40 +++++++++++++++++++++++++--------------- src/renderer/src/App.tsx | 19 ++++++++++--------- 7 files changed, 42 insertions(+), 29 deletions(-) diff --git a/dev-app-update.yml b/dev-app-update.yml index ba01361..5807cc4 100644 --- a/dev-app-update.yml +++ b/dev-app-update.yml @@ -1,3 +1,3 @@ provider: generic -url: https://example.com/auto-updates +url: http://192.168.1.7:5500/update updaterCacheDirName: cvpilot-desktop-updater diff --git a/electron-builder.yml b/electron-builder.yml index 7d772d5..6d73e94 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -40,6 +40,6 @@ appImage: npmRebuild: false publish: provider: generic - url: https://example.com/auto-updates + url: https://assets.maxshader.com electronDownload: mirror: https://npmmirror.com/mirrors/electron/ diff --git a/package.json b/package.json index 381aa5a..6883593 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cvpilot-desktop", - "version": "1.0.3", + "version": "1.0.6", "description": "An Electron application with React and TypeScript", "main": "./out/main/index.js", "author": "example.com", diff --git a/src/main/index.ts b/src/main/index.ts index dd1520b..bc5b689 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -3,7 +3,7 @@ import { join } from 'path' import { electronApp, optimizer, is } from '@electron-toolkit/utils' import icon from '../../resources/icon.png?asset' import { setupIpcHandle } from './ipc' -import './sqlite3' +// import './sqlite3' import { setupAutoUpdater } from './updater' function createWindow(): void { diff --git a/src/main/ipc.ts b/src/main/ipc.ts index a796c42..38c3f35 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -1,4 +1,5 @@ -import { autoUpdater, ipcMain } from 'electron' +import { ipcMain } from 'electron' +import { autoUpdater } from 'electron-updater' /** * ipc signals @@ -8,6 +9,7 @@ export const setupIpcHandle = (): void => { ipcMain.handle('check-for-updates', (event) => { console.log('检查更新') autoUpdater.checkForUpdates() + console.log('执行') }) ipcMain.handle('quit-and-install', () => { diff --git a/src/main/updater.ts b/src/main/updater.ts index da11828..0c0b34a 100644 --- a/src/main/updater.ts +++ b/src/main/updater.ts @@ -1,34 +1,44 @@ -import { app, BrowserWindow, ipcMain } from 'electron' +import { app, BrowserWindow, dialog } from 'electron' import { autoUpdater } from 'electron-updater' /** - * 文档地址: https://www.electronjs.org/zh/docs/latest/api/auto-updater#event--before-quit-for-update + * 文档地址: https://www.electron.build/auto-update */ export const setupAutoUpdater = (win: BrowserWindow) => { // 配置更新服务器地址 - const updateServerUrl = `http://192.168.1.7:5500/update/${process.platform}/${app.getVersion()}` - console.log(app.getVersion()) + const updateServerUrl = `https://assets.maxshader.com` + + const isDevelopment = process.env.NODE_ENV === 'development' + if (isDevelopment) { + // 强制在开发环境进行更新检查 + autoUpdater.forceDevUpdateConfig = true + } + + // 关闭自动更新 + autoUpdater.autoDownload = false + // 设置自动更新的 feed URL autoUpdater.setFeedURL({ provider: 'generic', url: updateServerUrl }) - console.log(autoUpdater.getFeedURL()) - - autoUpdater.on('update-downloaded', (e) => { - console.log(e) - ipcMain.emit('update-ready', e) - }) - - autoUpdater.on('update-not-available', () => { - console.log('update-not-available') - ipcMain.emit('update-not-available', '没有可用更新') + autoUpdater.on('update-downloaded', (res) => { + console.log('下载完成') + autoUpdater.quitAndInstall() }) autoUpdater.on('checking-for-update', () => { console.log('checking-for-update,开始检查更新') }) - autoUpdater.on('update-available', () => { + autoUpdater.on('update-available', (info) => { console.log('update-available,有可用更新') + autoUpdater.downloadUpdate() + }) + + autoUpdater.on('download-progress', (progress) => { + console.log('下载进度download-progress') + const { bytesPerSecond, percent, transferred, total } = progress + console.log(bytesPerSecond, transferred, total) + win.webContents.send('update-progress', percent) }) autoUpdater.on('error', (error) => { diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index 18d5d3e..791de6e 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -1,10 +1,10 @@ import Versions from './components/Versions' import electronLogo from './assets/electron.svg' -import { useEffect } from 'react' +import { useEffect, useState } from 'react' function App(): JSX.Element { - const ipcHandle = (): void => window.electron.ipcRenderer.send('ping') const updateHandle = () => window.api.checkUpdate() + const [percent, setPercent] = useState() useEffect(() => { window.electron.ipcRenderer.on('update-ready', (e, data) => { @@ -27,11 +27,17 @@ function App(): JSX.Element { }) }, []) + useEffect(() => { + window.electron.ipcRenderer.on('update-progress', (e, data) => { + setPercent(percent) + }) + }, []) + return ( <> logo - -
Powered by electron-vite
+ +
{percent}
Build an Electron app with React  and TypeScript @@ -45,11 +51,6 @@ function App(): JSX.Element { Documentation
-
- - Send IPC - -