diff --git a/README.md b/README.md
index 74f313a..3ec4e5a 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 8420ab7..85f55d6 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 bf94323..bec84ab 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 aaba18c..0d44637 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 c219f52..57dd18f 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 d2d49d0..137b5da 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
+
+ // 触发检查更新(此方法用于被渲染线程调用,例如页面点击检查更新按钮来调用此方法)
+ ipcMain.on('check-for-update', () => {
+ console.log('ipcMain:check-for-update')
+ autoUpdater.checkForUpdates()
+ })
+
+ // 下载更新
+ ipcMain.on('download-update', () => {
+ console.log('ipcMain:download-update')
+ autoUpdater.downloadUpdate()
+ })
+
+ // 安装更新
+ 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)
+ })
}
-
-Object.defineProperty(app, 'isPackaged', {
- get() {
- return true
- },
-})
-// dev-end
-
-// 触发检查更新(此方法用于被渲染线程调用,例如页面点击检查更新按钮来调用此方法)
-ipcMain.on('check-for-update', () => {
- console.log('触发检查更新')
- autoUpdater.checkForUpdates()
-})
-
-// 设置自动下载为false(默认为true,检测到有更新就自动下载)
-autoUpdater.autoDownload = false
-// 检测下载错误
-autoUpdater.on('error', (error) => {
- console.error('更新异常', error)
-})
-
-// 检测是否需要更新
-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())
- })
-})
diff --git a/src/renderer/src/App.vue b/src/renderer/src/App.vue
index 7200133..0b5d920 100644
--- a/src/renderer/src/App.vue
+++ b/src/renderer/src/App.vue
@@ -17,11 +17,13 @@
+
+