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