Skip to content
On this page

自动更新程序

开发人员经常发布其应用程序的新版本。Neutralenojs为所有受支持的操作系统提供了一个简单且可扩展的软件更新机制。 如您所知,Neutralizojs将所有应用程序资源捆绑到resources.neu文件中。自动更新机制基础的操作就是将现有的resources.neu替换为网络上最新的应用程序资源。

创建更新清单

当你要求Neutralizojs检查更新时,它会通过网络检查更新清单。更新清单是指具有以下格式的JSON文档。

json
{
    "applicationId": "js.neutralino.sample",
    "version": "0.0.2",
    "resourcesURL": "http://example.com/updater_test/update_res.neu",
    "data": {
    }
}
  • applicationIdString: 应用程序id。您需要使用与neutralizojs.config.json中相同的id。否则,更新检查操作将不会继续
  • versionString: 应用版本
  • resourcesURLString: 下载resources.neu的链接。您可以根据需要使用任何文件名,但请确保响应头信息Content-Type: application/octet-stream
  • dataObject (可选): 有关更新的其他数据,接受JSON值

部署更新清单和资源

根据您的访问要求,在互联网或内部网络上托管应用程序清单和资源文件。您可以通过设置静态服务器或将更新清单和资源文件放入应用程序的资源目录来在本地测试自动更新。

此外,如果需要,您可以设置DevOps管道来自动更新应用程序。如果您更新了Neutranojs服务,用户必须再次下载/安装该应用程序, 因为自动更新机制只更新应用程序资源(包括NeutranoJS客户端)。

编写代码以更新您的应用程序

需要检查更新时,调用以下函数。

javascript
try {
    let url = "http://example.com/updater_test/update_manifest.json";
    let manifest = await Neutralino.updater.checkForUpdates(url);
}
catch(err) {
    // Handle errors
}

接下来,您可以使用manifest对象来比较版本。

javascript
try {
    let url = "http://example.com/updater_test/update_manifest.json";
    let manifest = await Neutralino.updater.checkForUpdates(url);

    if(manifest.version != NL_APPVERSION) {
        await Neutralino.updater.install();
        await Neutralino.app.restartProcess();
    }
}
catch(err) {
    // Handle errors
}

如上面的代码片段所示,您可以调用Neutralino.updater.install来下载清单执行更新。然后,使用app.restartProcess函数重新启动应用程序。