2011-09-14 2 views
0

別のアプリケーションがインストールされている場合は、インストーラでその依存関係のパスを自動的に探してください。 Windowsではレジストリを使うことができますが、Mac/Linuxはどうですか?この特殊なケースでは、それが違いを生むなら、それはC++アプリケーションです。Mac/Linuxでインストールされたアプリケーションを探す

+1

パッケージマネージャを使用します。 Linuxでは、 'deb'または' rpm'パッケージをビルドします。標準のビルドユーティリティを使うと、配布管理者が配布に合ったパッケージを簡単にコンパイルできるようにすることができます。 –

+0

"installer" on linux? – PlasmaHH

+0

@PlasmaHH確実です。少なくとも私はそう考えています - どのようにLinuxユーザーが自分のPC上でFlashを取得するのですか? –

答えて

0

一般的に、UNIXシステムでは、すべてのプログラムが、愚かな名前の部分的にローカライズされたディレクトリのホッジポッジ集で配布される代わりに、$ PATHに存在すると期待できます。つまり、本質的に依存関係のパスを見つける必要はありません。execvpを介して他の "app"(プログラム)を呼び出すだけで、libcは$ PATHのエントリをウォークして実行可能ファイルを見つけ出します。

古典的なUNIXモデルでは、インストーラで何もチェックしませんが、実行可能ファイルが利用可能かどうか(たとえばなど)をチェックするだけです。

1

Linux(apt、yum)の一般的なパッケージマネージャを使用してアプリケーションを配布しようとすると、アプリケーションを依存関係として追加できます。 カスタムインストールスクリプトのルートをダウンさせる場合、何らかのハッカーに頼る必要があります。システム上でどのパッケージマネージャが使用されているかを調べて、それを使ってクエリを試みるか(他のアプリケーションがパッケージマネージャなしでインストールされた場合は失敗する可能性があります)、which required_appのようなものを試してみてください。

あなたが正しいことをしたい場合は、最初に行ってください。

1

標準の.appバンドルにバンドルされているアプリケーションを探している場合は、コマンドラインユーティリティmdfind(1)を使用してSpotlightを使ってバンドルIDから見つけることができます。たとえば、Firefoxがインストールされているかどうかを確認するには、次のコマンドを実行します。

mdfind 'kMDItemCFBundleIdentifier == org.mozilla.firefox' 
関連する問題