【问题标题】:Electron - How to add external files?Electron - 如何添加外部文件?
【发布时间】:2018-02-11 19:54:27
【问题描述】:

我有一个 Electron 应用程序。我尝试让应用程序打开一个 .exe 文件。我在名为lib 的根文件夹中创建了一个目录,并将.exe 文件放在那里。在开发中,我使用__dirname + '/lib/file.exe打开文件没有问题,但是当我打包应用程序(使用yarn dist)时,它没有打开exe文件并且dist上不再有lib文件夹文件夹。

我尝试使用console.log(__dirname) 将默认位置写入控制台并输出\dist\win-unpacked\resources\app.asa(这是一个文件)。

如何添加应用打包时可以访问的外部文件?

【问题讨论】:

    标签: javascript node.js electron


    【解决方案1】:

    设法通过使用额外资源来解决它。应该在 package.json 文件中的 build 下声明。

    例如:

    1. 在 pacakge.json 旁边创建一个名为 extraResources 的新文件夹
    2. 将以下代码添加到您的 package.json 文件中:

      "build": { "extraResources": ["./extraResources/**"] }

    3. 然后,您可以在主应用中使用__dirname + '/../extraResources/' 访问此文件夹中的文件。

    【讨论】:

    • 使用process.resourcesPath 而不是__dirname 以获得更可靠的跨平台解决方案。
    • 这对我有用:const path = require('path'); path.join(process.resourcePath, 'extraResources', 'filename');
    • 在这个 extraResources 目录中,当我尝试您的方法时,我有一个文件 timer.sh,然后我收到此错误 Uncaught Error: ENOENT, extraResources/timer.sh not found in /opt/ProjectName/resources/app.asar
    • 谢谢你,这真的帮了我很多忙!
    • @americo 你的代码有错别字,应该是process.resourcesPath
    【解决方案2】:

    将以下代码添加到 package.json:

     "build": {
        "extraResources": [
          {
            "from": "./src/extraResources/",
            "to": "extraResources",
            "filter": [
              "**/*"
            ]
          }
        ]
      }
    

    然后,您可以使用访问文件

    const configFile = path.join(path.dirname(__dirname), 'extraResources','config.json');
    

    我使用以下文件夹结构,允许我以任何方式运行应用程序。

    来自项目文件夹: node_modules\.bin\electron.cmd src\main\index.js

    来自未打包的源 dist\win-unpacked\app.exe check-for-update

    来自已安装的文件夹 C:\Users\user\AppData\Local\Programs\app\app.exe

    +-- dist
    |   +-- win-unpacked
    |      +-- resources
    |         +-- extraResources
    |            config.json
    +-- node_modules
    +-- src 
    |   +-- extraResources
    |      config.json
    |      someFile.js
    |   +-- main
    |      index.js
    |   +-- render
    |      index.js
    

    【讨论】:

      【解决方案3】:

      在那里我找到了一个新的解决方案, 在 Windows 上使用 electron-packager 不要在进程结束时将文件添加到资源文件夹中。

      所以我将这个命令添加到package.json

      "build-win": "electron-packager . --platform=win32 --asar --prune --arch=ia32 --extra-resource=./extraResources/documents/QuickStartGuideWN-H1.pdf --extra-resource=./extraResources/MAC_drivers/MacOS10.14/ --icon=assets/alfa_a.ico --out ./dist --overwrite",
      

      现在文件被添加到资源文件夹中

      --extra-resource=./extraResources/file
      

      【讨论】:

        猜你喜欢
        • 2017-07-02
        • 1970-01-01
        • 2015-08-03
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        • 2016-04-23
        • 2020-12-26
        • 1970-01-01
        相关资源
        最近更新 更多