所以我遇到了以下问题:我的项目(这个)依赖于使用 web2exe 捆绑的两个不同的 nw.js 应用程序。其中一个用于设置,另一个是无 GUI 的,应该在启动时在后台运行。第二个应用程序还依赖于 nw 来实现诸如显示托盘图标和隐藏窗口之类的操作,否则这些操作需要通过特定于平台的脚本(例如批处理文件或 shell 脚本)来实现。 该解决方案工作正常,但由于系统需要访问树中的一些普通文件,我无法压缩可执行文件。即使可以,最大的文件也是 dll 和语言环境文件。将两个独立的、未压缩的网络应用程序与附加节点模块捆绑在一起会导致文件大小达到 800mb 左右,这对于我的应用程序想要实现的目标来说是完全不现实的。
我正在考虑使用另一个框架,例如 Neutralinojs,但这意味着必须重写代码并在此过程中失去一些新的特定功能。我更感兴趣的是在我的两个应用程序之间共享新文件。第二个位于第一个的子文件夹中。大多数 nw 文件(可执行文件本身除外)与 root nw 目录中的文件完全相同。特别是在它们之间共享 nw.dll 和 locales 文件夹,已经可以将大小减少约 200mb。
我一直在寻找方法来做到这一点,但到目前为止我还没有找到任何好的方法。也许这里有一个我缺少的解决方案。 我可以想象的另一个解决方案是使用某种较小的子集或使用本机 webview 重新实现 nw。也许那里有类似的东西,但我还没有找到。
最简单的解决方案是将它们简单地组合到一个应用程序中。
package.json
中的 FelizJueves 的main
更改为 JS 文件而不是 HTML 文件。open
事件:https://nwjs.readthedocs.io/en/latest/References/App/#event-openargsopen
事件处理程序中,使用nw.Window.open()
显示窗口 (FelizJueves.html)。当有人尝试启动已经运行的应用程序时会触发此事件。因此,第一次启动只是启动背景检查器。第二次启动会弹出 UI 窗口。