前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Electron打包以及使用CloudKit做自动更新服务

Electron打包以及使用CloudKit做自动更新服务

作者头像
小刀c
发布2022-08-16 15:04:15
9860
发布2022-08-16 15:04:15
举报
文章被收录于专栏:cc log

toc

Electron打包

Electron代码编写之后便是打包, 官网 介绍了几种方法,用了 electron-packager

主要就是两个命令:

安装electron-packager

代码语言:javascript
复制
# for use in npm scripts
npm install electron-packager --save-dev

# for use from cli
npm install electron-packager -g

以及打包

代码语言:javascript
复制
electron-packager <sourcedir> <appname> --platform=<platform> --arch=<arch> [optional flags...]

package.json中配置都填写后(不要漏了productName , authordescription后续自动更新会需要),打包命令可以这样写:

代码语言:javascript
复制
electron-packager ./ --all 

打包Mac版就可以这样

代码语言:javascript
复制
electron-packager ./ --platform=darwin --arch=x64 

打包完会在项目根目录下生成打包文件的目录。

Electron自动更新

electron依赖Squirrel做自动更新,Mac版electron已经内置Squirrel.Mac

Mac 版本签名

开发过程中发现需要签名(可能是个例,其他教程中说不需要),所以在打包的时候需要附带签名信息,具体的可以参考 electron-osx-sign

Mac App Store版不能有自动更新,非Mac App Store版打包命令

代码语言:javascript
复制
electron-packager ./ --platform=darwin --arch=x64 --app-bundle-id="Developer ID Application" --osx-sign

自动更新服务端

自动更新需要服务端支持,核心就是请求服务端判断是否有新版本

代码语言:javascript
复制
GET /mac/lastes?version=[verson]

如果无新版本返回204即可,如果有新版需要返回200的json(必须要url字段,提供app的zip包):

代码语言:javascript
复制
{
	url:'http://site.com/app.zip'
}

以上的介绍在网上有更加详尽的说明。

因为Hipo本身引入了CloudKit做数据多设备同步,Cloudkit也支持web,和server端请求public database中的数据,再加上CloudKit近乎奢侈的额度,还不错的大文件(electron打包后的app有200~300M)上传下载速度(大家可以通过Hipo cloudkit测试😄),因此就考虑使用CloudKit。

设计的方案是web端使用Cloudkit js做app zip包上传,对应的上传表单大致这样:

cloudkit file upload form.png
cloudkit file upload form.png

对应在后端则使用Cloudkit server to server授权( 根据 CloudKit server to server 教程 配置即可),根据electron app请求

代码语言:javascript
复制
http://hipo.cash/cloudkit/queryApp?ownerId=_9568f9dfe5a9aad6053f6e05be9b1680&appId=52F035A9-3E92-4709-BB36-D4B1F15763DD&platform=mac&version=0.1.0&type=autoUpdate& channel=production&appName=hipo

# 上述就是自动更新所需的链接了,特别一点是ownerId的意义在于:CloudKit publicdatabase 大家都可以上传文件,默认只有自己可以修改自己创建的记录,所以使用ownerId只获取自己上传的记录,这样反而可以将这做成一个不错的对外服务。

服务端根据参数查询Cloudkit Public database之后返回结果即可。

这样自己服务端无需数据库,App zip文件也无需使用其他CDN存储,简单高效低成本😄

Cloudkit网上教程相对较少,因此

  1. 最好前后端都使用官方提供的CloudKit.js,这样会少走很多弯路,至于server 端代码,可以参考官网实例代码: Node/node-client-s2s/index.js
  2. 如果你使用了苹果的Cloudkit.js文件,需要注意的是如果你的node版本过低,可能没有原生promise,因此需要这样配置fetch.Promise = require('es6-promise').Promise

最后electron官网,autoUpdater - Electron也提供了几种方法,包括依赖Github和自荐服务的,大家感兴趣的可以自行研究。


文章多次修订后,决定开放http://hipo.cash/cloudkit/为一个免费Electron自动更新服务,上述API,所需的几个参数都可以在表格中列出,方便获取。

  • http://hipo.cash/cloudkit/中上传app
  • [http://hipo.cash/cloudkit/queryApp](http://hipo.cash/cloudkit/queryApp?ownerId=_9568f9dfe5a9aad6053f6e05be9b1680&appId=52F035A9-3E92-4709-BB36-D4B1F15763DD&platform=mac&version=0.1.0&type=autoUpdate& channel=production&appName=hipo)用于electron中查询。

--参考--

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • toc
  • Electron打包
  • Electron自动更新
    • Mac 版本签名
      • 自动更新服务端
      相关产品与服务
      内容分发网络 CDN
      内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档