From 8de04e0d6a178f159f2dbdeba888df54386dc64e Mon Sep 17 00:00:00 2001 From: viarotel Date: Wed, 11 Oct 2023 18:54:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=9A=80=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E6=A3=80=E6=9F=A5=E6=9B=B4=E6=96=B0=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 +- electron.vite.config.js | 6 + package.json | 2 +- src/main/index.js | 5 +- src/main/ipc/index.js | 13 +- src/main/ipc/updater/index.js | 147 ++++++++---------- src/renderer/src/App.vue | 6 + src/renderer/src/assets/icon.png | Bin 0 -> 18242 bytes src/renderer/src/assets/logo.jpg | Bin 33980 -> 0 bytes src/renderer/src/components/AboutUs/index.vue | 102 ++++++++++++ 10 files changed, 197 insertions(+), 95 deletions(-) create mode 100644 src/renderer/src/assets/icon.png delete mode 100644 src/renderer/src/assets/logo.jpg create mode 100644 src/renderer/src/components/AboutUs/index.vue diff --git a/README.md b/README.md index 74f313ac..3ec4e5a7 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,6 @@ ### WIFI 连接 > 注意:需同时开启无线调试功能,并在无线调试页面中获取你的当前设备的无线地址(通常为你连接WIFI时分配的IP地址)及端口号(默认为 5555) -> 注意: 第一次无线连接可能需要插入 USB 以保证与电脑建立连接即授权成功后方可使用 1. 同 USB 连接中的 1-2 步骤 2. 将获取到的设备 IP 地址及端口号填写到 Escrcpy 中,然后点击连接设备 @@ -59,8 +58,8 @@ - 比特率 - 刷新率 - 屏幕旋转 -- 镜像解码器 -- 镜像编码器 +- 视频解码器 +- 视频编码器 ### 设备控制 @@ -81,9 +80,9 @@ > 优先级从高到低 1. 用户界面进行优化,制作合适的 Logo ✅ -2. 添加外部控制栏 🚧 +2. 内置的软件更新功能 ✅ 3. 添加 macOS 及 linux 操作系统的支持 🚧 -4. 内置的软件更新功能 🚧 +4. 添加外部控制栏 🚧 5. 支持语言国际化功能 🚧 6. 添加对游戏的增强功能 如游戏键位映射 🚧 @@ -112,7 +111,7 @@ ### 无线连接提示: 目标计算机积极拒绝访问 -第一次无线连接可能需要插入 USB 以保证与电脑建立连接即授权成功后方可使用 +第一次无线连接可能需要配对 或 插入USB 以保证与电脑建立连接即授权成功后方可使用 ## 获得帮助 diff --git a/electron.vite.config.js b/electron.vite.config.js index 8420ab72..85f55d64 100644 --- a/electron.vite.config.js +++ b/electron.vite.config.js @@ -7,6 +7,11 @@ import postcssConfig from '@viarotel-org/postcss-config' export default defineConfig({ main: { + resolve: { + alias: { + '@root': resolve('./'), + }, + }, plugins: [externalizeDepsPlugin()], }, preload: { @@ -20,6 +25,7 @@ export default defineConfig({ renderer: { resolve: { alias: { + '@root': resolve('./'), '@renderer': resolve('src/renderer/src'), }, }, diff --git a/package.json b/package.json index bf943234..bec84abe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "escrcpy", - "version": "1.3.3", + "version": "1.3.2", "description": "Scrcpy Powered by Electron", "author": "viarotel", "homepage": "https://github.com/viarotel-org/escrcpy", diff --git a/src/main/index.js b/src/main/index.js index aaba18ce..0d44637e 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -4,8 +4,7 @@ import { electronApp, is, optimizer } from '@electron-toolkit/utils' import iconPath from '../../resources/icons/icon.png?asset' import winIconPath from '../../resources/icons/icon.ico?asset' import macIconPath from '../../resources/icons/icon.icns?asset' - -import './ipc/index.js' +import ipcEvent from './ipc/index.js' function createWindow() { let icon = iconPath @@ -46,6 +45,8 @@ function createWindow() { else { mainWindow.loadFile(join(__dirname, '../renderer/index.html')) } + + ipcEvent(mainWindow) } // This method will be called when Electron has finished diff --git a/src/main/ipc/index.js b/src/main/ipc/index.js index c219f52f..57dd18f5 100644 --- a/src/main/ipc/index.js +++ b/src/main/ipc/index.js @@ -1,7 +1,10 @@ import { app, ipcMain } from 'electron' -import './updater/index.js' +import updaterEvents from './updater/index.js' -ipcMain.on('restart-app', () => { - app.relaunch() - app.quit() -}) +export default (mainWindow) => { + ipcMain.on('restart-app', () => { + app.relaunch() + app.quit() + }) + updaterEvents(mainWindow) +} diff --git a/src/main/ipc/updater/index.js b/src/main/ipc/updater/index.js index d2d49d07..137b5dae 100644 --- a/src/main/ipc/updater/index.js +++ b/src/main/ipc/updater/index.js @@ -1,90 +1,75 @@ -import { app, dialog, ipcMain } from 'electron' +import { app, ipcMain } from 'electron' import { is } from '@electron-toolkit/utils' import { autoUpdater } from 'electron-updater' const path = require('node:path') -// dev-start, 这里是为了在本地做应用升级测试使用,正式环境请务必删除 -if (is.dev && process.env.ELECTRON_RENDERER_URL) { - autoUpdater.updateConfigPath = path.join(__dirname, '../../../../dev-app-update.yml') -} +export default (mainWindow) => { + // dev-start, 这里是为了在本地做应用升级测试使用,正式环境请务必删除 + if (is.dev && process.env.ELECTRON_RENDERER_URL) { + const updateConfigPath = path.join(process.cwd(), './dev-app-update.yml') + // console.log('updateConfigPath', updateConfigPath) + autoUpdater.updateConfigPath = updateConfigPath + } -Object.defineProperty(app, 'isPackaged', { - get() { - return true - }, -}) -// dev-end + Object.defineProperty(app, 'isPackaged', { + get() { + return true + }, + }) + // dev-end -// 触发检查更新(此方法用于被渲染线程调用,例如页面点击检查更新按钮来调用此方法) -ipcMain.on('check-for-update', () => { - console.log('触发检查更新') - autoUpdater.checkForUpdates() -}) + // 触发检查更新(此方法用于被渲染线程调用,例如页面点击检查更新按钮来调用此方法) + ipcMain.on('check-for-update', () => { + console.log('ipcMain:check-for-update') + autoUpdater.checkForUpdates() + }) -// 设置自动下载为false(默认为true,检测到有更新就自动下载) -autoUpdater.autoDownload = false -// 检测下载错误 -autoUpdater.on('error', (error) => { - console.error('更新异常', error) -}) + // 下载更新 + ipcMain.on('download-update', () => { + console.log('ipcMain:download-update') + autoUpdater.downloadUpdate() + }) -// 检测是否需要更新 -autoUpdater.on('checking-for-update', () => { - console.log('正在检查更新……') -}) -// 检测到可以更新时 -autoUpdater.on('update-available', (releaseInfo) => { - console.log('检测到新版本,确认是否下载') - const releaseNotes = releaseInfo.releaseNotes - let releaseContent = '' - if (releaseNotes) { - if (typeof releaseNotes === 'string') { - releaseContent = releaseNotes - } - else if (Array.isArray(releaseNotes)) { - releaseNotes.forEach((releaseNote) => { - releaseContent += `${releaseNote}\n` - }) - } - } - else { - releaseContent = '暂无更新说明' - } - // 弹框确认是否下载更新(releaseContent是更新日志) - dialog - .showMessageBox({ - type: 'info', - title: '应用有新的更新', - detail: releaseContent, - message: '发现新版本,是否现在更新?', - buttons: ['否', '是'], - }) - .then(({ response }) => { - if (response === 1) { - // 下载更新 - autoUpdater.downloadUpdate() - } - }) -}) -// 检测到不需要更新时 -autoUpdater.on('update-not-available', () => { - console.log('现在使用的就是最新版本,不用更新') -}) -// 更新下载进度 -autoUpdater.on('download-progress', (progress) => { - console.log('下载进度', progress) -}) -// 当需要更新的内容下载完成后 -autoUpdater.on('update-downloaded', () => { - console.log('下载完成,准备更新') - dialog - .showMessageBox({ - title: '安装更新', - message: '更新下载完毕,应用将重启并进行安装', - }) - .then(() => { - // 退出并安装应用 - setImmediate(() => autoUpdater.quitAndInstall()) - }) -}) + // 安装更新 + ipcMain.on('quit-and-install', () => { + console.log('ipcMain:quit-and-install') + setImmediate(() => autoUpdater.quitAndInstall()) + }) + + // 设置自动下载为false(默认为true,检测到有更新就自动下载) + autoUpdater.autoDownload = false + // 检测下载错误 + autoUpdater.on('error', (error) => { + console.error('update-error', error) + }) + + // 检测是否需要更新 + autoUpdater.on('checking-for-update', (ret) => { + console.log('checking-for-update', ret) + }) + + // 检测到可以更新时 + autoUpdater.on('update-available', (ret) => { + console.log('update-available') + mainWindow.webContents.send('update-available', ret) + }) + + // 检测到不需要更新时 + autoUpdater.on('update-not-available', (ret) => { + console.log('update-not-available') + mainWindow.webContents.send('update-not-available', ret) + }) + + // 更新下载进度 + autoUpdater.on('download-progress', (ret) => { + console.log('download-progress') + mainWindow.webContents.send('download-progress', ret) + }) + + // 当需要更新的内容下载完成后 + autoUpdater.on('update-downloaded', (ret) => { + console.log('update-downloaded') + mainWindow.webContents.send('update-downloaded', ret) + }) +} diff --git a/src/renderer/src/App.vue b/src/renderer/src/App.vue index 7200133a..0b5d9205 100644 --- a/src/renderer/src/App.vue +++ b/src/renderer/src/App.vue @@ -17,11 +17,13 @@ + +