nautilus无法识别的电子可执行文件



我无法使用以下命令构建Electron App的可执行文件:

electron-packager . electron-tutorial-app --overwrite --asar=true --platform=linux --arch=x64 --prune=true --out=release-builds

构建文件是共享库文件(application/x-sharedlib),在Ubuntu 18上没有执行。相反,在nautilus中打开文件时,我会收到以下错误消息:

无法显示" electron-tutorial-app"

没有为"共享库"文件安装应用程序。你 想要搜索打开此文件的应用程序吗?

[否] [是]

有什么办法可以做到这一点?

tl; dr:实际上是新格式的可执行文件。他们没有错。Nautilus/File经理错误地不会将它们识别为可执行文件。有解决方案,例如创建一个 *.desktop文件以启动应用程序。

分析

这种现象是作为电子构建Linux二进制方法变化的副作用而发生的。提交9294FACF将二进制格式从小精灵更改为派。更改很小,仅影响一个文件(build.gn)。从版本4.0.0开始。

文件经理利用file命令来决定如何使用文件(例如,打开图像查看器,文本编辑器或执行文件)。file无法区分共享库和PIE可执行文件,因此误导了PIE文件(请参阅相应的错误报告)。

解决方案

从终端运行

由于该问题仅适用于图形文件管理器,因此您可以简单地从终端或脚本运行可执行文件。这对于非技术最终用户而不是OP想要的涉及。

等待上游修复

等待 file识别pie是可执行文件。反过来,这可能会导致诸如Nautilus之类的文件经理正确启动派。目前尚不清楚这是否会发生。如果发生的话,它可能只包含在将来的发行版中。

使用桌面文件

创建一个桌面文件以启动该应用程序。无论如何,这是启动桌面应用程序的常见方式。

创建一个名为myapp.desktop的文件,带有以下内容。

[Desktop Entry]
Name=My Application
Exec=/path/to/binary
Terminal=false
Type=Application
StartupNotify=true
Encoding=UTF-8

然后,通过发出chmod +x myapp.desktop标记可执行的桌面文件。双击文件应按预期启动应用程序。


更多信息

电子填充项目中的相应讨论:https://github.com/electron-userland/electron-packager/issues/901。(要点:这个问题不是由电子包装器引起的,在上游查找)

电子项目中的相应问题是https://github.com/electron/electron/issues/15406。(要点:他们想在linux上启用派。不是我们的错误,在上游查找)

for linux(ubuntu):

  1. 降级电子包:

    npm安装electron@3.1.6- -save-dev

全球(如果需要)

npm install -g electron@3.1.6
  1. 执行电子包装器命令 - for Linux:

    电子包装器。electon-tutorial-app -overwrite -Asar -platform = linux = linux = all-prune = true-out-out-out = repartion-builds

这将导致4个Linux文件夹(Arch = all)。根据您的操作系统选择可执行的工作。

这是一个问题,当electron-packager用于包装带有电子版本4.0.x的Linux应用程序,而以前的电子版本没有问题,例如3.1.x。

由于某种原因,在电子4.0.x中,生产的应用程序文件是共享库而不是可执行文件

从终端窗口中,在应用程序文件路径上运行file命令给出:

精灵64位LSB共享对象,X86-64,版本1(SYSV),动态 链接,解释器/lib64/ld-linux-x86-64.so.2,用于GNU/Linux 3.2.0, buildid [sha1] = B9E8BA37118DAD1BF605AFFEF41026F813215BC6,剥离

曾经是:

精灵64位LSB可执行文件,X86-64,版本1(SYSV),动态 链接,解释器/lib64/ld-linux-x86-64.so.2,用于GNU/Linux 2.6.32, 剥离

幸运的是,尽管很麻烦,但可以通过从终端窗口启动应用程序来运行该应用程序,例如,将应用程序文件图标拖到终端提示符上,然后输入Enter。

最新更新