使用amazon s3和电子助手的自动更新程序

时间:2018-06-07 21:15:12

标签: node.js electron electron-builder

实际上没有关于如何将亚马逊s3与电子助剂一起使用的文件 - 我很丢失。

2 个答案:

答案 0 :(得分:3)

是的,我同意你的观点,我最近去过那里...

即使我迟到了,我也会尽我所能告诉别人!

就我而言,我正在使用电子构建器来打包我的电子/测角器应用程序。

要使用电子生成器,建议您在项目根目录创建一个名为electron-builder.json的文件。

那是我的内容:

{
  "productName": "project-name",
  "appId": "org.project.project-name",
  "artifactName": "${productName}-setup-${version}.${ext}", // this will be the output artifact name
  "directories": {
    "output": "builds/"  // The output directory...
  },
  "files": [ //included/excluded files 
    "dist/",
    "node_modules/",
    "package.json",
    "**/*",
    "!**/*.ts",
    "!*.code-workspace",
    "!package-lock.json",
    "!src/",
    "!e2e/",
    "!hooks/",
    "!angular.json",
    "!_config.yml",
    "!karma.conf.js",
    "!tsconfig.json",
    "!tslint.json"
  ],
  "publish" : {
    "provider": "generic",
    "url": "https://project-release.s3.amazonaws.com",
    "path": "bucket-path"
  },
  "nsis": {
    "oneClick": false,
    "allowToChangeInstallationDirectory": true
  },
  "mac": {
    "icon": "src/favicon.ico"
  },
  "win": {
    "icon": "src/favicon.ico"
  },
  "linux": {
    "icon": "src/favicon.png"
  }
}

如您所见,如果要使用电子购买程序自动将应用程序发布到s3,则需要添加发布配置。我不喜欢的是,所有工件和文件都位于同一文件夹中。就我而言,就像您在下面的 package.json 中看到的那样,我决定使用electron-builder build -p never手动对其进行打包。这基本上是告诉您永远不要发布它,但是我需要它,因为如果没有它,它将不会生成Latest.yml文件。我正在使用Gitlab-ci生成伪像,然后使用脚本将其发布到s3,但是如果需要,可以使用-p always选项。

电子制造商需要latest.yml文件,因为这是他想知道s3上的人工制品是否是最新的。

latest.yml内容示例:

version: 1.0.1
files:
  - url: project-setup-1.0.0.exe
    sha512: blablablablablablablabla==
    size: 72014605
path: project-setup-1.0.0.exe
sha512: blablablablablabla==
releaseDate: '2019-03-10T22:18:19.735Z'

值得一提的另一件事是,电子构建器将尝试在您在 electron-builder.json发布配置中提供的URL上获取内容,如下所示:

  

https://project-release.s3.amazonaws.com/latest.yml

     

https://project-release.s3.amazonaws.com/project-setup-1.0.0.exe

这是默认的上载内容

enter image description here

为此,您需要公开s3存储桶,以便每个使用该应用程序的人都可以获取最新版本...

enter image description here

这是政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::your-bucket-name/*",
                "arn:aws:s3:::your-bucket-name"
            ]
        }
    ]
}

替换您的存储桶名称


第二,要打包应用程序,我在 package.json 中添加了一个脚本。 (“ build:prod”仅用于角度)

  "scripts": {
    "build:prod": "npm run build -- -c production",
    "package:linux": "npm run build:prod && electron-builder build --linux -p never",
    "package:windows": "npm run build:prod && electron-builder build --windows -p never",
    "package:mac": "npm run build:prod && electron-builder build --mac -p never",
  },

最后,这是一篇写得很好的文章here,与gitlab-ci一起使用。

我可能忘了一些零件,问任何问题!

答案 1 :(得分:1)

以下是电子制造商

中S3 autoUpdater的文档

combinations

您将配置放在package.json构建标记内,例如:

{
  "name": "ps-documentation",
  "description": "Provides a design pattern for Precisão Sistemas",
    "build":{
      "publish": {
        "provider": "s3",
        "bucket": "your-bucket-name"
      },
    }
}