Windows下支持自动更新的Electron应用脚手架的方法(2)

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Hello World!</title> </head> <body> <h1>Hello World!</h1> <script> const { ipcRenderer } = require('electron'); ipcRenderer.on('message', (event, { message, data }) => { console.log(message, data); switch (message) { case 'isUpdateNow': if (confirm('现在更新?')) { ipcRenderer.send('updateNow'); } break; default: document.querySelector('h1').innerHTML = message; break; } }); </script> </body> </html>

打包

npm run build

第一次运行会比较慢,运行结束后会在当前目录下新增一个 dist 文件夹,dist 的目录结构如下:

|- dist |- win-unpacked |- electron-autoupdate-scaffold Setup.exe |- electron-autoupdate-scaffold Setup.exe.blockmap |- electron-builder-effective-config.yaml |- latest.yml

win-unpacked 下是可执行文件,但是先别着急运行,我们还缺一个后台。

自动更新后台

聪明的你一定注意到,前面代码中我们有一个:

const feedUrl = `:8080/${process.platform}`;

所以我们现在要做的就是一个可以接受这个请求的服务。

回到你的工作目录(d/workspace)

# 目录 d/workspace mkdir electron-server cd electron-server npm init npm i koa --save npm i koa-static --save touch server.js

打开 server.js,输入如下内容:

// server.js let Koa = require('koa'); let app = new Koa(); let path = require('path'); app.use(require('koa-static')(path.resolve(__dirname + '/packages'))); let server = app.listen(8080, () => { let { address, port } = server.address(); console.log("应用实例,访问地址为 %s:%s", address, port); });

将之前打包出来的 dist 目录下的 4 个文件(除了 win-unpacked)拷贝到这边的 packages/win32 下(新建目录 packages/win32),之后

# 目录 d/workspace/electron-server npm start

到此为止,我们的自动更新服务就搭建完成了,现在来一波测试吧。

测试

进入 electron-demo/dist/win-unpacked 找到可执行文件,双击运行,看到打开窗口的控制台中依次输出:

checking-for-update update-not-available

进入 electron-demo,打开 package.json,把版本号改为0.0.2,重新打包后拷贝打包文件到自动更新后台目录(d/workspace/electron-server/packages/win32)。

进入 electron-demo,打开 package.json,把版本号改为0.0.1,重新打包后再次进入 dist/win-unpacked 目录,运行 exe,看到打开窗口的控制台中依次输出:

checking-for-update update-available

并且出现弹窗提示「现在更新?」。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/fbf26b2827ee1b867719fb3be981833c.html