标签: electron-builder

电子建设者与电子包装者

电子助剂电子封装剂的主要区别是什么.两者都有一些示例项目吗?对于独立的.exe应用程序构建哪个更好?

javascript native electron electron-builder

106
推荐指数
5
解决办法
4万
查看次数

“v8::ArrayBuffer”中的“GetContents”

我使用的是 Mac M1,刚刚升级到 Node 14.17.6LTS。

我尝试使用电子构建器(22.11.7)重建better_sqlite3(7.4.3),但出现以下错误:

“v8::ArrayBuffer”中没有名为“GetContents”的成员

有什么想法如何解决这个问题吗?提前致谢!

gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
  SOLINK_MODULE(target) Release/.node
  CXX(target) Release/obj.target/fse/fsevents.o
In file included from ../fsevents.cc:6:
In file included from ../../nan/nan.h:2884:
../../nan/nan_typedarray_contents.h:34:43: error: no member named 'GetContents' in 'v8::ArrayBuffer'
      data   = static_cast<char*>(buffer->GetContents().Data()) + byte_offset;
Run Code Online (Sandbox Code Playgroud)

v8 electron electron-builder better-sqlite3

21
推荐指数
1
解决办法
7403
查看次数

“GPU 进程无法使用。再见。”

我正在尝试使用 Electron 构建 Windows 和 Mac OS 应用程序,但遇到了障碍。

简而言之,如果我尝试在 Mac OS Big Sur 上直接使用 Electron 运行应用程序(而不是构建 Mac 应用程序然后运行它),我会返回以下错误:

[35941:0821/171720.038162:FATAL:gpu_data_manager_impl_private.cc(415)] GPU process isn't usable. Goodbye.
Run Code Online (Sandbox Code Playgroud)

我使用以下命令直接使用 Electron 运行package.json

"scripts": {
  ...
  "test": "electron main.js",
  ...
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我可以访问的唯一 Mac 操作系统环境是 Big Sur,因此还没有在早期版本的 Mac 操作系统上尝试过此操作,但从谷歌搜索看来,此错误可能与 Big Sur 加强的安全性/沙箱限制有关 - 但我猜测关于那个。

无论如何,经过一些谷歌搜索后,一些建议表明尝试在没有应用程序沙箱的情况下运行,即将其添加到main.js

app.commandLine.appendSwitch('no-sandbox');
Run Code Online (Sandbox Code Playgroud)

这一切都很好并且有效。

但是,如果我想构建和分发针对 Mac 应用商店的签名 Mac 应用程序或只是签名的沙盒 DMG 或 PKG 安装程序,那么这将不适合。

如果我删除上述no-sandbox命令main.js并在我的权利中指定应用程序沙箱,plist如下所示,生成的签名应用程序将不会运行:

<key>com.apple.security.app-sandbox</key>
<true/>
Run Code Online (Sandbox Code Playgroud)

该应用程序尝试打开并关闭。我可以尝试在命令行中运行,open <appname>.app但这会在控制台中引发以下错误:

The application cannot be …
Run Code Online (Sandbox Code Playgroud)

macos electron electron-builder

19
推荐指数
2
解决办法
3万
查看次数

在Electron应用程序中运行python脚本

我有一个Electron项目,它使用NodeJS的child_process模块​​执行一些python脚本.我的python脚本位于我项目的根文件夹中.

这是我调用python脚本的方式:

let py = spawn('python',['ResolvePosition.py', obsFilePath, navFilePath])
py.stdout.on('data', data => console.log('data : ', data.toString()))
py.on('close', ()=>{
  // Python ends, do stuff
})
Run Code Online (Sandbox Code Playgroud)

如果我运行我的电子应用程序,npm start 当我使用npm模块为Windows构建可执行文件electron-builder并运行可执行文件时dist/win-unpacked/my-app.exe,这将无法正常工作,这将无法正常工作,似乎我的脚本无法访问python ./my-script-py.

那么,我如何使这段代码适用于已构建的项目?

python node.js electron electron-builder

17
推荐指数
2
解决办法
1万
查看次数

电子 - 不允许加载本地资源

晚上,
我正在研究使用电子来封装现有的angular2版本.我以为我干运行但实际包装似乎失败了(参见下面的最后一步),我想了解原因.这就是我正在做的......

创建项目
使用angular-cli启动新项目ng new electron-ng2-cli --style=scss

安装电子和电子建设者

编辑package.json
进行以下添加...
"main": "main.js"

"build":
{
  "appId": "com.electrontest.testapp",
  "mac": {
    "category": "your.app.category.type"
  }
}
Run Code Online (Sandbox Code Playgroud)

并将以下内容添加到scripts...

"pack": "build --dir",
"dist": "build",
"electron": "electron main.js",
"postinstall": "install-app-deps"
Run Code Online (Sandbox Code Playgroud)

创建main.js
我刚刚从电子快速入门复制了代码.我做的唯一改变是index.html我设置的位置/dist/index.html

修改基地
index.html改变<base="/"><base="./">

打包代码
运行ng build.这将所有打包的代码放入/dist

测试运行
运行npm run electron.这很好用.一个电子应用程序启动,我看到其中运行的角度内容.

为分发
运行创建应用程序npm run pack以创建打包应用程序.包装似乎没问题 - 我收到一个关于丢失图标的警告,并警告我的代码是无符号的,但我猜他们不应该是致命的?
问题是,当我现在通过双击运行应用程序时,Finder我在控制台中收到错误说: …

electron angular-cli electron-builder angular

16
推荐指数
5
解决办法
2万
查看次数

使用Electron(macOS)打开app并使用深层链接传递参数

我想打开app并使用Electron(macOS)通过深度链接传递参数.

项目'electron-deep-linking-mac-win'在GitHub上.

在此输入图像描述

编辑package.json,按照'电子生成器'快速设置指南生成mac安装程序:

{
  "name": "electron-deep-linking-osx",
  "version": "1.0.0",
  "description": "A minimal Electron application with Deep Linking (OSX)",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "pack": "build --dir",
    "dist": "build"
  },
  "repository": "https://github.com/oikonomopo/electron-deep-linking-osx",
  "keywords": [
    "Electron",
    "osx",
    "deep-linking"
  ],
  "author": "GitHub",
  "license": "CC0-1.0",
  "devDependencies": {
    "electron": "1.6.6",
    "electron-builder": "17.1.2"
  },
  "build": {
    "appId": "your.id",
    "mac": {
      "category": "your.app.category.type"
    },
    "protocols": {
      "name": "myApp",
      "schemes": ["myApp"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑main.js,附加代码注册myappurl方案协议,监听'open-url'事件 …

macos custom-protocol electron custom-url-protocol electron-builder

16
推荐指数
2
解决办法
6655
查看次数

Electron使用电子生成器创建MSI安装程序

我设法使用电子构建器为Windows创建了一个.exe安装程序,我创建了2个package.json,如文档中所指出:

https://github.com/electron-userland/electron-builder.

我最终得到了一个工作.exe的文件夹 在此输入图像描述

"dist:win64": "./node_modules/.bin/build --platform win32 --arch x64"
Run Code Online (Sandbox Code Playgroud)

我的主package.json的构建部分是

"build": {
    "app-bundle-id": "org.test.mytest",
    "app-category-type": "public.app-category.graphics-design",
    "osx": {
      "contents": [
        {
          "x": 410,
          "y": 150,
          "type": "link",
          "path": "/Applications"
        },
        {
          "x": 130,
          "y": 150,
          "type": "file"
        }
      ]
    },
    "win": {
      "title": "My awesome app",
      "version": "2.28.999.1",
      "noMsi": false,
      "authors": "Author"
    }
  }
Run Code Online (Sandbox Code Playgroud)

一切正常,我有.exe安装程序,但无法使用.msi安装程序将内容放在程序文件目录中.

在此输入图像描述

相反,我最终安装在C:\ Users\UserHome\AppData\Local\electron文件夹中,安装程序如下所示.

在此输入图像描述

有没有办法让一个真正的.msi安装程序使用电子生成器将内容放在Program文件夹中.唯一有效的项目是https://github.com/theodo/electron-boilerplate,但它使用的是电子生成器的旧版本.

在电子文档设置noMsi为假,应该做的伎俩......

Should Squirrel.Windows create an MSI installer?
Run Code Online (Sandbox Code Playgroud)

electron electron-builder

15
推荐指数
2
解决办法
1万
查看次数

如何从网站上发布我的电子应用程序

我们有一个签署交易的电子加密应用程序(除此之外).

我们希望其他网站能够拥有一个打开该电子应用程序的按钮,预先填充了一些参数(交易信息).

流程是:

  1. 用户点击some-crypto-site.com上的"make transaction"
  2. 电子应用打开了预先填充的参数
  3. 用户点击电子应用中的"签署交易"
  4. 电子app在幕后做的事情
  5. 电子应用程序关闭并向some-crypto-site.com发送消息

这可以在运行时或安装时完成.

我试过的(linux,chrome)

app.setAsDefaultProtocolClient这个要点的代码调用,基本上是:

app.setAsDefaultProtocolClient("my-app")
Run Code Online (Sandbox Code Playgroud)

但是在我放入my-app://foo?bar=bazChrome浏览器之后,我得到以下弹出窗口,按下open-xdg什么都不做(除了解除弹出窗口)

在此输入图像描述

我调查了一下

  1. 电子协议api似乎只处理应用内协议
  2. webtorrent .desktop文件这可能是要走的路,我只是不确定如何去做.

也许有一种方法可以在安装时通过电子制造商这样做?

在此先感谢您的帮助,我不知道如何继续前进!

可能有用的资源

  1. 使用mac + window示例的github repo
  2. github评论linux
  3. github评论linux 2
  4. 所有3个操作系统的答案
  5. SO窗口回答
  6. 用于windows registery的npm包
  7. 所以回答
  8. 所以linux回答
  9. 用于Windows的microsoft docs
  10. windows文章
  11. github对windows的评论
  12. github评论mac
  13. info.plst for mac
  14. 旧的回购为mac和胜利

electron electron-builder

14
推荐指数
1
解决办法
3036
查看次数

我在哪里可以找到生产中的Electron应用程序的日志?

我用Electron构建了一个应用程序,并使用Electron-Builder创建了一个Squirrel windows安装程序和更新程序.这一切都很好,但我在调试我的应用程序的生产版本时遇到问题.

console.log使用生产版本时,是否在磁盘上的某处写入了日志?如果是这样,我在哪里可以找到它们?或者在编译可执行文件时是否全部删除了?我的应用必须有某种日志文件吗?

我发现了SquirrelSetupLog,C:\Users\Tieme\AppData\Local\MyApp\SquirrelSetupLog但这还不足以调试我的生产问题.


刚遇到电子日志.如果常规控制台日志确实没有写入磁盘某处,那可能会有效.

logging electron squirrel.windows electron-builder

13
推荐指数
1
解决办法
1万
查看次数

电子生成器,如何设置节点环境变量

windows系统中的node.js可以在服务器启动前设置环境,如下:

set NODE_ENV=production 
Run Code Online (Sandbox Code Playgroud)

NODE_ENV参数可以使用 innode.jselectronby process.env.NODE_ENV

但是当我通过 构建电子时electron-builder,就像这样:

electron-builder build --windows
Run Code Online (Sandbox Code Playgroud)

如何设置环境变量?


更新:

可能无法将固定的环境变量传递给可执行文件electron-builder

可能只能手动加载一个环境文件,打包时修改,或者把参数预置到dev状态。当没有状态时,它是production

node.js electron electron-builder

13
推荐指数
2
解决办法
1万
查看次数