2016-08-07 3 views

答えて

0

助けることができ、これを試してみてください:システムレベルでインストールされると予想

  1. NPMベースのパッケージ
  2. 非NPMパッケージ、システム・レベルのライブラリのように(あなたのケースのffmpegで)
  3. NPMベースのパッケージの場合

、いつものパターンは、アプリケーションの起動の流れの間にこれをチェックし、それが利用できない場合、ユーザーに通知することで、非NPMパッケージの場合

{ 
    .... 
    "peerDependencies": { 
    "chai": "1.x" 
    } 
    .... 

} 

:次のようなピア依存性を行うことができます。

は、ffmpegの固有答える助けるべき次

/** 
    * Check for ffmpeg availability 
    * 
    * If the FFMPEG_PATH environment variable is set, try to use it. 
    * If it is unset or incorrect, try to find ffmpeg in the PATH instead. 
    * 
    * @method FfmpegCommand#_getFfmpegPath 
    * @param {Function} callback callback with signature (err, path) 
    * @private 
    */ 
    proto._getFfmpegPath = function(callback) { 
    if ('ffmpegPath' in cache) { 
     return callback(null, cache.ffmpegPath); 
    } 

async.waterfall([ 
    // Try FFMPEG_PATH 
    function(cb) { 
    if (process.env.FFMPEG_PATH) { 
     fs.exists(process.env.FFMPEG_PATH, function(exists) { 
     if (exists) { 
      cb(null, process.env.FFMPEG_PATH); 
     } else { 
      cb(null, ''); 
     } 
     }); 
    } else { 
     cb(null, ''); 
    } 
    }, 

    // Search in the PATH 
    function(ffmpeg, cb) { 
    if (ffmpeg.length) { 
     return cb(null, ffmpeg); 
    } 

    utils.which('ffmpeg', function(err, ffmpeg) { 
     cb(err, ffmpeg); 
    }); 
    } 
], function(err, ffmpeg) { 
    if (err) { 
    callback(err); 
    } else { 
    callback(null, cache.ffmpegPath = (ffmpeg || '')); 
    } 
    }); 
    }; 

上記のコードはtaken from hereです。 node-fluent-ffmpegはffmpegの上で動作する素敵なプロジェクトです。私はあなたのプロジェクトの参考になると信じています。

+0

クールですが、私が見てきたように、ffmpegがインストールされていないことをユーザーに通知するだけで、インストールされていなければインストールする方法はありますか? –

+0

アプリケーションロジックをオーバーエンジニアリングすることで可能かもしれません。しかし、本当にそれをしたいですか?これらの依存関係をインストールするのはアプリケーションの責任ですか?通常、システムレベルの依存関係は、ユーザーに通知されます.ffmpegダウンロードページへのリンクを提供することができます。しかし、私はあなたのアプリケーションの範囲を知らないかもしれません。 –

0

あなたのアプリとの依存関係のために異なるインストーラをパッケージ化してから、依存関係インストーラを順番に起動するカスタムインストーラを作成するか、単に依存関係をインストールしてダウンロードページ。

インストーラの作成には多くのリソースがありますが、ご使用のプラットフォームに合わせてelectron installerのGoogle検索を試してみてください。

0

申し訳ありません私はパーティーに遅れていますが、これがまだ関連している場合に備えて、私はこの目的のために特にffbinariesモジュールを作成しました。

npmで確認することができます。アプリの起動中にユーザーのマシンにバイナリをダウンロードするだけで、プラットフォームが自動的に検出されます(一部のCIに含める予定がある場合でも上書きできます)ソート)。

関連する問題