[electron]“自动更新”在 Windows 和 Mac 上都无法正常工作。

2024-05-11 438 views
2

我的自动更新代码。


var Remote = require('remote');
var app = Remote.require('app');
var autoUpdater = Remote.require('auto-updater');

Polymer({
    version: '',

    created: function () {
        this.version = app.getVersion();
        this.result = '';
        autoUpdater.setFeedUrl('https://atom.io/api/updates?version=0.16');

        console.log('created');
        autoUpdater.on('checking-for-update', function() {
            console.log("checking-for-update");
        });

        autoUpdater.on('update-available', function() {
            console.log("update-available");
        });

        autoUpdater.on('update-not-available', function() {
            console.log("update-not-available");
        });

        autoUpdater.on('update-downloaded', function() {
            console.log(" update-downloaded");
        });

        autoUpdater.checkForUpdates();
    },
});

在 Mac OSX 上,终端输出以下日志:


Could not get code signature for running application, application updates are disabled: Error Domain=NSOSStatusErrorDomain Code=-67062 "The operation couldn’t be completed. (OSStatus error -67062.)" 

在窗户上:

不输出任何东西。

回答

7

@zcbenz 你能推荐一个关于这方面的例子或教程吗?我才刚刚开始处理这一切。

5

我刚刚在错误事件中收到一个空错误,没有消息,只有“错误”。事实证明,您需要在设置事件侦听器之前执行 setFeedURL() ,否则它将无法工作...上面的示例正确执行了此操作。

如果文档对此更加清楚,将会很有用。

3

我可以从浏览器访问我的端点。但我认为 Windows 的自动更新程序无法做到这一点。

它抛出以下异常。 "err":{"message":"Command failed: 4294967295\nSystem.AggregateException: One or more errors occurred. ---> System.Net.WebException: The remote server returned an error: (404) Not Found.\r\n at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\r\n at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)\r\n at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)

我认为这是因为我的端点设置为localhost.但尝试将端点上传到实时服务器。但仍然没有运气

它返回相同的异常。

7

你好 anishnair02 我有同样的错误 你找到灵魂了吗?

5

没有阿德里安斯克里卡里乌。当你解决这个问题时请告诉我。如果我这样做了,我会向您通报最新情况。

0

你好阿尼什奈尔02。这似乎是来自服务器的网址错误...如果您让服务器查看传入的请求并观察来自电子的网址...那是我的问题,但现在我有另一个问题,服务器返回json 但在应用程序中我有此错误 System.Exception: Invalid release entry: {"url":"localhost:3000/releases/wind/1.0.4/MyApp.zip";}

3

@adrianscripcariu 您在 JSON 输出中似乎有一个杂散分号

9

错误

0

这就是它在电子中的样子

2

你能帮我使用一个预构建的 squierrel 服务器吗:D

7

和服务器代码“use strict”; const fs = require('fs'); const express = require('express'); const 路径 = require('路径');常量应用程序 = Express();

app.use(require('摩根')('dev'));

app.use('/updates/releases',express.static(path.join(__dirname, 'releases')));

app.get('/updates/latest', (req, res) => { const latest = getLatestRelease(); const clientVersion = req.query.v;

if (clientVersion === 最新) { res.status(204).end(); } else { res.json({ url: ${getBaseUrl()}/releases/darwin/${latest}/MyApp.zip }); } });

让 getLatestRelease = () => { const dir = ${__dirname}/releases/darwin;

const versionsDesc = fs.readdirSync(dir).filter((file) => { const filePath = path.join(dir, file); return fs.statSync(filePath).isDirectory(); }).reverse();

返回版本描述[0]; }

let getBaseUrl = () => { if (process.env.NODE_ENV === 'development') { return ' http://localhost:3000 '; } } else { return ' http://download.mydomain.com ' } }

app.listen(process.env.PORT, () => { console.log( Express server listening on port ${process.env.PORT}); });

7

您好,我下载并安装了 npm install,但我不太明白下一步要做什么:(

8

你好阿德里安斯克里普卡里乌,

我可以让 Windows Electron 应用程序自动更新。

这就是我所做的。

1.) 将 feedURL 设置为如下所示:http://localhost/downloads/yourapp-updates/ 这是指向我的本地主机上的空目录的链接。应用程序版本设置为1.0.0

2.) 使用创建安装程序这将在项目文件夹中npm run dist 创建包含以下内容的dist directory->win

  • RELEASES
  • YourApp-1.0.0-full.nupkg
  • YourApp Setup 1.0.0(Application file)YourApp Setup 1.1.0第一次安装时 需要该文件。

3.) 现在我们已经在 Windows 机器上安装了该应用程序。您可能还想检查 中的应用程序版本Control Panel -> Programs and Features。它应该显示1.0.0

4.) 现在在代码中(项目文件夹)。进行必要的更改(为了测试它,我只是更改了 div 的背景颜色)将版本设置为比先前版本更高的数字。所以我将其设置为1.1.0 “运行” npm run dist ,现在应该在dist directory->win

  • RELEASES
  • YourApp-1.1.0-full.nupkg
  • YourApp Setup 1.1.0(Application file) 请注意nupkg,文件application名现在不同了(它是 1.1.0,之前是 1.0.0)

5.) 复制这三个文件并粘贴到更新目录( http://localhost/downloads/yourapp-updates/ )

6.) 重新运行已安装的应用程序(您可以使用使用创建的桌面快捷方式electron-squirrel-startup

7.) 该应用程序将自行自动更新(您应该看到您所做的更改 - div 颜色已更改)

希望这也对你有用。

2

1.) 将 feedURL 设置为如下所示:http://localhost/downloads/yourapp-updates/

专业提示,在 Squirrel.Windows 中您可以放置​​ HTTP URL 的任何位置,可以仅放置文件夹的常规路径。这使得测试更新变得更加容易,因为您只需将 dist 文件夹设置为更新 URL

6

你好,

是的,我知道常规路径确实适用于 Windows Electron 应用程序。是的,对于测试来说这可能很有用。

但是,在向用户提供应用程序后,我必须将路径设置为每个人都可以访问的目录。这就是服务器出现的时候。所以路径可能是这样的:http://updates.mydomain.com/latest/

因为,自动更新程序的目的是让每个人都可以进行更新。