/Applications
バイナリを選択してフォーク/実行するランチャーアプリケーションがバンドルに含まれています。私が欲しいのは、彼らがドックタイルを共有することです。私はいくつかのアプローチを試しましたが、どれも満足のいくものではありません。
1.バイナリをアプリにバンドルしておく
バイナリがアプリバンドルに含まれている場合、これは機能しているようです。ただし、バンドルがそれ自体を変更することは一般的に悪い習慣と見なされており、ユーザーがへの書き込みアクセス権を持っていることを保証することはできません/Applications
。たとえばにシンボリックリンクを配置しようとしました~/Library/Application Support/MyBinaries/mybinary
が、これにより別のドックタイルが作成されます。
2.バイナリをアプリバンドルの外部に保持します
バイナリがアプリバンドルの外にある場合は、別のドックタイルを取得します。プロセスの1つをエージェントに設定して、タイルの1つが表示されないのはなぜですか?ユーザーは、実行するバイナリに関するランチャーのロジックをスキップできないようにする必要があるため、これはランチャーである必要があります。残念ながら、これはquitが正しく機能せず、ドックをクリックしてバイナリのウィンドウを復元できないことを意味します。アプリケーション間でメッセージを適切に渡すことにより、これを機能させることができる場合があります。
3.非常にハッキーなソリューション
これを行うには、間接化のレベルを追加するというかなりハッキーな方法があります。この場合、アプリはで/Applications/MyLauncher.app
別のアプリを起動します。このアプリに~/Library/Application Support/Launcher2.app
は、バンドル内のバイナリが含まれています。2番目のランチャーのみにドックアイコンがあります。
これはかなりハッキーなように見えるので、誰かがより良い解決策を持っているかどうかを確認するために、これをSOに公開すると思いましたか?
編集
オプション2では、バイナリを独自のバンドルにまとめていました。これをしないでください。それらを通常のフォルダーに保管すると、すべてが正しく機能しました。