我无法使用以下命令构建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):
-
降级电子包:
npm安装electron@3.1.6- -save-dev
全球(如果需要)
npm install -g electron@3.1.6
执行电子包装器命令 - 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。