如何测试电子生成器自动更新流程?

问题描述 投票:6回答:1

我构建了一个Electron应用程序,现在我正在研究如何分发它。我和electron-builder一起去处理包装等。

对于一些上下文,作为Web开发人员,我习惯于在Web服务器上不断部署Web应用程序,但我很难弄清楚如何在Electron中分发打包的应用程序。

electron-builder docs中,有一个关于测试自动更新的简短提及:

“请注意,为了在不打包应用程序的情况下开发/测试更新的UI / UX,您需要在项目的根目录中创建名为dev-app-update.yml的文件,该文件与电子构建器配置中的发布设置相匹配(但是以YAML格式)“

但是,它很模糊......

所以我实际上有两个问题:

1.我如何实际测试自动更新流程?

我是否需要实际发布新版本以在本地触发更新?似乎很不清楚,这就像开发生产服务器一样。

2.是否可以对未签名的代码进行回退?

我还没有任何代码签名证书。因此OS / app将阻止自动更新。但是,我仍然想告诉用户更新可用,以便他们可以手动下载应用程序。我能这样做吗? (回到第1点,我希望能够测试这个流程)

testing electron auto-update electron-builder
1个回答
0
投票

我刚刚完成了这个。我还想针对非生产服务器进行测试,避免每次迭代时都必须打包我的应用程序。为了测试下载量,我必须签署我的应用程序,这会减慢速度。但听起来你只需要检查更新。我认为你可以做如下......

我创建了一个虚拟github repo,然后创建了一个包含以下内容的文件dev-app-update.yml

owner: <user or organization name>
repo: dev-auto-update-testing
provider: github

预期此文件的路径默认为您无法访问的位置。谢天谢地,您可以像这样覆盖它:

    if (isDev) {
      // Useful for some dev/debugging tasks, but download can
      // not be validated becuase dev app is not signed
      autoUpdater.updateConfigPath = path.join(__dirname, 'dev-app-update.yml');
    }

...这应该足以满足您的需求 - 因为您不需要下载。

如果没有,这里有一些其他提示:

  • 您可以更改电子修建器配置中的repo设置以指向您的虚拟仓库然后打包您的应用程序。这将为您提供一个包装,生产构建,指向您的虚拟仓库 - 这是我进行下载测试的方式(虽然我有一个证书,并签署了我的应用程序)
  • 你应该调用autoUpdate的checkForUpdates(),但是如果checkForUpdatesAndNotify()给你一个有用的操作系统通知,那么你应该能够将autoUpdater.autoDownload设置为false并最终得到你需要的东西。

最后,听起来你可以跳过autoUpdater,因为你无论如何都不会使用下载功能。相反,您可以使用github's releases api,假设您使用github来托管您的版本。如果没有,那么你的主人应该有类似的东西。使用它来检查更新,然后从您的应用程序中告诉用户(也可以向他们显示可点击的URL)。如果你想要OS Notifications electron has a module for that

© www.soinside.com 2019 - 2024. All rights reserved.