ややクロスプラットフォームのプロセスを実行する方法についてのアドバイスを探していました。
私は自分のアプリのJavaとRubyの実装を作成しましたが、言語固有の問題ではなく、プラットフォーム固有の問題です。
Ubuntu / usr / bin /のEGは、私が行うことをすべて検索します
# Ruby
`HandBrakeCLI #{args}` # works on Ubuntu and likely other linux distros since HandBrakeCLI is in /usr/bin/
Windowsの場合、実行中の現在のディレクトリを検索します。ただし、Windowsの実行可能ファイルを現在のディレクトリにコピーすると、ランタイムリンクエラーが発生してクラッシュします(DLLが存在しません)。
HandBrakeCLIのデフォルトのインストールパスは「ProgramFiles(x86)/ HandBrake」(64ビットでのみx86)ですが、私が知る限り、ProgramFilesは検索パスに含まれていません。
MacOSXの場合、「open」コマンドを使用する以外に、コマンドラインからMacの「ApplicationFolders」を実行する方法がわかりません。しかし、私が本当に求めているのは、通常の実行可能ファイルであるHandBrakeCLIであるため、これはそれほど問題ではありません。ただし、HandBrakeCLIは/ usr/binまたは/usr/ local / bin(またはそのバリエーション)にはインストールされません。
私の最善のアイデアは、HandBrakeCLIへのパスを持つ構成ファイルを作成することです。私がそのルートに行く場合、私がどのプラットフォームを使用しているかを検出できることが理想的ですが、それはすべて一緒に別の問題です。1つは、C #ifdefセクションでのみ実行し、RubyやJavaでは実行していません。
ありとあらゆるご意見をいただければ幸いです。