如何与子文件夹中的应用程序共享 nw.js 二进制文件?

问题描述 投票:0回答:1

所以我遇到了以下问题:我的项目(这个)依赖于使用 web2exe 捆绑的两个不同的 nw.js 应用程序。其中一个用于设置,另一个是无 GUI 的,应该在启动时在后台运行。第二个应用程序还依赖于 nw 来实现诸如显示托盘图标和隐藏窗口之类的操作,否则这些操作需要通过特定于平台的脚本(例如批处理文件或 shell 脚本)来实现。 该解决方案工作正常,但由于系统需要访问树中的一些普通文件,我无法压缩可执行文件。即使可以,最大的文件也是 dll 和语言环境文件。将两个独立的、未压缩的 nw 应用程序与附加节点模块捆绑在一起会导致文件大小约为 800mb,这对于我的应用程序想要实现的目标来说是完全不现实的。

我正在考虑使用另一个框架,例如 Neutralinojs,但这意味着必须重写代码并在此过程中失去一些新的特定功能。我更感兴趣的是在我的两个应用程序之间共享新文件。第二个位于第一个的子文件夹中。大多数 nw 文件(可执行文件本身除外)与 root nw 目录中的文件完全相同。特别是在它们之间共享 nw.dll 和 locales 文件夹已经可以将大小减少约 200mb。

我一直在寻找方法来做到这一点,但到目前为止我还没有找到任何好的方法。也许这里有一个我缺少的解决方案。 我可以想象的另一个解决方案是使用某种较小的子集或使用本机 webview 重新实现 nw。也许那里有类似的东西,但我还没有找到。

javascript dll size node-webkit
1个回答
2
投票

最简单的解决方案是将它们简单地组合到一个应用程序中。

  1. main
    中的 FelizJueves 的
    package.json
    更改为 JS 文件而不是 HTML 文件。
  2. 让 JS 脚本成为您的后台进程。不要打开窗口,只需执行您当前在 FelizCheck 中所做的一切即可。
  3. 在该 JS 脚本中,监听
    open
    事件:https://nwjs.readthedocs.io/en/latest/References/App/#event-openargs
  4. open
    事件处理程序中,使用
    nw.Window.open()
    显示窗口 (FelizJueves.html)。当有人尝试启动已经运行的应用程序时会触发此事件。因此,第一次启动只是启动背景检查器。第二次启动会弹出 UI 窗口。
© www.soinside.com 2019 - 2024. All rights reserved.