首页 > 解决方案 > 为什么 nwjs 更新程序不在 macOS 上工作?

问题描述

基本上,我尝试使用 nwjs 打包应用程序,并且还安装了文档中提到的 nwjs 更新程序。

对于窗口,它会创建一个 .exe 文件,安装后如果有任何更新,nwjs 更新程序会检查它并通知用户下载最新版本。它在窗口上工作正常。

但是对于 macOS 它会创建一个包含我们的应用程序的 zip 文件作为 application.app,其次我们需要制作一个包安装程序。我使用 packages 一个免费工具来打包我的应用程序。我只需要将创建的 application.app 使用到包工具中,它就会创建一个包安装程序。

这次的问题是 nwupdater 不起作用并立即关闭应用程序。

希望任何人都有相同或替代整体的解决方案。

我只希望我用 html、css 和 javascript 编写的应用程序在 macOS 上用作带有安装程序和更新程序的本机应用程序。

标签: macosauto-updatenwjssoftware-packaging

解决方案


这是一个很好的问题。我已经有一段时间没有研究这个了。但我不知道有任何自动构建工具仍然维护得很好。大多数社区只是为他们的应用程序编写自己的自定义构建脚本。最常用的一个现在已存档,并且逐渐与社区(凤凰)的需求不同步。通过自动更新,您可以尝试多种方法和工具,但它们都没有成功并成为最常用的解决方案。事实证明,自动更新是相当特定于应用程序的,因此您必须查看可用的解决方案。

如果我要创建自己的自动更新程序,我的方法是:

  1. 使用诸如nw-splasher启动带有进度条的启动画面之类的东西。
  2. 检查require('path').join(nw.App.dataPath, 'releases')以查看已下载的最新版本。
  3. 点击 API 以查看应用程序的最新版本。如果无法访问 API,请使用最新的本地版本。
  4. 如果有更新的版本,那么只需下载/解压缩我的应用程序代码的文件(不是 NW.js 文件,因为它们要大得多,并且已经在运行)。

通过这种方法,我什至可以在应用程序中添加所有下载版本的下拉列表,因此人们可以根据需要切换到旧版本(如果它不推荐使用他们喜欢的功能,我不想强​​迫用户使用最新版本,我使用了很多出于这个原因,较旧的软件,以及一些“自动更新”的软件会阻止我获得我喜欢的版本)。

这种方法当然不是最有效的,并且有一些缺点。就像不真正更新 NW.js 文件本身一样,这可能是可取的。

我建议通读其他人关于该主题的想法的长线程,其中许多链接到他们创建的工具。

如果您要编写自己的构建脚本,这里有一个教程可能会有所帮助:

虽然我认为 OSX 自编写以来改变了一些细节,但方法基本相同。


推荐阅读