1

/Applicationsバイナリを選択してフォーク/実行するランチャーアプリケーションがバンドルに含まれています。私が欲しいのは、彼らがドックタイルを共有することです。私はいくつかのアプローチを試しましたが、どれも満足のいくものではありません。

1.バイナリをアプリにバンドルしておく

バイナリがアプリバンドルに含まれている場合、これは機能しているようです。ただし、バンドルがそれ自体を変更することは一般的に悪い習慣と見なされており、ユーザーがへの書き込みアクセス権を持っていることを保証することはできません/Applications。たとえばにシンボリックリンクを配置しようとしました~/Library/Application Support/MyBinaries/mybinaryが、これにより別のドックタイルが作成されます。

2.バイナリをアプリバンドルの外部に保持します

バイナリがアプリバンドルの外にある場合は、別のドックタイルを取得します。プロセスの1つをエージェントに設定して、タイルの1つが表示されないのはなぜですか?ユーザーは、実行するバイナリに関するランチャーのロジックをスキップできないようにする必要があるため、これはランチャーである必要があります。残念ながら、これはquitが正しく機能せず、ドックをクリックしてバイナリのウィンドウを復元できないことを意味します。アプリケーション間でメッセージを適切に渡すことにより、これを機能させることができる場合があります。

3.非常にハッキーなソリューション

これを行うには、間接化のレベルを追加するというかなりハッキーな方法があります。この場合、アプリはで/Applications/MyLauncher.app別のアプリを起動します。このアプリに~/Library/Application Support/Launcher2.appは、バンドル内のバイナリが含まれています。2番目のランチャーのみにドックアイコンがあります。

これはかなりハッキーなように見えるので、誰かがより良い解決策を持っているかどうかを確認するために、これをSOに公開すると思いましたか?

編集

オプション2では、バイナリを独自のバンドルにまとめていました。これをしないでください。それらを通常のフォルダーに保管すると、すべてが正しく機能しました。

4

1 に答える 1

0

私自身の質問に答えます。

このような状況に陥った場合は、オプション2を選択してください。アプリケーションをに/Applications/MyApplication.app配置し、バイナリを次のような名前のフォルダに保存して~/Library/Application Support/MyApplication/Binaries/、喜んでフォーク/実行します。これが私の混乱の原因だったので、絶対にそれらをアプリバンドルに入れないでください。これで私の基準はすべて解決しました。

  • バイナリを変更するためにrootアクセスは必要ありません
  • ランチャーとバイナリは1つのドックタイルを共有します
  • ドックタイルで[終了]を押すと、バイナリが終了します。
  • アプリはLaunchpadに表示されます
  • Dock経由での起動は、ランチャーアプリを経由します
于 2012-09-03T17:25:44.547 に答える