私は、ややクロスプラットフォームなプロセスをどのように実行するのかアドバイスを探していました。外部プロセスを実行するために、プラットフォーム間で離れた方法はありますか?
私は自分のアプリケーションのJavaとRubyの実装を書いていますが、言語特有の問題は少なく、プラットフォーム固有の問題があります。
EGのUbuntuの/ usr/binに/それは私が実行している現在のディレクトリを検索します。しかし、現在のディレクトリAに実行可能なウィンドウをコピーする場合私は何もWindows用
# Ruby
`HandBrakeCLI #{args}` # works on Ubuntu and likely other linux distros since HandBrakeCLI is in /usr/bin/
検索され
HandBrakeCLIのデフォルトのインストールパスは、 "Program Files(x86)/ HandBrake"(x86は明らかに64ビットのみです)にありますが、Program Filesは含まれていません私が知る限りの探索経路。
MacOSXの場合、 "open"コマンド以外のコマンドラインからMac "Application Folders"を実行する方法がわかりません。しかし、私が実際にやっているのはHandBrakeCLIなので、これは問題ではありません。これは通常の実行可能ファイルです。しかし、HandBrakeCLIは/ usr/binや/ usr/local/bin(またはそのバリエーション)にインストールされていません。
私のベストアイデアは、HandBrakeCLIへのパスを持つ設定ファイルを作ることです。しかし、私がそのルートに行くなら、私がどのプラットフォームを使用しているのかを検出できるのが理想的ですが、それはすべて別の問題です。 1つはC#ifdefセクションで行い、RubyやJavaでは行っていません。
私はすべての入力を感謝します。あなたはRubyで
System.getProperty("os.name")
を使用してJavaの現在のOSを取得することができます
をパス? – marcog
バイナリは誰かが手動でそこに置かない限り、linux上のパスにしか存在しません。私はパス内にあるかどうかを確認する方法はわかりません。私は$をチェックするかもしれない! Rubyでそれを再正規化しますが、それはあなたがどのプラットフォームにいるかに依存します。 – EnabrenTane