electron 打包和升级中的问题

目前electron的打包和升级基本上都是通过node.js实现 ,关键步骤如下:

  1. 通过yarn electron:build --publish always 生成latest.yml 文件
  2. 搭建http 服务配置静态资源
  3. backgroud.js 来获取最新的升级包文件

能够实现latest.yml 生成的vue.config.js 配置,目前看这里的publish中的url是没有必要的,因为目前electron-builder是不支持上传安装包到对应的服务器仓库的,至于如何配置git 仓库上传,还需要继续尝试

module.exports = {
  publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
  pluginOptions: {
    electronBuilder: {
      nodeIntegration: true,
      builderOptions: {
        appId: 'com.vincent.electron-builder',
        productName: 'ElectronBuilderDemo',
        copyright: 'Copyright © 2020 electron-builder Demo',
        win: {
          publish: [
           {
            "provider": "generic",
            "url": "http://localhost:8080/upload/",//隐藏版本服务器地址
           }
          ]
        },
        nsis: {
          oneClick: false, // 是否一键安装
          allowToChangeInstallationDirectory: true // 允许用户选择安装位置
        },
      }
    }
  }
}

搭建http 静态资源服务可以使用express模块,也可以用原生的http模块实现
通过http 搭建静态态资源http服务

var http = require('http');
var url = require('url');
var fs = require('fs');
var path = require('path');

//创建服务器,监听8080端口
var server = http.createServer(function (req, res) {
    //屏蔽/favicon.ico的请求
    if(req.url === '/favicon.ico')
    {
        return ;
    };

    //解析请求路径
    var pathname = url.parse(req.url).pathname;
    console.log(pathname);
    //默认首页
    if(pathname.indexOf('.') === -1)
    {
        pathname = "/index.html"
    };

    //获取文件后缀名
    var extname = path.extname(pathname);
    console.log(extname);
    //读取文件
    fs.readFile('./' + pathname, function (err,data) {
        //如果出错则表示请求路径不正确,显示404
        if(err){
            fs.readFile("./upload/404.html",function(err,data){
                res.writeHead(404,{"Content-Type":"text/html;charset=UTF-8"});
                res.end(data);
            });
            return;
        };

        //读取数据
        //结束响应
        getMime(extname,function(mime){
            res.writeHead(200,{"Content-Type": "yml"});
            res.end(data);
        });
    });
});

//设置监听端口
server.listen(8080,'127.0.0.1', function () {
    console.log("server is started listen port 8080");
});

//getMIME()
function getMime(extname,callback)
{
    fs.readFile('./upload/latest.yml', function (err,data) {
        if(err)
        {
            throw Error("找不到mime.json文件");
            return;
        };
        callback(data);
    });
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值