2017-12-16 12 views
1

electron-webpackボイラープレートから電子アプリケーションを構築しています。電子アプリケーションでffmpegをバンドルする方法

このノードモジュール@ffmpeg-installer/ffmpegは互換性のあるプリコンパイルされたバイナリを/node_modulesディレクトリにインストールし、その実行可能ファイルのパスを介してアクセスできるようにしました。

const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path 

これは、開発中に正常に動作しますが、私は配布を構築し、それを実行すると、そのパスに子プロセスを生成しようとしたとき、私はエラーを取得します。おそらく、パスはバイナリを指していないからです。

配布可能ファイルを実行しているときのパスは、次のように設定されています。 AppName.appパッケージの内容で見たときに

/Users/me/project/dist/mac/AppName.app/Contents/Resources/app.asar/node_modules/@ffmpeg-installer/darwin-x64/ffmpeg 

はしかし、私は次のパスにバイナリを見つけます。

/Users/me/project/dist/mac/AppName.app/Contents/Resources/app.asar.unpacked/node_modules/@ffmpeg-installer/darwin-x64/ffmpeg 

どのように私はelectron-webpackelectron-builderを用いた電子アプリケーションにバイナリの依存関係を含める必要がありますか?

答えて

2

電子がasarアーカイブ(zip/tar/jarのようなもの)でアプリケーションをバンドルする可能性が高いです。したがって、実行可能ファイルへのパスを解決することはできません。 asar: falseelectron-builderelectron-builder.json)に渡してみてください。

+0

これは機能しますが、ASARが機能しなかった理由を知りたいと思います。それはデフォルトの 'asarUnpack'オプションのためですか? –

+0

'as asarアーカイブを使用したパッケージングは​​無効です。これは強くお勧めしません。 asarを有効にして、asarUnpackを使用して、外部から利用できるファイルを解凍してください。 ' –

+0

@JoshuaBarnettこれは私がこれに遭遇してからしばらくお待ちです - asarUnpack'/'smartUnpack'オプションが新しくなったようです。あなたがそれを動作させることができるなら、これはより良い選択肢のように思えます - 私は自分自身を 'asar:false'を使うことには消極的でした。 –

関連する問題