在Mac上的电子应用程序中使用exiftool-vendored不会返回?

时间:2019-05-21 16:29:59

标签: electron electron-builder exiftool

在Mac上,当我从WebStorm运行我的应用程序时,exiftool出售的软件效果很好。但是,当我构建我的应用程序(我使用electron-builder)并将其安装在同一台Mac上时,它永远不会返回,甚至只是尝试获取版本:

exiftool.version().then(version => writeBreadcrumb('exif', version))

换句话说,运行我的应用程序的已安装版本时,不会出现错误,并且then永远不会执行,尽管从WebStorm(使用cd build && electron .)运行我的应用程序可以正常工作 >

我在做什么错?在电子应用程序中如何使用exiftool厂商提供的任何示例?

2 个答案:

答案 0 :(得分:1)

您应该看一下文档中关于使它与Electron一起使用的说法:

  

您如何利用电子使它起作用?

     

众所周知,Electron易碎且有越野车,并且此包装未正式为其提供支持。尽管PhotoStructure在电子产品中使用了此软件包,但该项目有大量的辅助支持代码,以使它顺利运行。

     

如果您仍想尝试,请记住以下几点:

     
      
  1. 请注意,此软件包将产生exiftool外部进程,这意味着exiftool-vendored.pl和exiftool-vendored.exe软件包应包含在asarUnpack中。 SmartUnpack可能有效,但是如果不使用类似node_modules/{exiftool-vendored.*}/**/*的模式。

  2.   
  3. 如果您需要在Web视图中使用exiftool供应商,那将是一段糟糕的时光。由于电子内部缺乏节点兼容性,许多事情无法正常工作。

  4.   
  5. __dirname在运行时从webpack打包后的asar软件包中无效,因此请不要依赖它。

  6.   
     

https://github.com/photostructure/exiftool-vendored.js/wiki/FAQ#how-do-you-make-this-work-with-electron

答案 1 :(得分:0)

由于我从未找到过使exiftool-vendored与Mac上的电子配合使用的方法,因此我接受了以上答案,从本质上说是为了避免Mac上的电子脱离exiftool-vendored

为完整起见,包含了此答案,适用于在Mac和Windows的电子应用中需要exiftool的我们中的人:

我使用node-exiftool并在package.json中为电子生成器添加了以下设置:

"build": {
  ...
  "win": {
    ...
    "extraResources": "exiftoolwin/**/*"
  },
  "mac": {
    ...
    "extraResources": "exiftool/**/*"
  }
}

在项目的根目录中,添加了文件夹exiftoolwinexiftool。在exiftoolwin中,我将按照Windows Stand-Alone可执行指令here获得的exiftool.exe放置在exiftool文件夹中,并将exiftool和{ {1}}是我通过提取Mac上的完整perl发行版获得的,如同一页所述。

然后,在我的.jsx中(我正在使用React):

lib

然后我按照here的描述使用import exiftool from 'node-exiftool'; const exiftoolFolderAndFile = process.platform === 'win32' ? 'exiftoolwin/exiftool.exe' : 'exiftool/exiftool'; const exiftoolPath = path.resolve(__dirname, '../..', exiftoolFolderAndFile); const ep = new exiftool.ExiftoolProcess(exiftoolPath);