【问题标题】:Electron builder and asset files电子生成器和资产文件
【发布时间】:2020-10-07 16:51:52
【问题描述】:

我在 macOS 上构建电子应用程序时遇到问题。

我的项目根目录中有一些文件夹,在我的 index.js 旁边,我需要将它们包含在打包的应用程序中。

在尝试对package.json 中的每个文件进行硬编码后,这并没有帮助,我最终得到了以下块

    "extraResources": [
      {
        "from": "files/",
        "to": "files/",
        "filter": [
          "**/*"
        ]
      },
      {
        "from": "assets/",
        "to": "assets/",
        "filter": [
          "**/*"
        ]
      },
      {
        "from": "accounts/",
        "to": "accounts/",
        "filter": [
          "**/*"
        ]
      }
    ]

如果我运行 .app,文件似乎不存在。打开 Contents/Resources,我看到它们在那里,所以,我发现应用程序正在查看 app.asar 容器内部,显然文件不在。

我通过在所有路径前添加几个'..' 发现了一个小技巧,因此它超出了app.asar 容器,但我真的认为这是解决我的问题的方法有点愚蠢。

另外,我计划为多个平台构建它,我有一种感觉,如果我通过这种骇人听闻的方式来修复它,我将不得不为每个平台创建一个骇客,我宁愿不这样做...

【问题讨论】:

    标签: electron fs electron-builder


    【解决方案1】:

    如果您有在 html 中使用的文件(在我的示例 assets/css 等中),或者需要在任何文件中并具有这样的文件夹结构,则这些文件夹将自动位于 asar 中。

    节点:asar 是只读包,创建此文件后无法添加、删除或编辑文件。

    assets/css 文件夹中的 css 文件的使用很简单: 使用 html 文件中的相对路径,它适用于所有平台。

    如果您有与您的项目无关的文件,或未在您的项目中使用但应该在打包应用程序中可用的文件:

    您必须在 package.json 中使用“extraFiles” extraFiles 会将文件复制到 Mac OS 上的应用程序内容目录,在 Windows 和 Linux 上它将复制到应用程序根目录。如果您使用 extraResources,它会将文件复制到 Mac 上的 Contents/Resources 和 Windows 上,它会将文件复制到资源文件夹。

    "extraFiles": [
      "files",
      "assets",
      "accounts"
    ]
    

    注意:不会复制空文件夹

    在您的应用中使用 this module 之类的东西来获取您的应用的根路径,并通过此路径使用您的文件

    替代方案:使用process.execPath 并替换您的可执行文件名称以获得正确的路径

    根据您的评论:
    如果您必须在应用程序 html 中加载此文件(css/js),您可以使用我在上面提供的解决方案在 onload 事件上动态加载。

    【讨论】:

    • 还没有机会尝试这个,看起来很有希望。我的问题是,这将如何涵盖我对 .html 文件中的 .js 和 .css 文件(位于我的资产文件夹中)的使用?
    • 所以 extraFiles 和 extraResources 的区别在于extraFiles 将它们放在Contents 目录中,而extraResources 将它们放在Contents/Resources 目录中。我的问题仍然存在,因为它确实将 src 文件夹放在 .asar 中,是否没有标志可以在其中放置更多文件?
    • 我看到了你的编辑,我必须说我感谢所有的努力。这是我到目前为止所学到的:如果我想在 asar 中添加额外的文件,我将通过 package.json 中的 "files":[] 参数添加它们,但是我遇到问题的主要原因是 .asar 是只读的我做了一些文件的编写和取消链接,这意味着我必须在我的应用程序逻辑中重组一些东西。我会接受您的回答,因为您确实对我帮助很大,但是您能否完成添加只读问题以及文件、extraFiles 和 extraResources 添加相关文件的位置?
    猜你喜欢
    • 2019-05-23
    • 1970-01-01
    • 2021-07-19
    • 2023-03-12
    • 2018-09-12
    • 1970-01-01
    • 2021-03-19
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多